overfitting
Переобучение: модель отлично работает на train, но плохо — на новых данных.
Что такое overfitting
Overfitting (переобучение) — явление, при котором модель слишком хорошо «запоминает» обучающий датасет, включая его шум и артефакты, теряя способность обобщаться на новые примеры. Train loss снижается, val loss растёт — это признак overfitting.
При fine-tuning LLM overfitting особенно опасен на маленьких датасетах: модель может запомнить примеры дословно вместо того, чтобы усвоить паттерны.
Признаки overfitting
Эпоха 1: train_loss=2.1, val_loss=2.2 ✓ (gap нормальный)
Эпоха 3: train_loss=0.5, val_loss=1.8 ⚠ (gap растёт)
Эпоха 5: train_loss=0.1, val_loss=2.5 ✗ (переобучение)
Методы борьбы с overfitting
Early stopping: остановить обучение, когда val_loss перестаёт улучшаться:
from transformers import TrainingArguments, EarlyStoppingCallback
args = TrainingArguments(
load_best_model_at_end=True,
evaluation_strategy="steps",
eval_steps=100,
save_steps=100,
)
trainer = Trainer(..., callbacks=[EarlyStoppingCallback(early_stopping_patience=3)])
Weight decay: L2-регуляризация, штрафующая большие веса.
Dropout: случайное обнуление нейронов во время обучения.
Меньше эпох: для LLM fine-tuning обычно 1–3 эпохи достаточно.
Augmentation / больше данных: при маленьком датасете — лучшее решение.
При LLM fine-tuning
С LoRA риск overfitting ниже, чем при full fine-tuning: малое число обучаемых параметров само по себе регуляризирует модель.
Связанные термины
- weight decay — регуляризация против overfitting
- epoch — число эпох прямо влияет на risk overfitting
- learning rate — слишком высокий lr ускоряет overfitting
- чекпоинт — early stopping использует лучший чекпоинт
Готовы запустить GPU-задачу?
Запустить GPU-сервер