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

> Переобучение — ситуация, когда модель запоминает обучающие данные вместо закономерностей; регуляризация — набор приёмов, ограничивающих сложность модели ради обобщения.

Источник: https://llmdocs.ru/wiki/overfitting-regularization/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Противоположность**: недообучение (underfitting)
- **Теоретическая рамка**: компромисс смещения и разброса (bias–variance)
- **Диагностика**: разрыв между ошибкой на обучении и на валидации
- **Методы для линейных моделей**: L1 (Lasso), L2 (Ridge), Elastic Net
- **Методы для нейросетей**: dropout, weight decay, ранняя остановка, аугментация
**Переобучение** (англ. *overfitting*) — состояние модели [машинного обучения](https://llmdocs.ru/wiki/machine-learning.md), при котором она хорошо работает на обучающих данных, но плохо — на новых: вместо общей закономерности модель запомнила шум и случайные особенности выборки. Противоположная ситуация — **недообучение** (*underfitting*): модель слишком проста и не улавливает даже основную зависимость. **Регуляризация** — общее название приёмов, которые ограничивают сложность модели или добавляют к обучению «штраф», чтобы улучшить обобщение.[1]

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

Данные делят на обучающую, валидационную и тестовую части и сравнивают ошибку на них:[4]

| Картина | Ошибка на обучении | Ошибка на валидации | Диагноз |
|---|---|---|---|
| обе высокие | высокая | высокая | недообучение |
| большой разрыв | низкая | высокая | переобучение |
| обе низкие, близки | низкая | низкая | хорошо |

У нейросетей это видно по **кривым обучения**: ошибка на обучении продолжает падать, а на валидации после некоторой эпохи начинает расти. Для надёжной оценки на небольших данных используют [кросс-валидацию](https://llmdocs.ru/wiki/cross-validation.md).

Отдельная ловушка — **утечка данных** (data leakage): когда в признаки попадает информация из будущего или из ответа, модель выглядит превосходно на валидации и проваливается в продакшене. Это не переобучение в строгом смысле, но симптомы похожи.

## Смещение и разброс

Классическое объяснение — компромисс **смещения и разброса** (bias–variance tradeoff). Ожидаемую ошибку модели можно разложить на три части: смещение (систематическая ошибка от слишком простых допущений), разброс (чувствительность к конкретной выборке) и неустранимый шум.[1] Простые модели имеют большое смещение, сложные — большой разброс; регуляризация сдвигает баланс в сторону меньшего разброса ценой небольшого смещения.

Для очень больших нейросетей картина сложнее: при росте числа параметров далеко за порог «запоминания» ошибка на тесте может снова снижаться — эффект **двойного спуска** (double descent).[5] Поэтому современные сети обычно делают избыточно большими и регуляризуют, а не уменьшают.

## Методы регуляризации

### Штрафы на веса

К функции потерь добавляется слагаемое, зависящее от величины весов $w$:[3]

- **L2** (Ridge, *weight decay*): $\lambda \sum w_j^2$ — веса становятся меньше и равномернее.
- **L1** (Lasso): $\lambda \sum |w_j|$ — многие веса обнуляются, модель сама отбирает признаки.
- **Elastic Net** — сочетание обоих.

Коэффициент $\lambda$ — гиперпараметр: подбирается по валидации. При обучении нейросетей оптимизатором Adam штраф лучше применять отдельно от градиентного шага (AdamW).[6]

```python
from sklearn.linear_model import RidgeCV, LassoCV
ridge = RidgeCV(alphas=[0.1, 1, 10, 100]).fit(X_train, y_train)
lasso = LassoCV(cv=5).fit(X_train, y_train)
print((lasso.coef_ != 0).sum(), "признаков осталось")
```

### Для нейросетей

- **Dropout** — на каждом шаге обучения случайно «выключается» часть нейронов, сеть не может полагаться на отдельные связи.[2]
- **Ранняя остановка** — прекратить обучение, когда ошибка на валидации перестала снижаться.
- **Аугментация данных** — искусственное расширение выборки: повороты и обрезка картинок, перефразирование текстов.
- **Нормализация** (batch norm, layer norm) и сглаживание меток (label smoothing) также оказывают регуляризующий эффект.

### Для деревьев и ансамблей

Ограничение глубины и минимального размера листа, случайный выбор подмножества признаков и объектов, малый темп обучения с большим числом деревьев — основные рычаги в [градиентном бустинге](https://llmdocs.ru/wiki/gradient-boosting.md) и случайном лесе.

### Данные

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

## В больших языковых моделях

При дообучении LLM ([Fine-tuning и LoRA](https://llmdocs.ru/wiki/fine-tuning-lora.md)) переобучение проявляется как «заучивание» обучающих примеров и потеря общих навыков (катастрофическое забывание). Помогают малое число эпох, низкий темп обучения и методы, меняющие лишь малую часть параметров, вроде LoRA.

## См. также

- [Градиентный спуск](https://llmdocs.ru/wiki/gradient-descent.md)
- [Кросс-валидация](https://llmdocs.ru/wiki/cross-validation.md)
- [Обучение с учителем и без](https://llmdocs.ru/wiki/supervised-unsupervised.md)
- [Нейронная сеть](https://llmdocs.ru/wiki/neural-network.md)
- [scikit-learn](https://llmdocs.ru/wiki/scikit-learn.md)

## Источники

1. [Hastie, Tibshirani, Friedman — The Elements of Statistical Learning, гл. 7](https://hastie.su.domains/ElemStatLearn/)
2. [Srivastava et al. — Dropout: A Simple Way to Prevent Neural Networks from Overfitting (2014)](https://jmlr.org/papers/v15/srivastava14a.html)
3. [scikit-learn — Linear models (Ridge, Lasso)](https://scikit-learn.org/stable/modules/linear_model.html)
4. [scikit-learn — Underfitting vs. Overfitting](https://scikit-learn.org/stable/auto_examples/model_selection/plot_underfitting_overfitting.html)
5. [Nakkiran et al. — Deep Double Descent (2019)](https://arxiv.org/abs/1912.02292)
6. [Loshchilov, Hutter — Decoupled Weight Decay Regularization (AdamW, 2017)](https://arxiv.org/abs/1711.05101)
