Диагностика Mock-интервью
Главная · Основы машинного обучения

Переобучение и регуляризация

Центральная драма всего машинного обучения: модель, идеальная на обучающих данных, может быть бесполезной на новых. Как это диагностировать по кривым ошибок и чем лечить — от L1/L2 до early stopping — спрашивают на каждом собеседовании.

Интуиция: зубрёжка против понимания

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

Формальный язык для этой истории — компромисс смещения и разброса (bias-variance trade-off). Смещение (bias) — систематическая ошибка слишком простой модели: прямая в принципе не может описать синусоиду. Разброс (variance) — чувствительность модели к конкретной обучающей выборке: полином 15-й степени, обученный на другом наборе тех же 20 точек, выглядел бы совершенно иначе. Увеличивая сложность модели, мы уменьшаем bias, но раздуваем variance; лучшее качество на новых данных — где-то посередине.

Как диагностировать

Главный инструмент — сравнение ошибки на train и на отложенной выборке (validation/test):

💡 Ключевая мысль Ошибка на train всегда падает с ростом сложности модели, а ошибка на новых данных — U-образная: сначала падает (уходит bias), потом растёт (взрывается variance). Выбирать сложность нужно по дну этой U-кривой.

Пройди степени слева направо при λ = выкл: d = 1 — недообучение (обе ошибки велики), d = 4–6 — золотая середина, d = 13–15 — кривая пролезает через каждую train-точку, train-ошибка почти ноль, а test взлетает. Это U-кривая вживую. Теперь на d = 15 добавь L2: λ ≈ 10−3…10−1 прижимает веса, кривая разглаживается, и test-ошибка возвращается к разумной — регуляризация вылечила переобучение без смены модели.

Чем лечить переобучение

⚠️ Подводный камень Регуляризация чувствительна к масштабу признаков: штраф λ·Σw² давит на все веса одинаково, но вес при признаке «площадь в м²» и вес при «площади в км²» живут в разных масштабах. Без стандартизации признаков L1/L2 несправедливо задавит одни коэффициенты и пощадит другие. Сначала масштабируй — потом регуляризуй.
🎤 На собеседовании
  • «Как отличить переобучение от недообучения?» — по паре ошибок train/val: большой разрыв — overfitting, обе высокие — underfitting.
  • «Чем L1 отличается от L2?» — L1 зануляет веса и отбирает признаки, L2 равномерно уменьшает все веса; L2 гладкая и удобнее для оптимизации.
  • «Что делать, если модель переобучилась?» — по нарастанию стоимости: регуляризация/early stopping → упростить модель → собрать больше данных.
  • «Зачем k-fold, если есть train/val split?» — на малых данных один сплит шумный; усреднение по k фолдам даёт устойчивую оценку и позволяет честно подобрать гиперпараметры.