Введение
Под устареванием моделей понимается постепенная потеря их точности из-за изменения данных, на которых они были обучены. Если модель устарела, ее следует переобучить, чтобы восстановить ее точность и адаптировать к новым данным.
Реализацию процесса работы с устареванием моделей в ML можно разделить на 4 шага:
-
Шаг 1: Понимание устаревания
-
Шаг 3: Внедрение системы мониторинга
-
Шаг 4: Переобучение и поддержание актуальности модели
В этой части мы начнем с первого и самого важного шага – понимание устаревания в ML-моделях.
Мы выясним, что такое устаревание моделей на практике, и определим, в каких случаях эта проблема требует внимания, а в каких нет.
Стоит ли вообще переобучать модели и следить за их устареванием?
Заглядывая в репозитории с ML моделями, часто можно увидеть один и тот же сценарий: данные подготовлены, код написан, модель обучена, но ни слова о мониторинге, переобучении или борьбе с устареванием. Вот пример такой работы: ml-models/models/cifar10_pytorch at main · PavelShunkevich/ml-models
В ней на основе набора cifar10 была создана модель для классификации изображений, и на этом все заканчивается. Такие примеры наводят на вопрос: а стоит ли вообще тратить время и силы на мониторинг и переобучение моделей? Может быть действительно нет смысла тратить время на работу в этом направлении и перенаправить свои ресурсы, к примеру, для создания новой модели для решения новых задач?
Ситуации, в которых НЕТ СМЫСЛА переобучать модель и следить за ее устареванием
Действительно, существуют сценарии, когда тратить время на борьбу с устареванием не имеет смысла. Когда такое может произойти:
1 Статичные данные
Если данные, на которых обучена модель, и с которыми она будет работать в дальнейшем статичны, то есть не меняются со временем.
На самом деле довольно сложно привести такой пример, ведь в реальном мире абсолютно статичных данных практически не существует. Всегда есть небольшая вероятность их изменения, но я постараюсь максимально приблизиться к этому в данном примере. Также зачастую для абсолютно статичных данных уже созданы конкретные алгоритмы. Например, для перевода чисел из десятичной системы в римскую не нужно использовать машинное обучение. Существуют простые и понятные правила, которые позволяют выполнить этот перевод без каких-либо моделей.
Пример:
Распознавание рукописных подписей определенных известных исторических личностей (Наполеон, Кутузов и так далее).
Почему это можно отнести к более-менее статическим данным:
-
Ограниченный набор. Мы работаем только с подписями конкретных исторических личностей.
-
Исторический контекст. Подписи были сделаны в определенный период времени с использованием определенных инструментов.
-
Архивные данные. Существует фиксированный набор исторических документов с подписями, которые доступны для анализа, вероятность появления новых документов не высока, вероятность изменения самой подписи еще меньше.
2 Учебные и демонстрационные проекты
Цель таких работ – показать возможности машинного обучения, объяснить принципы работы или создать прототип. Тут не идет речь о каком-либо дальнейшем поддержании точности модели.
Пример:
Все та же модель на основе данных cifar10: ml-models/models/cifar10_pytorch at main · PavelShunkevich/ml-models
Из нее можно подчерпнуть полезные знания и посмотреть подход к реализации. На валидационном наборе модель будет показывать всегда одну и ту же точность. Однако, если мы начнем использовать ее в реальных условиях и отправлять ей на вход фотографии, сделанные нами самими, то точность модели скорее всего снизится, так как появятся новые условия, к примеру часть изображений будет содержать сразу несколько классов.
3 Соревнования по машинному обучению
Данные предоставляются организаторами, и они фиксированы. После завершения соревнования сама модель зачастую в изначальном виде больше не используется.
Пример: Kaggle
Основная задача – достичь максимальной точности на предоставленном наборе данных. Хотя в дальнейшем организатор соревнования может использовать подход к созданию модели, перенеся ее в реальные условия, и в таком случае ему уже придется задуматься над ее устареванием.
4 Краткосрочные проекты с известным сроком жизни
Модель создается для решения конкретной задачи в течение ограниченного времени. По истечении срока жизни проекта модель перестает использоваться. Мониторинг и переобучение в долгосрочной перспективе не требуются.
Пример: на основании N юзеров, которые были обозначены как фрод (фрод – любые действия, направленные на обман и незаконное получение выгоды, которые так или иначе приносят вред компании или конечному пользователю), необходимо найти в данных за определенный период максимально похожих юзеров. При нахождении всех похожих юзеров модель больше не нужна.
5 Незначительная ценность прогнозов
Если цена ошибки не высока, можно пренебречь мониторингом
Пример: веб-сайт, на котором исходя из заполненной пользователем информации моделью выбирается максимально подходящая на сегодняшний день мотивирующая фраза. Эти фразы не влияют на поведение пользователей, не используются для принятия каких-либо решений и не связаны с какими-либо бизнес-целями. Даже если модель, выбирающая фразы, начнет выдавать менее подходящие для конкретного человека фразы, это вряд ли повлияет на посещаемость или другие показатели сайта.
Ситуации, в которых ЕСТЬ СМЫСЛ переобучать модель и следить за ее устареванием
Итак, мы выяснили, что в некоторых случаях переобучение модели и соответственно мониторинг ее качества не требуется. Но что делать в большинстве других ситуаций, когда данные динамичны и меняются со временем?
В таких случаях нам действительно стоит задуматься о переобучении наших моделей и о том, чтобы постоянно следить за их качеством.
Чтобы лучше понять эту необходимость, представьте себе компанию, которая занимается строительством и обслуживанием маяков в Англии.

