Переобучение и регуляризация
| Противоположность | недообучение (underfitting) |
|---|---|
| Теоретическая рамка | компромисс смещения и разброса (bias–variance) |
| Диагностика | разрыв между ошибкой на обучении и на валидации |
| Методы для линейных моделей | L1 (Lasso), L2 (Ridge), Elastic Net |
| Методы для нейросетей | dropout, weight decay, ранняя остановка, аугментация |
Переобучение (англ. overfitting) — состояние модели машинного обучения, при котором она хорошо работает на обучающих данных, но плохо — на новых: вместо общей закономерности модель запомнила шум и случайные особенности выборки. Противоположная ситуация — недообучение (underfitting): модель слишком проста и не улавливает даже основную зависимость. Регуляризация — общее название приёмов, которые ограничивают сложность модели или добавляют к обучению «штраф», чтобы улучшить обобщение.[1]
Как распознать
Данные делят на обучающую, валидационную и тестовую части и сравнивают ошибку на них:[4]
| Картина | Ошибка на обучении | Ошибка на валидации | Диагноз |
|---|---|---|---|
| обе высокие | высокая | высокая | недообучение |
| большой разрыв | низкая | высокая | переобучение |
| обе низкие, близки | низкая | низкая | хорошо |
У нейросетей это видно по кривым обучения: ошибка на обучении продолжает падать, а на валидации после некоторой эпохи начинает расти. Для надёжной оценки на небольших данных используют кросс-валидацию.
Отдельная ловушка — утечка данных (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]
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) также оказывают регуляризующий эффект.
Для деревьев и ансамблей
Ограничение глубины и минимального размера листа, случайный выбор подмножества признаков и объектов, малый темп обучения с большим числом деревьев — основные рычаги в градиентном бустинге и случайном лесе.
Данные
Самый надёжный способ бороться с переобучением — больше разнообразных данных. Упрощение модели и отбор признаков — следующий шаг.
В больших языковых моделях
При дообучении LLM (Fine-tuning и LoRA) переобучение проявляется как «заучивание» обучающих примеров и потеря общих навыков (катастрофическое забывание). Помогают малое число эпох, низкий темп обучения и методы, меняющие лишь малую часть параметров, вроде LoRA.
См. также
Источники
- Hastie, Tibshirani, Friedman — The Elements of Statistical Learning, гл. 7
- Srivastava et al. — Dropout: A Simple Way to Prevent Neural Networks from Overfitting (2014)
- scikit-learn — Linear models (Ridge, Lasso)
- scikit-learn — Underfitting vs. Overfitting
- Nakkiran et al. — Deep Double Descent (2019)
- Loshchilov, Hutter — Decoupled Weight Decay Regularization (AdamW, 2017)