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

> Переобучение и регуляризация: train/val кривые, L1/L2, dropout, early stopping — как диагностировать и что отвечать на собеседовании.

Раздел: [Основы машинного обучения](https://ml-book.com/s/ml-basics/) · Страница темы: https://ml-book.com/t/overfitting-regularization/ · Обновлено: 2026-09-16 · Источник: ml-book.com, учебник делается сообществом

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

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

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

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

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

- **Обе ошибки высокие и близкие** — недообучение: модель слишком проста, учить дольше бессмысленно, нужна более выразительная модель или признаки.
- **Train низкая, validation заметно выше** — переобучение: модель запомнила шум. Разрыв (generalization gap) — его размер и есть градусник.
- **По ходу обучения train падает, а validation достигла минимума и начала расти** — момент, когда модель перешла от выучивания закономерности к запоминанию шума.

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

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/overfitting-regularization/

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

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

- **Больше данных.** Самое надёжное лекарство: шум перестаёт быть «закономерностью», когда примеров много.
- **Проще модель.** Меньше параметров, меньше степень, меньше глубина дерева — вручную режем variance.
- **Регуляризация (regularization).** Оставляем модель сложной, но штрафуем большие веса, добавляя к лоссу штраф:

  `L2 (ridge): L + λ·Σ w_j^2 · L1 (lasso): L + λ·Σ |w_j|`

  L2 равномерно прижимает все веса к нулю, но не обнуляет их. L1 из-за «острого угла» модуля в нуле выталкивает часть весов ровно в ноль — получается встроенный отбор признаков (feature selection). Коэффициент λ управляет силой: λ = 0 — нет штрафа, слишком большой λ — недообучение.
- **Ранняя остановка (early stopping).** Следим за validation-ошибкой по эпохам и останавливаем обучение в её минимуме, не дожидаясь, пока модель начнёт запоминать шум.
- **Кросс-валидация (k-fold cross-validation).** Не лекарство, а честный градусник: делим данные на k частей, k раз обучаемся на k−1 частях и валидируемся на оставшейся, метрики усредняем. Оценка надёжнее одного сплита — критично на малых данных при подборе λ и сложности модели.
- Для нейросетей — свои приёмы (dropout, аугментации): о них — в теме [про практику обучения](https://ml-book.com/t/training-practice/).

> **⚠️ Подводный камень**
>
> Регуляризация чувствительна к масштабу признаков: штраф λ·Σw² давит на все веса одинаково, но вес при признаке «площадь в м²» и вес при «площади в км²» живут в разных масштабах. Без стандартизации признаков L1/L2 несправедливо задавит одни коэффициенты и пощадит другие. Сначала масштабируй — потом регуляризуй.

> **🎤 На собеседовании**
>
> - «Как отличить переобучение от недообучения?» — по паре ошибок train/val: большой разрыв — overfitting, обе высокие — underfitting.
> - «Чем L1 отличается от L2?» — L1 зануляет веса и отбирает признаки, L2 равномерно уменьшает все веса; L2 гладкая и удобнее для оптимизации.
> - «Что делать, если модель переобучилась?» — по нарастанию стоимости: регуляризация/early stopping → упростить модель → собрать больше данных.
> - «Зачем k-fold, если есть train/val split?» — на малых данных один сплит шумный; усреднение по k фолдам даёт устойчивую оценку и позволяет честно подобрать гиперпараметры.

## Связанные темы

- [Линейная регрессия](https://ml-book.com/t/linear-regression/)
- [Bias–variance: разложение ошибки](https://ml-book.com/t/bias-variance/)
- [Кросс-валидация и подбор гиперпараметров](https://ml-book.com/t/cross-validation-tuning/)
- [Метрики качества](https://ml-book.com/t/metrics/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/overfitting-regularization/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
