Data Drift
Дрейф данных — это отклонение входных данных в рабочей среде от обучающего распределения, которое снижает точность. Разбираем типы дрейфа, статистические тесты и повторное обучение.
Дрейф данных — это изменение статистического распределения входных данных, поступающих в развёрнутую модель, относительно данных, на которых она обучалась. Модели предполагают, что входные данные в рабочей среде взяты из того же распределения, что и обучающие данные, и когда это предположение нарушается, точность может снизиться без сообщения об ошибке и без изменений в коде модели или её весах. К распространённым причинам в системах компьютерного зрения относятся новые камеры или объективы, изменения освещения и времени года, изменение ракурса камеры, новая упаковка продукции и изменения на предыдущих этапах конвейера, например другие настройки сжатия изображений. Выявление дрейфа и реагирование на него — ключевая задача мониторинга моделей и операций машинного обучения (MLOps).
Типы сдвига распределения#
Классификатор моделирует вероятность метки при заданном входном значении; сдвиг может затрагивать входные данные, метки или связь между ними:
- Сдвиг ковариат: Распределение входных данных меняется, а правильная метка для каждого входного значения остаётся прежней. Детектор, обученный на дневных изображениях, сталкивается со сдвигом ковариат, когда начинает получать видео, снятое в сумерках: автомобиль всё ещё остаётся автомобилем. В узком смысле дрейф данных означает именно этот случай.
- Сдвиг меток: Также называется сдвигом априорных вероятностей; меняется частота классов. Если доля дефектов на производственной линии вырастает с 1% до 5%, вместе с ней растёт доля реальных дефектов среди сигналов тревоги детектора, поэтому его точность положительных предсказаний меняется, хотя модель и внешний вид каждого дефекта остаются прежними.
- Дрейф концепции: Связь между входными данными и метками меняется, поэтому одному и тому же входному значению теперь соответствует другая метка. Мошенники меняют схемы по мере адаптации, а ужесточение стандарта качества превращает детали, которые раньше принимались, в брак.
Дрейф может быть резким — например, при замене камеры, постепенным — например, когда на объективе накапливается грязь, или повторяющимся — например, из-за сезонной листвы и снега.
Обнаружение дрейфа данных#
При обнаружении дрейфа эталонную выборку, обычно валидационные данные или обучающую выборку, сравнивают с недавним окном производственных данных. При отсутствии меток команды проверяют, различаются ли распределения двух наборов входных данных: для непрерывных признаков можно использовать двухвыборочный критерий Колмогорова — Смирнова (KS), для категориальных — критерий хи-квадрат, а также индекс стабильности популяции (PSI), распространённый в кредитном скоринге. Сырые пиксели имеют слишком высокую размерность для прямого сравнения, поэтому при мониторинге изображений проверяют сводные статистики, например яркость и резкость, или эмбеддинги предобученной сети. В исследовании методов обнаружения сдвига наилучшие результаты показали двухвыборочные тесты на представлениях предобученных классификаторов. Второй источник сигналов — выходы самой модели: изменения частоты предсказанных классов, количества рамок на изображение или оценок уверенности часто проявляются до измерения точности.
import numpy as np
from scipy.stats import ks_2samp
rng = np.random.default_rng(0)
# Mean brightness (0-255) of 500 training images and two batches of 200 production images
reference = rng.normal(130, 25, 500)
same_light = rng.normal(130, 25, 200)
dusk = rng.normal(110, 25, 200)
# Two-sample Kolmogorov-Smirnov test: a small p-value means the distributions differ
for name, batch in (("same light", same_light), ("dusk", dusk)):
result = ks_2samp(reference, batch)
drifted = result.pvalue < 0.01
print(f"{name}: KS statistic {result.statistic:.3f}, p-value {result.pvalue:.2g}, drift {drifted}")Пакет, извлечённый из обучающего распределения, показывает статистику KS 0,046 при p-значении 0,91, а пакет, средняя яркость которого снизилась на 20 уровней, — 0,346 при p-значении 1.1e-15 и отмечается как отклонение. Статистика KS — это максимальный разрыв между двумя кумулятивными распределениями; при очень больших выборках даже безвредные сдвиги дают крошечные p-значения. Поэтому оповещения о дрейфе часто настраивают по самой статистике KS, которая измеряет масштаб сдвига, а не только по p-значению.
Реагирование на дрейф#
Только свежие метки покажут, снизилась ли точность из-за обнаруженного сдвига. Обычно берут выборку недавних данных из рабочей среды, размечают её, измеряют среднюю точность (mAP) или другие метрики задачи, а при снижении производительности переобучают модель или выполняют её дообучение на смеси новых и исходных данных, сохраняя в ней старые примеры, чтобы избежать катастрофического забывания. Аугментация данных, например изменение яркости, размытие и смена цветов, подготавливает модель к ожидаемым вариациям, а бесс учительская адаптация домена адаптирует модель к новому домену с помощью неразмеченных целевых данных. На платформе Ultralytics вкладка Monitoring выделенной конечной точки отображает среднюю уверенность предсказаний во времени, количество объектов каждого класса, размеры и расположение рамок для обрабатываемых изображений; недавние примеры можно сохранить в набор данных для проверки и повторного обучения.
Дрейф данных и смежные понятия#
- Дрейф модели: Снижение производительности модели с течением времени, вызванное дрейфом данных и дрейфом концепции. Также называется деградацией модели.
- Несоответствие между обучением и обслуживанием: Несоответствие между обучающими данными и данными рабочей среды, вызванное разной обработкой в двух конвейерах, например другим методом изменения размера. Оно возникает с первого дня развёртывания, а не развивается со временем.
- Обнаружение аномалий: Выявляет отдельные входные данные, отличающиеся от нормы, например один повреждённый кадр. При обнаружении дрейфа сравнивают целые распределения и выявляют неделю, в течение которой все изображения были равномерно темнее обычного.
- Обнаружение данных вне распределения (OOD): Для каждого входного значения оценивает, насколько оно отличается от обучающих данных; обычно это нужно, чтобы модель могла отказаться от ответа или передать этот пример человеку.










