Обзор инкрементного обучения

Что такое инкрементальное обучение?

Incremental learning, или online learning, является ветвью машинного обучения, которая включает в себя обработку входящих данных из потока данных - постоянно и в реальном времени - возможно, практически не учитывая знаний о распределении переменных предиктора, размере выборки, аспектах предсказания или целевой функции (включая адекватные значения параметров настройки), и имеют ли наблюдения метки.

Алгоритмы обучения являются гибкими, эффективными и адаптивными. Следующие характеристики отличают инкрементальное обучение от традиционного машинного обучения:

  • Инкрементальная модель подходит к данным быстро и эффективно, что означает, что она может адаптироваться, в реальном времени, к изменениям (или drifts) в распределении данных.

  • Поскольку метки наблюдений могут отсутствовать, когда доступны соответствующие данные предиктора, алгоритм должен быть в состоянии быстро сгенерировать предсказания из последней версии модели и отложить обучение модели.

  • До начала инкрементного обучения о населении может быть известно мало информации. Поэтому алгоритм может запускаться с cold start. Для примера, для задач классификации имена классов могут быть известны только после того, как модель обрабатывает наблюдения. Когда достаточно информации известно до начала обучения (для примера у вас есть хорошие оценки коэффициентов линейной модели), можно задать такую информацию, чтобы предоставить модели warm start.

  • Поскольку наблюдения могут прибыть в поток, размер выборки, вероятно, неизвестен и, возможно, велик, что делает хранение данных неэффективным или невозможным. Поэтому алгоритм должен обрабатывать наблюдения, когда они доступны и прежде чем система отбрасывает их. Эта характеристика инкрементного обучения делает настройку гиперпараметра трудной или невозможной.

В традиционном машинном обучении доступен пакет маркированных данных для выполнения перекрестной валидации, чтобы оценить ошибку обобщения и настроить гиперпараметры, вывести распределение переменных предиктора и соответствовать модели. Однако получившаяся модель должна быть переобучена с самого начала, если базовые распределения дрейфуют или модель ухудшается. Хотя выполнение перекрестной валидации для настройки гиперпараметров трудно в инкрементальном окружении обучения, методы инкрементного обучения гибки, потому что они могут адаптироваться к дрейфу распределения в реальном времени с прогнозирующей точностью, приближающейся к точности традиционно обученной модели, когда модель обучает больше данных.

Предположим, что инкрементальная модель готова для генерации предсказаний и измерения ее прогнозирующей эффективности. Учитывая входящие фрагменты наблюдений, схема инкрементного обучения обрабатывает данные в реальном времени и любыми из следующих способов, но обычно в заданном порядке:

  1. Модель оценки: Отслеживайте прогнозирующую эффективность модели, когда доступны истинные метки, только для входящих данных, в скользящем окне наблюдений или по всей истории модели, используемой для инкрементного обучения.

  2. Обнаружение дрейфа: Проверяйте на структурные пропуски или дрейф распределения. Например, определите, достаточно ли изменилось распределение любой переменной.

  3. Обучите модель: Обновляйте модель путем настройки ее на входящих наблюдениях, когда истинные метки доступны или когда текущая модель достаточно деградировала.

  4. Сгенерировать предсказания: Предсказать метки из последней модели.

Эта процедура является частным случаем инкрементного обучения, в котором все входящие фрагменты рассматриваются как наборы тестов (holdout). Процедура вызывается interleaved test-then-train или prequential evaluation [1].

Если для инкрементальной модели существует недостаточно информации для генерации предсказаний, или вы не хотите отслеживать прогнозирующую эффективность модели, потому что она недостаточно обучена, можно включить необязательный начальный шаг, чтобы найти адекватные значения для гиперпараметров, для моделей, которые поддерживают одну (estimation period) или начальный период обучения перед оценкой модели (metrics warm-up period).

В качестве примера задачи инкрементного обучения рассмотрим интеллектуальный термостат, который автоматически устанавливает температуру с учетом температуры окружающей среды, относительной влажности, времени суток и других измерений и может узнать настройки пользователя в температуре в помещении. Предположим, что производитель подготовил устройство путем встраивания известной модели, которая описывает настройки среднего человека, учитывая измерения. После установки устройство собирает данные каждую минуту, и настраивает температуру на свои предустановки. Термостат настраивает встроенную модель или переобучает себя, основываясь на действиях или бездействии пользователя с устройством. Этот цикл может продолжаться до бесконечности. Если у термостата ограниченное пространство на диске для хранения исторических данных, ему необходимо переобучиться в режиме реального времени. Если производитель не готовил устройство с известной моделью, устройство переобучается чаще.

Инкрементальное обучение с MATLAB