Когда маяки только построены, они работают исправно, но со временем, как и любое сооружение, подвергаются различным воздействиям окружающей среды и разрушаются. Причем, разрушения на севере страны будут происходить быстрее и интенсивнее чем на юге из-за более суровых погодных условий. Поэтому, ещё на этапе проектирования, важно учитывать эти факторы и закладывать основу для долговечности. Например, использовать более прочные материалы на севере, разрабатывать конструкции, устойчивые к штормам, или предусматривать систему обогрева для предотвращения обледенения. Так мы заранее минимизируем риск быстрого износа. Далее, в процессе эксплуатации, нам необходимо постоянно следить за состоянием маяка, ремонтировать его и, при необходимости, полностью перестраивать. Этот пример хорошо иллюстрирует необходимость постоянного мониторинга и адаптации моделей машинного обучения к изменяющимся условиям.
Подобно маяку, который требует регулярной проверки и обслуживания для поддержания своей функциональности, наши ML-модели также нуждаются в постоянном контроле и своевременном устранении возникающих проблем.
Таких как например:
curent – новые данные
reference – старые
Изменение распределений признаков

Появление выбросов

Передача некорректных значений (NaN, Inf и т.д.)

Таким образом, изначально даже самая качественная модель, с F1-Score = 0.99, со временем, без контроля, может стать бесполезной. Данная ситуация менее актуальна в сферах, где анализируемый объект редко меняется. К примеру, производство гаек и шайб. Однако в сферах, где анализируемый объект легко может менять свое поведение, контроль, анализ и переобучение становятся крайне необходимы. Например, модели из сферы антифрода могут быть подвержены очень быстрому изменению поведения анализируемого объекта, поскольку фрод юзеры, выявляя закономерности, по которым их действия распознаются, будут постоянно менять свои стратегии и тактики, маскируя свои вредоносные действия.

Еще пример резкого изменения качества модели:
Допустим, в 2018 году мы создали модель, которая распознает лица. Однако с началом пандемии COVID-19 и повсеместным ношением масок точность распознавания значительно снизилась и модель перестала давать корректные предсказания.

Через какое время после создания нужно переобучать модель?
На данный вопрос можно попытаться ответить интуитивно: раз в неделю, раз в месяц и так далее. Однако стоит задуматься, является ли такой подход оптимальным. Что если данные начнут меняться гораздо быстрее, чем мы предполагали, и модель устареет за несколько дней? Или наоборот – изменения будут настолько незначительными, что переобучение окажется пустой тратой ресурсов?
Кроме того, могут возникнуть проблемы в работе алгоритма, не связанные с его устареванием, а, например, с временными сбоями в данных, изменениями в инфраструктуре или ошибками в коде. На такие вопросы интуитивно ответить невозможно. Необходимо подходить к принятию решения о переобучении более осознанно и основываться на анализе конкретных данных и метрик.
Заключение
Понимание устаревания моделей – это краеугольный камень успешной работы с ML моделями.
В этой статье мы выяснили, что прежде, чем предпринимать какие-либо действия по созданию моделей, необходимо иметь понимание, что же из себя представляет устаревание моделей.
Мы узнали, в каких случаях стоит тратить время на работу с устареванием и в каких нет.
Увидели на примерах, что же из себя представляет устаревание моделей.
Весь код используемый в статье: articles/model_quality_monitoring/code_for_article_part_1.ipynb at main · PavelShunkevich/articles
Автор: pavel_shunkevich