Online Learning
Онлайн-обучение обновляет модель по одному примеру или мини-пакету данных по мере их поступления, поэтому модель продолжает учиться и адаптируется к дрейфу концепций без переобучения.
Онлайн-обучение — это режим машинного обучения, при котором модель учится на последовательно поступающих данных, обновляясь после каждого примера или небольшой группы примеров, а не обучаясь один раз на фиксированном наборе данных. На каждом шаге модель делает предсказание, получает правильный ответ, вычисляет функцию потерь и корректирует параметры до поступления следующего примера. Такой подход подходит для потоковых данных — кликов, транзакций или показаний датчиков, — данных, слишком объёмных для хранения, и меняющихся со временем взаимосвязей. Пакетное, или офлайн-обучение, устроено наоборот: модель обучается на всех обучающих данных сразу и остаётся неизменной до повторного обучения.
Как работает онлайн-обучение#
Перцептрон Фрэнка Розенблатта 1958 года был онлайн-алгоритмом: он корректировал веса после каждого неправильно классифицированного примера. Стохастический градиентный спуск (SGD) применяет такое же обновление после каждого примера или пакета почти для любой дифференцируемой модели. Для потоков разработаны и другие алгоритмы: деревья Хёффдинга, представленные Педро Домингосом и Джеффом Халтеном в 2000 году, строят дерево решений на потоке, просматривая каждый пример только один раз, а библиотеки вроде River реализуют потоковые версии распространённых моделей. В scikit-learn инкрементальное обучение поддерживают оценки с методом partial_fit.
Онлайн-алгоритмы обычно оценивают преквентно — термин ввёл статистик Филип Дэвид: каждый новый пример сначала используют для проверки модели, а затем для её обучения, поэтому текущая оценка рассчитывается по данным, которые модель ещё не видела. В теории онлайн-алгоритмы оценивают по сожалениям — разнице между их суммарными потерями и потерями лучшей фиксированной модели, выбранной задним числом. В 2003 году Мартин Зинкевич показал, что онлайн-градиентный спуск увеличивает сожаление лишь пропорционально квадратному корню из числа шагов, поэтому средняя разница на шаг стремится к нулю.
В этом примере в логистическую регрессию, обучаемую с помощью SGD, последовательно подают 400 мини-пакетов. На полпути правило присвоения меток меняется, а копия модели, зафиксированная в этот момент, изображает модель, которая перестала обучаться:
import copy
import numpy as np
from sklearn.linear_model import SGDClassifier
rng = np.random.default_rng(0)
online = SGDClassifier(loss="log_loss", random_state=0)
scores = {"frozen": [], "online": []}
for step in range(400): # 400 mini-batches of 20 examples arrive one at a time
X = rng.normal(size=(20, 2))
w = [1.0, 1.0] if step < 200 else [1.0, -1.0] # the labeling rule changes at step 200
y = (X @ np.array(w) > 0).astype(int)
if step == 200:
frozen = copy.deepcopy(online) # a copy that stops learning when the rule changes
if step >= 200: # test on each new batch before learning from it
scores["frozen"].append(frozen.score(X, y))
scores["online"].append(online.score(X, y))
online.partial_fit(X, y, classes=[0, 1])
for name, acc in scores.items():
print(f"{name}: {np.mean(acc):.2f} accuracy after the change")После изменения зафиксированная модель показывает 0,47 — не лучше случайного угадывания, — а онлайн-модель в среднем набирает 0,98. На первом пакете с новым правилом онлайн-модель получает 0,35, на втором — 0,80, а ещё через несколько пакетов восстанавливается.
Дрейф концепта и забывание#
Главная причина использовать онлайн-обучение — дрейф концепта, то есть изменение связи между входными данными и метками, часто сопровождаемое дрейфом данных в самих входных данных. Дрейф может быть резким, как в примере, нарастать постепенно или повторяться в зависимости от времени года и суток. Детекторы вроде ADWIN, разработанного Альбертом Биффе и Рикардом Гавальдой, отслеживают поток ошибок и сигнализируют об изменении среднего значения, что может запускать более частые обновления или сброс модели.
За быструю адаптацию приходится платить. Высокий коэффициент обучения позволяет быстрее следовать за дрейфом, но модель также реагирует на шум; сеть, которая видит только недавние данные, перезаписывает прежние знания — это называют катастрофическим забыванием. Обычно проблему решают с помощью буферов воспроизведения, добавляя сохранённые старые примеры к каждому обновлению.
Онлайн-обучение на практике#
Онлайн-обучение распространено там, где метки поступают в течение нескольких секунд. Классический пример — прогнозирование кликов по рекламе: в 2013 году Google описала, как её модели кликабельности непрерывно обучаются на потоковых данных с помощью алгоритма FTRL-Proximal; рекомендательные системы и оценка риска мошенничества часто обновляются так же. Развёрнутые модели компьютерного зрения обычно обновляют пакетами, поскольку метки поступают с задержкой, а одно ошибочное обновление может ухудшить все последующие предсказания. Поэтому команды сочетают мониторинг моделей с периодической тонкой настройкой на недавних данных и данных воспроизведения, как в процессах обслуживания моделей.
Небольшие онлайн-обновления действительно выполняются внутри систем компьютерного зрения. В Ultralytics YOLO26 в режиме отслеживания включение повторной идентификации с помощью with_reid: True заставляет используемый по умолчанию трекер TrackTrack сохранять эмбеддинг внешнего вида для каждого трека и обновлять его после каждого сопоставленного обнаружения, используя скользящее среднее, при этом новому эмбеддингу присваивается вес, равный 5% от уверенности обнаружения, поэтому внешний вид каждого трека подстраивается под постепенные изменения позы и освещения, а сеть ReID остаётся неизменной.
Непрерывное обучение пересекается с онлайн-обучением, но сосредоточено на сохранении знаний о предыдущих задачах при поступлении новых, тогда как онлайн-обучение описывает частоту обновлений. Активное обучение выбирает примеры для разметки, а обучение с подкреплением тоже учится на потоке взаимодействий, но по вознаграждениям за собственные действия, а не по размеченным примерам.










