Incremental learning, или online learning, является ветвью машинного обучения, которая включает в себя обработку входящих данных из потока данных - постоянно и в реальном времени - возможно, практически не учитывая знаний о распределении переменных предиктора, размере выборки, аспектах предсказания или целевой функции (включая адекватные значения параметров настройки), и имеют ли наблюдения метки.
Алгоритмы обучения являются гибкими, эффективными и адаптивными. Следующие характеристики отличают инкрементальное обучение от традиционного машинного обучения:
Инкрементальная модель подходит к данным быстро и эффективно, что означает, что она может адаптироваться, в реальном времени, к изменениям (или drifts) в распределении данных.
Поскольку метки наблюдений могут отсутствовать, когда доступны соответствующие данные предиктора, алгоритм должен быть в состоянии быстро сгенерировать предсказания из последней версии модели и отложить обучение модели.
До начала инкрементного обучения о населении может быть известно мало информации. Поэтому алгоритм может запускаться с cold start. Для примера, для задач классификации имена классов могут быть известны только после того, как модель обрабатывает наблюдения. Когда достаточно информации известно до начала обучения (для примера у вас есть хорошие оценки коэффициентов линейной модели), можно задать такую информацию, чтобы предоставить модели warm start.
Поскольку наблюдения могут прибыть в поток, размер выборки, вероятно, неизвестен и, возможно, велик, что делает хранение данных неэффективным или невозможным. Поэтому алгоритм должен обрабатывать наблюдения, когда они доступны и прежде чем система отбрасывает их. Эта характеристика инкрементного обучения делает настройку гиперпараметра трудной или невозможной.
В традиционном машинном обучении доступен пакет маркированных данных для выполнения перекрестной валидации, чтобы оценить ошибку обобщения и настроить гиперпараметры, вывести распределение переменных предиктора и соответствовать модели. Однако получившаяся модель должна быть переобучена с самого начала, если базовые распределения дрейфуют или модель ухудшается. Хотя выполнение перекрестной валидации для настройки гиперпараметров трудно в инкрементальном окружении обучения, методы инкрементного обучения гибки, потому что они могут адаптироваться к дрейфу распределения в реальном времени с прогнозирующей точностью, приближающейся к точности традиционно обученной модели, когда модель обучает больше данных.
Предположим, что инкрементальная модель готова для генерации предсказаний и измерения ее прогнозирующей эффективности. Учитывая входящие фрагменты наблюдений, схема инкрементного обучения обрабатывает данные в реальном времени и любыми из следующих способов, но обычно в заданном порядке:
Модель оценки: Отслеживайте прогнозирующую эффективность модели, когда доступны истинные метки, только для входящих данных, в скользящем окне наблюдений или по всей истории модели, используемой для инкрементного обучения.
Обнаружение дрейфа: Проверяйте на структурные пропуски или дрейф распределения. Например, определите, достаточно ли изменилось распределение любой переменной.
Обучите модель: Обновляйте модель путем настройки ее на входящих наблюдениях, когда истинные метки доступны или когда текущая модель достаточно деградировала.
Сгенерировать предсказания: Предсказать метки из последней модели.
Эта процедура является частным случаем инкрементного обучения, в котором все входящие фрагменты рассматриваются как наборы тестов (holdout). Процедура вызывается interleaved test-then-train или prequential evaluation [1].
Если для инкрементальной модели существует недостаточно информации для генерации предсказаний, или вы не хотите отслеживать прогнозирующую эффективность модели, потому что она недостаточно обучена, можно включить необязательный начальный шаг, чтобы найти адекватные значения для гиперпараметров, для моделей, которые поддерживают одну (estimation period) или начальный период обучения перед оценкой модели (metrics warm-up period).
В качестве примера задачи инкрементного обучения рассмотрим интеллектуальный термостат, который автоматически устанавливает температуру с учетом температуры окружающей среды, относительной влажности, времени суток и других измерений и может узнать настройки пользователя в температуре в помещении. Предположим, что производитель подготовил устройство путем встраивания известной модели, которая описывает настройки среднего человека, учитывая измерения. После установки устройство собирает данные каждую минуту, и настраивает температуру на свои предустановки. Термостат настраивает встроенную модель или переобучает себя, основываясь на действиях или бездействии пользователя с устройством. Этот цикл может продолжаться до бесконечности. Если у термостата ограниченное пространство на диске для хранения исторических данных, ему необходимо переобучиться в режиме реального времени. Если производитель не готовил устройство с известной моделью, устройство переобучается чаще.
Функциональности Statistics and Machine Learning Toolbox™ позволяют вам реализовать инкрементальное обучение для классификации или регрессии. Как и другие функциональности машинного обучения Statistics and Machine Learning Toolbox, точкой входа в инкрементальное обучение является объект инкрементного обучения, который вы передаете в функции с данными для реализации инкрементного обучения. В отличие от других функций машинного обучения, данные не требуются для создания объекта инкрементного обучения. Однако объект инкрементного обучения задает, как обработать входящие данные, например, когда подгонять модель, измерять показатели эффективности или выполнять оба действия, в дополнение к параметрической форме модели и параметрическим опциям конкретной задачи.
Эта таблица содержит доступные объекты модели точки входа для инкрементного обучения с их поддерживаемой целью машинного обучения, типом модели и любой информацией, необходимой после создания.
Объект модели | Цель | Тип модели | Необходимая информация |
---|---|---|---|
incrementalClassificationLinear | Двоичная классификация | Линейный SVM и логистическая регрессия | Ничего |
incrementalClassificationNaiveBayes | Классификация мутликласса | Наивный Байес с условными распределениями нормального предиктора | Максимальное количество классов, ожидаемых в данных во время инкрементного обучения или имен всех ожидаемых классов |
incrementalRegressionLinear | Регресс | Линейный | Ничего |
Свойства объекта модели инкрементного обучения задают:
Характеристики данных, такие как количество переменных предиктора NumPredictors
и их первый и второй моменты.
Характеристики модели, такие как, для линейных моделей, тип учащегося Learner
, линейные коэффициенты Beta
, и перехватывать Bias
Опции обучения, такие как, для линейных моделей, решатель цели Solver
и специфические для решателя гиперпараметры, такие как штраф за хребет Lambda
для стандартного и среднего стохастического градиентного спуска (SGD и ASGD)
Моделируйте характеристики и опции оценки производительности, такие как теплота модели IsWarm
, какие метрики эффективности необходимо отслеживать Metrics
, и последние значения показателей эффективности
В отличие от работы с другими объектами модели машинного обучения, можно создать любую модель, непосредственно вызывая объект и задавая значения свойств опций, используя аргументы имя-значение; вам не нужно подгонять модель к данным, чтобы создать ее. Эта функция удобна, когда перед ее обучением у вас мало информации о данных или модели. В зависимости от ваших спецификаций, программное обеспечение может применять оценки и периоды разогрева метрики, в течение которых инкрементальные функции подгонки выводят характеристики данных, а затем обучают модель для оценки эффективности. По умолчанию для линейных моделей программное обеспечение решает целевую функцию с помощью адаптивного решателя с инвариантным масштабом, который не требует настройки и нечувствителен к шкалам переменных предиктора [2].
Кроме того, можно преобразовать традиционно обученную модель в любую из моделей с помощью incrementalLearner
функция. Модели преобразования включают машины опорных векторов (SVM) для двоичной классификации и регрессии, наивную классификацию Байеса и линейные регрессионые модели. Для примера, incrementalLearner
преобразует обученную модель линейной классификации типа ClassificationLinear
в incrementalClassificationLinear
объект. По умолчанию программное обеспечение рассматривает преобразованные модели как подготовленные для всех аспектов инкрементного обучения (преобразованные модели являются теплыми). incrementalLearner
содержит характеристики данных (такие как имена классов), подобранные параметры и опции, доступные для инкрементного обучения из преобразуемой традиционно обученной модели. Для примера:
Для наивной классификации Байеса, incrementalLearner
несет все имена классов в данных, ожидаемых во время инкрементного обучения, и подгонянные моменты условных распределений предиктора (DistributionParameters
).
Для линейных моделей, если объективным решателем традиционно обученной модели является SGD, incrementalLearner
устанавливает решатель инкрементного обучения на SGD.
Объект модели инкрементного обучения задает все аспекты алгоритма инкрементного обучения, от обучения и подготовки оценки модели до обучения и оценки модели. Чтобы реализовать инкрементальное обучение, вы передаете сконфигурированную модель инкрементального обучения в инкрементальную функцию аппроксимации или функцию оценки модели. Функции инкрементного обучения Statistics and Machine Learning Toolbox предлагают два рабочих процессов, которые хорошо подходят для предквенциального обучения. Для простоты в следующих описаниях рабочего процесса предполагается, что модель готова к оценке производительности модели (другими словами, модель теплая).
Гибкий рабочий процесс - Когда фрагмент данных доступен:
Вычислите совокупные и оконные метрики производительности модели путем передачи данных и текущей модели в updateMetrics
функция. Данные рассматриваются как данные теста (holdout), потому что модель еще не была обучена на нем. updateMetrics
перезаписывает производительность модели, сохраненную в модели, новыми значениями. Для линейных моделей см. updateMetrics
и, для наивных моделей классификации Байеса, см. updateMetrics
.
Опционально обнаружьте дрейф распределения или ухудшилась ли модель.
Обучите модель, передав входящий фрагмент данных и текущую модель в fit
функция. fit
функция использует заданный решатель, чтобы подогнать модель к входящему фрагменту данных, и перезаписывает текущие коэффициенты и смещение новыми оценками. Для линейных моделей см. fit
и, для наивных моделей классификации Байеса, см. fit
.
Гибкий рабочий процесс позволяет вам выполнить пользовательскую модель и оценки качества данных, прежде чем принимать решение о том, обучать ли модель. Все шаги являются необязательными, но вызываются updateMetrics
прежде fit
когда вы планируете вызвать обе функции.
Краткий рабочий процесс - Когда фрагмент данных доступен, поставьте входящий фрагмент и сконфигурированную инкрементальную модель в updateMetricsAndFit
функция. updateMetricsAndFit
вызовы updateMetrics
сразу же после чего fit
. Краткий рабочий процесс позволяет вам легко реализовать инкрементальное обучение с предварительной оценкой, когда вы планируете отслеживать производительность модели и обучать модель на всех входящих фрагментах данных. Для линейных моделей см. updateMetricsAndFit
и, для наивных моделей классификации Байеса, см. updateMetricsAndFit
.
Когда вы создаете объект инкрементальной модели и выберете рабочий процесс для использования, запишите цикл, который реализует инкрементальное обучение:
Считывайте фрагмент наблюдений из потока данных, когда фрагмент доступен.
Реализуйте гибкий или краткий рабочий процесс. Чтобы правильно выполнить инкрементальное обучение, перезаписайте модель входа на модель выхода. Для примера:
% Flexible workflow Mdl = updateMetrics(Mdl,X,Y); % Insert optional code Mdl = fit(Mdl,X,Y); % Succinct workflow Mdl = updateMetricsAndFit(Mdl,X,Y);
loss
функция. loss
возвращает скалярные потери; он не настраивает модель. Для линейных моделей см. loss
и, для наивных моделей классификации Байеса, см. loss
.Моделируйте строения определяйте, обучают ли функции инкрементного обучения или оценивают производительность модели во время каждой итерации. Строения могут меняться, когда функции обрабатывают данные. Для получения дополнительной информации см. Раздел «Периоды инкрементного обучения».
Опционально:
Сгенерируйте предсказания, передав фрагмент и последнюю модель в predict
. Для линейных моделей см. predict
и, для наивных моделей классификации Байеса, см. predict
.
Если модель подходила к данным, вычислите потери реституции, передав фрагмент и последнюю модель loss
.
Для наивных моделей классификации Байеса, logp
функция позволяет вам обнаружить выбросы в реальном времени. Функция возвращает логарифмическую безусловную плотность вероятностей переменных предиктора при каждом наблюдении в фрагменте.
Учитывая входящие фрагменты данных, действия, выполняемые инкрементальными функциями обучения, зависят от текущего строения или состояния модели. Этот рисунок показывает периоды (последовательные группы наблюдений), в течение которых функции инкрементного обучения выполняют определенные действия.
Эта таблица описывает действия, выполняемые функциями инкрементного обучения в течение каждого периода.
Период | Связанные свойства модели | Размер (количество наблюдений) | Действия |
---|---|---|---|
Оценка | EstimationPeriod , применяется только к линейным классификационным и регрессионым моделям | <reservedrangesplaceholder0> 1 | При необходимости функции аппроксимации выбирают значения для гиперпараметров на основе наблюдений за периодом оценки. Действия включают следующее:
|
Метрики Прогрев | MetricsWarmupPeriod | <reservedrangesplaceholder1> 2 – <reservedrangesplaceholder0> 1 | Когда свойство
|
Оценка эффективности j | Metrics и MetricsWindowSize | m |
|