Training

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-сервер