Частые ловушки в экспериментах машинного обучения — рассказываем, что следует знать

Привет, Хабр! Я Павел Куницын, главный специалист по анализу данных и машинному обучению в ПГК Диджитал. Мы занимаемся разработкой цифровых продуктов в сфере железнодорожных грузоперевозок: интерактивной карты вагонного парка, оптимизатора ремонтов и других решений. В большинстве из них мы применяем машинное обучение.

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

Фотография Loic Leray / Unsplash
Фотография Loic Leray / Unsplash

Проблема первая: утечка данных

Проблема утечек данных входит в топ-10 проблем Data Science и затрагивает сотни, если не тысячи, научных материалов и ML-моделей. Утечка данных возникает, когда дата-сайентист допускает ошибку на этапе обучения модели. Например, использует для обучения данные, имеющие лишь опосредованное отношение к целевой задаче, которую будет решать нейросеть. Или одновременно применяет и обучающие, и валидирующие данные для обучения модели.

Допустить подобную ошибку куда проще, чем кажется, на первый взгляд. Одна из распространенных причин возникновения такого рода утечек — неосторожное использование целевой переменной или признака, построенного на её основе (например, target encoding). В экспериментальной среде такие признаки могут давать высокие метрики качества, но в проде фича становится недоступной, и модель теряет способность делать прогнозы.

Решение. Использовать целевую переменную с осторожностью, чтобы избежать переобучения, и ответственно подходить к подсчету качества на тестовой выборке. Для построения моделей можно использовать данные, основанные на значениях целевой переменной, но нужно обязательно учитывать, что в тестовой выборке должны использоваться только данные из обучения.

Что почитать по теме:

  • «Don«t Push the Button! Риски утечек данных в МО». Исчерпывающая статья итальянских ученых о причинах утечек на этапе препроцессинга и не только. Например, противоречивая или ложная информация в тренировочном датасете.

  • «Data Science: The Hard Parts». Справочник от O«Reilly, в котором собраны лучшие практики и навыки, которыми должен обладать дата-сайентист. Отдельная глава посвящена утечкам данных и тому, как им противостоять.

  • «Теория информации и ML. Прогноз». Пост на Хабре, автор которого разбирает несколько видов data leakage: утечка через подбор гиперпараметров, утечка данных из будущего и другие нюансы.

Проблема вторая: версионирование

В машинном обучении важно отслеживать историю экспериментов: какие данные использовались, какие параметры были выбраны, какая версия кода и окружения применялась. Когда модель отдает непредсказуемые ответы, нужно посмотреть, на каких данных она обучалась, но конкретный срез найти не всегда получается.

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

Что почитать по теме:

  • «DVC, FDS, Kart и Dolt для версионирования данных». Моя статья на Хабре о профильных open source инструментах: что они умеют и как мы их используем.

  • «Начать работу с DVC». Руководство для начинающих. Авторы, которые по совместительству являются разработчиками FDS, стартуют с базовых концепций.

  • «Путь Тьюринга». Это — электронный справочник с чек-листами и схемами для команды дата-сайентистов. Материал всеобъемлющий, но в нем есть отдельная глава про версионирование данных.

Проблема третья: вычислительные ресурсы

Когда команда дата-сайентистов пробует новую библиотеку или алгоритм, случается, что инфраструктура компании оказывается не способна их «переварить» (например, у выделенной на задачу инфраструктуры может не хватать вычислительных ресурсов).

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

Решение. Оно достаточно очевидно — на предпроектной проработке проводить оценку ресурсов с учетом возможного роста размеров моделей. Оценку можно провести на ограниченной выборке, а также изучить опыт других компаний.

Что почитать по теме:

  • »39 рекомендаций по построению ML-систем». Чек-лист с лучшими практиками. Они касаются коллаборации, масштабирования алгоритмов и других тем.

Проблема четвертая: ограничения области значения прогнозируемой переменной

Например, такой алгоритм как случайный лес не сможет в качестве прогноза вернуть значение, которого не было в обучающей выборке. Этот факт может привести к серьёзной ошибке, если в проде на вход модели попадет какое-то новое наблюдение или «выброс». В этом случае даже простая модель линейной регрессии имеет преимущество перед более продвинутым алгоритмом.

Решение. Необходимо учитывать особенности работы используемых алгоритмов и строить модель, которая будет устойчивой к новым наблюдениям. Для проверки устойчивости модели можно делать замеры на искусственных выбросах, писать для этого тесты. Затем мониторить качество в проде и анализировать ошибки. Многие могут быть связаны с выбросами, которые ML-система не умеет обрабатывать.

Фотография Loic Leray / Unsplash
Фотография Loic Leray / Unsplash

Проблема пятая: нелогичный прогноз модели

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

Решение. Добавить дополнительные проверки параметров и результатов, которые генерируют модели. Также стоит проводить анализ ошибок на тестовых выборках. Можно собрать статистику по наблюдениям, на которых были допущены ошибки, и попытаться найти закономерности между ними. Такой подход поможет выбрать правильную стратегию по улучшению модели.

Что почитать по теме:

  • «Различные оттенки неправды». Авторы этой научной работы попытались повысить производительность нейросети, обучив её исключительно на неправильных ответах. Идея заключалась в том, чтобы научить систему ИИ отличать факты различной степени «неправильности».

  • «Как анализировать и находить ошибки в LLM-приложениях». Пошаговое руководство от основателя площадки TechTalks, посвящённой архитектуре ПО и работе с данными.

Проблема шестая: несоответствие метрик задаче

Это подходящее место, чтобы напомнить: машинное обучение — не серебряная пуля. Вполне возможны (и вероятны) ситуации, когда для решения поставленной задачи будет достаточно построить грамотный SQL-запрос к базе данных. В общем, помним про первое правило машинного обучения: «Начинайте без машинного обучения».

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

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

Что почитать по теме:

  • «ML для прогнозирования спроса на ж/д: экономическое обоснование». Мой коллега Леонид Зверев рассказал, как мы помогаем прогнозировать спрос на подвижные составы. Какие подходы работают и как мы улучшаем результаты.

Разумеется, это не все нюансы, связанные с проведением ML-экспериментов. О других характерных сложностях я как-нибудь расскажу в следующих материалах.

© Habrahabr.ru