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

Материал из llmdocs — справочник разработчика
Портал: ML и MLOps
Переобучение и регуляризация
Противоположностьнедообучение (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.

См. также

Источники

  1. Hastie, Tibshirani, Friedman — The Elements of Statistical Learning, гл. 7
  2. Srivastava et al. — Dropout: A Simple Way to Prevent Neural Networks from Overfitting (2014)
  3. scikit-learn — Linear models (Ridge, Lasso)
  4. scikit-learn — Underfitting vs. Overfitting
  5. Nakkiran et al. — Deep Double Descent (2019)
  6. Loshchilov, Hutter — Decoupled Weight Decay Regularization (AdamW, 2017)