Skip to main content

Перенавчання (Overfitting)(Перенавчання нейромереж: Bias-Variance компроміс, розбіжність Train/Val Loss та методи регуляризації)

Фундаментальна проблема машинного навчання: модель надмірно підлаштовується під тренувальний датасет разом із його специфічним шумом, втрачаючи здатність до генералізації (Generalization) на нових даних. Розбір дивергенції функцій втрат, технік регуляризації та Early Stopping у коді.

1. Огляд концепції та математична суть

Головна мета будь-якої моделі машинного навчання — не відтворити минуле, а успішно екстраполювати знання на невідоме майбутнє: тобто продемонструвати здатність до генералізації (Generalization).

Коли параметрична ємність моделі (кількість вагів) значно перевищує інформаційну складність навчального датасету, виникає явище Перенавчання (Overfitting / High Variance). Замість вилучення інваріантних закономірностей нейромережа знаходить випадкові кореляції в шумі даних.

Ментальна модель: як студент перед екзаменом зазубрив точні номери відповідей у кінці підручника замість вивчення формул: на тестових білетах він покаже 100% результат, але впаде на першій реальній інженерній задачі з іншими числами.

┌─────────────────────────────────────────────────────────────┐
│                 КРИВА ДИВЕРГЕНЦІЇ ПЕРЕНАВЧАННЯ              │
├─────────────────────────────────────────────────────────────┤
│ LOSS (Похибка)                                              │
│   ▲                                                         │
│   │   Underfitting     ІДЕАЛЬНА ТОЧКА     Overfitting       │
│   │                          │                              │
│   │                          ▼ (Early Stopping Trigger)     │
│   │   \                      /                              │
│   │    \                    / ═══════════════════════ Val   │
│   │     \                  /                         Loss   │
│   │      \───────...──────/                                 │
│   │       \                                                 │
│   │        \───────────────────────────────────────── Train │
│   │                                                  Loss   │
│   └────────────────────────────────────────────────────────►│
│                            ЕПОХИ НАВЧАННЯ (Epochs)          │
└─────────────────────────────────────────────────────────────┘

2. Практична реалізація: Early Stopping у тренувальному циклі PyTorch

Ось як інженери реалізують автоматичне припинення навчання в коді, щоб не дати моделі деградувати:

import torch

class EarlyStopping:
    def __init__(self, patience: int = 3, min_delta: float = 0.001):
        self.patience = patience          # Скільки епох чекати після зупинки прогресу
        self.min_delta = min_delta        # Мінімальне покращення loss
        self.counter = 0
        self.best_loss = float('inf')
        self.should_stop = False

    def check(self, val_loss: float) -> bool:
        if val_loss < self.best_loss - self.min_delta:
            self.best_loss = val_loss
            self.counter = 0              # Скидаємо лічильник: є покращення!
        else:
            self.counter += 1
            if self.counter >= self.patience:
                self.should_stop = True
                print(f"[ALERT] Overfitting виявлено! Зупинка навчання на eval_loss: {val_loss:.4f}")
        return self.should_stop

Під час файн-тюнінгу бібліотек Hugging Face Trainer це налаштовується буквально двома рядками конфігурації:

from transformers import EarlyStoppingCallback, TrainingArguments

training_args = TrainingArguments(
    eval_strategy="epoch",
    save_strategy="epoch",
    load_best_model_at_end=True,
    metric_for_best_model="eval_loss",
    weight_decay=0.01  # L2 регуляризація
)
callbacks = [EarlyStoppingCallback(early_stopping_patience=2)]

3. Чотири головні методи боротьби з перенавчанням

  1. Регуляризація ваг (Weight Decay / $L_2$): Штрафує модель за занадто великі абсолютні значення вагів у функції втрат ($Loss = Loss_{orig} + \lambda \sum w_i^2$), що змушує модель залишатися плавною та стійкою до локальних сплесків.
  2. Dropout (Випадкове відключення вузлів): Під час тренування випадкові 10–20% нейронів у кожному шарі тимчасово обнуляються. Це унеможливлює "змову" (co-adaptation) між нейронами і змушує мережу знаходити дублюючі надійні шляхи передачі сигналу.
  3. Зниження параметричної ємності (LoRA Rank Reduction): Якщо датасет для адаптації невеликий (наприклад, 200 прикладів корпоративного стилю), встановлення r=64 у LoRA майже гарантовано призведе до катастрофічного перенавчання. Зниження рангу до r=8 або r=16 виступає потужним регуляризатором.
  4. Аугментація та синтетичні дані: Штучне додавання шуму, перефразування через мовні моделі та розширення контенту для розмивання специфічних формулювань.

4. Підсумковий інженерний висновок

Перенавчання — це ціна за високу виразну здатність сучасних нейромереж. Професійний ML-інженер ніколи не орієнтується на красиві цифри тренувального лоссу, а завжди тримає строгий валідаційний набір даних за межами тренувального контуру.

/ Часті запитанняSchema.org FAQPage

FAQ: Перенавчання (Overfitting)

За точкою дивергенції: тренувальна похибка (Train Loss) продовжує монотонно спадати, тоді як валідаційна похибка (Validation Loss) досягає мінімуму і починає зростати вгору. Саме в цей момент модель припиняє вчити загальні правила і починає зазубрювати конкретні семпли.
/ Внутрішня перелінковка
Всі терміни
Моделі & Інференс

Попереднє навчання (Pre-training)

Початковий етап створення базової великої мовної моделі (Foundation Model). Процес згодовування нейромережі трильйонів слів з інтернету, книг і коду на кластерах із тисяч відеокарт протягом місяців за десятки й сотні мільйонів доларів.

Читати термін
Моделі & Інференс

Тонке донавчання (Fine-Tuning)

Процес адаптації вже навченої великої моделі до вузькоспеціалізованого завдання або стилю за допомогою невеликого якісного датасету (Supervised Fine-Tuning, SFT). Дозволяє навчити ШІ медичній термінології, корпоративному тону або форматуванню специфічного коду за кілька годин.

Читати термін
Моделі & Інференс

Катастрофічне забування (Catastrophic Forgetting)

Фундаментальна проблема штучних нейронних мереж, коли при навчанні новому завданню або іншій мові оновлені вагові коефіцієнти перезаписують попередні зв'язки, призводячи до раптової та повної втрати раніше набутих навичок.

Читати термін
Моделі & Інференс

Ваги та зміщення нейромережі (Weights & Biases)

Фундаментальна природа навченої нейромережі. Ваги (Weights) — матричні коефіцієнти сили зв'язку між штучними нейронами, а зміщення (Biases) — поріг чутливості активації. Пояснення форматів збереження (.safetensors, bfloat16, fp8) та інспекція ваг через Python і CLI.

Читати термін