Переобучение (Overfitting)

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

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

Пример

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

Как распознать

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

Почему возникает

  • Слишком сложная модель для объема данных: миллионы параметров на тысячу примеров.
  • Мало данных или они не отражают реальное разнообразие.
  • Шум в данных — ошибки разметки модель тоже «выучивает».
  • Слишком долгое обучение.

Как бороться

  • Больше разнообразных данных, в том числе искусственно расширенных: для изображений — повороты, обрезка, изменение яркости.
  • Модель попроще или меньше признаков.
  • Регуляризация — штраф за слишком большие веса модели; в нейронных сетях также отключение случайных нейронов при обучении (dropout).
  • Ранняя остановка — прекратить обучение, когда ошибка на проверочных данных перестала падать.
  • Перекрестная проверка — обучение и проверка на разных разбиениях данных, чтобы результат не зависел от удачного разбиения.

Соседние проблемы

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

Переобучение — риск и при тонкой настройке больших моделей на небольшом наборе своих примеров.