Функциональности 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 предлагают два рабочих процессов, которые хорошо подходят для предквенциального обучения. Для простоты в следующих описаниях рабочего процесса предполагается, что модель готова к оценке производительности модели (другими словами, модель теплая).

  • Гибкий рабочий процесс - Когда фрагмент данных доступен:

    1. Вычислите совокупные и оконные метрики производительности модели путем передачи данных и текущей модели в updateMetrics функция. Данные рассматриваются как данные теста (holdout), потому что модель еще не была обучена на нем. updateMetrics перезаписывает производительность модели, сохраненную в модели, новыми значениями. Для линейных моделей см. updateMetrics и, для наивных моделей классификации Байеса, см. updateMetrics.

    2. Опционально обнаружьте дрейф распределения или ухудшилась ли модель.

    3. Обучите модель, передав входящий фрагмент данных и текущую модель в fit функция. fit функция использует заданный решатель, чтобы подогнать модель к входящему фрагменту данных, и перезаписывает текущие коэффициенты и смещение новыми оценками. Для линейных моделей см. fit и, для наивных моделей классификации Байеса, см. fit.

    Гибкий рабочий процесс позволяет вам выполнить пользовательскую модель и оценки качества данных, прежде чем принимать решение о том, обучать ли модель. Все шаги являются необязательными, но вызываются updateMetrics прежде fit когда вы планируете вызвать обе функции.

  • Краткий рабочий процесс - Когда фрагмент данных доступен, поставьте входящий фрагмент и сконфигурированную инкрементальную модель в updateMetricsAndFit функция. updateMetricsAndFit вызовы updateMetrics сразу же после чего fit. Краткий рабочий процесс позволяет вам легко реализовать инкрементальное обучение с предварительной оценкой, когда вы планируете отслеживать производительность модели и обучать модель на всех входящих фрагментах данных. Для линейных моделей см. updateMetricsAndFit и, для наивных моделей классификации Байеса, см. updateMetricsAndFit.

Когда вы создаете объект инкрементальной модели и выберете рабочий процесс для использования, запишите цикл, который реализует инкрементальное обучение:

  1. Считывайте фрагмент наблюдений из потока данных, когда фрагмент доступен.

  2. Реализуйте гибкий или краткий рабочий процесс. Чтобы правильно выполнить инкрементальное обучение, перезаписайте модель входа на модель выхода. Для примера:

    % 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.

    Моделируйте строения определяйте, обучают ли функции инкрементного обучения или оценивают производительность модели во время каждой итерации. Строения могут меняться, когда функции обрабатывают данные. Для получения дополнительной информации см. Раздел «Периоды инкрементного обучения».

  3. Опционально:

    • Сгенерируйте предсказания, передав фрагмент и последнюю модель в predict. Для линейных моделей см. predict и, для наивных моделей классификации Байеса, см. predict.

    • Если модель подходила к данным, вычислите потери реституции, передав фрагмент и последнюю модель loss.

    • Для наивных моделей классификации Байеса, logp функция позволяет вам обнаружить выбросы в реальном времени. Функция возвращает логарифмическую безусловную плотность вероятностей переменных предиктора при каждом наблюдении в фрагменте.

Инкрементные периоды обучения

Учитывая входящие фрагменты данных, действия, выполняемые инкрементальными функциями обучения, зависят от текущего строения или состояния модели. Этот рисунок показывает периоды (последовательные группы наблюдений), в течение которых функции инкрементного обучения выполняют определенные действия.

Number line showing the periods during which incremental learning functions perform certain actions

Эта таблица описывает действия, выполняемые функциями инкрементного обучения в течение каждого периода.

ПериодСвязанные свойства моделиРазмер (количество наблюдений)Действия
ОценкаEstimationPeriod, применяется только к линейным классификационным и регрессионым моделям

<reservedrangesplaceholder0> 1

При необходимости функции аппроксимации выбирают значения для гиперпараметров на основе наблюдений за периодом оценки. Действия включают следующее:

  • Оцените моменты предиктора Mu и Sigma для стандартизации данных.

  • Настройте скорость обучения LearnRate для решателей SGD в соответствии с расписанием скорости обучения LearnRateSchedule.

  • Оцените параметр регрессии SVM ε Epsilon.

  • Сохраните информационные буферы, необходимые для оценки.

  • Обновите соответствующие свойства в конце периода.

Метрики ПрогревMetricsWarmupPeriod

<reservedrangesplaceholder1> 2 – <reservedrangesplaceholder0> 1

Когда свойство IsWarm является false, функции аппроксимации выполняют следующие действия:

  • Подбор модели к входящему фрагменту данных.

  • Обновите соответствующие свойства модели, такие как Beta или DistributionParameters, после подбора кривой модели.

  • В конце периода модель теплая (IsWarm свойство становится true).

Оценка эффективности jMetrics и MetricsWindowSizem
  • В начале периода оценки эффективности 1 функции начинают отслеживать совокупные Cumulative и оконные Window метрики. Window является вектором NaNs на протяжении всего этого периода.

  • Функции перезаписываются Cumulative метрики с обновленной кумулятивной метрикой при каждой итерации. В конце каждого периода оценки эффективности функции вычисляют и перезаписывают Window метрики, основанные на последних m наблюдениях.

  • Функции хранят информационные буферы, необходимые для вычисления производительности модели.

Ссылки

[1] Бифет, Альберт, Рикард Гавальда, Джеффри Холмс и Бернгард Пфахрингер. Machine Learning for Data Streams with Practical Example in MOA. Cambridge, MA: The MIT Press, 2007.

[2] Кемпка, Михал, Войцех Котловский и Манфред К. Вармут. Адаптивные онлайновые алгоритмы масштабирования-инвариантные для обучения линейным моделям. CoRR (февраль 2019). https://arxiv.org/abs/1902.07528.

См. также

Объекты

Похожие темы