Każdy model uczenia maszynowego mierzy się z fundamentalnym kompromisem: bias-variance tradeoff. Zbyt prosty model nie wychwytuje wzorców w danych (underfitting). Zbyt złożony zapamiętuje szum i nie generalizuje (overfitting). Znalezienie złotego środka to jedno z najważniejszych wyzwań w treningu sieci neuronowych i ML.

Czym jest overfitting?

Overfitting (przeuczenie, przetrenowanie) występuje, gdy model zbyt dobrze dopasowuje się do danych treningowych, tracąc zdolność generalizacji na nowe, niewidziane dane.

Objawy:

  • Niska strata treningowa — model świetnie radzi sobie na danych treningowych
  • Wysoka strata walidacyjna — model źle radzi sobie na danych walidacyjnych/testowych
  • Rosnąca rozbieżność — strata treningowa spada, a walidacyjna rośnie

Analogia

Overfitting to jak uczeń, który wyuczył się na pamięć odpowiedzi do konkretnych pytań z podręcznika, ale nie zrozumiał materiału i nie potrafi odpowiedzieć na nowe pytania sformułowane inaczej.

Przyczyny overfittingu

  1. Model zbyt złożony — sieć z milionami parametrów trenowana na tysiącach przykładów
  2. Za mało danych treningowych — sieć „zapamiętuje" każdy przykład zamiast uczyć się wzorców
  3. Zbyt długi trening — po pewnym czasie model zaczyna dopasowywać się do szumu
  4. Brak regularyzacji — żadne mechanizmy nie ograniczają złożoności modelu
  5. Dane treningowe niereprezentatywne — rozkład danych treningowych nie odpowiada rzeczywistości
  6. Szum w danych — błędne etykiety, wartości odstające

Czym jest underfitting?

Underfitting (niedouczenie) występuje, gdy model jest zbyt prosty, by wychwycić wzorce w danych.

Objawy:

  • Wysoka strata treningowa — model słabo radzi sobie nawet na danych treningowych
  • Wysoka strata walidacyjna — analogicznie na danych walidacyjnych
  • Obie straty są zbliżone — ale obie wysokie

Przyczyny underfittingu

  1. Model zbyt prosty — np. regresja liniowa do nieliniowego problemu
  2. Za mało epok treningu — model nie zdążył się nauczyć
  3. Zbyt silna regularyzacja — nadmierne ograniczenie złożoności
  4. Złe cechy wejściowe — brakujące lub nieinformacyjne features
  5. Zbyt niski learning rate — model porusza się zbyt wolno w przestrzeni parametrów

Bias-Variance Tradeoff

Błąd modelu na nowych danych składa się z trzech komponentów:

Błąd = Bias² + Variance + Irreducible Error

  • Bias — systematyczny błąd wynikający z uproszczeń modelu (underfitting → wysoki bias)
  • Variance — wrażliwość modelu na konkretny zestaw treningowy (overfitting → wysoka wariancja)
  • Irreducible error — szum w danych, niemożliwy do wyeliminowania

Model optymalny minimalizuje sumę bias² + variance. Zwiększanie złożoności modelu redukuje bias, ale zwiększa variance — i odwrotnie.

Jak wykryć overfitting i underfitting?

Krzywe uczenia (Learning Curves)

Najważniejsze narzędzie diagnostyczne. Wykreśl stratę treningową i walidacyjną jako funkcję:

  • Epok treningu — wykrywa, kiedy model zaczyna się przeuczać
  • Rozmiaru danych — pokazuje, czy więcej danych pomoże

Overfitting: strata treningowa spada, walidacyjna rośnie (lub stagnuje) → rosnąca luka. Underfitting: obie straty wysokie, blisko siebie → model zbyt prosty. Dobre dopasowanie: obie straty niskie, blisko siebie → model dobrze generalizuje.

Walidacja krzyżowa (Cross-Validation)

K-fold cross-validation dzieli dane na K części. Model jest trenowany K razy, za każdym razem na K-1 częściach, a walidowany na pozostałej. Średnia i odchylenie standardowe metryki dają solidną ocenę generalizacji.

Duża rozbieżność między wynikami na foldach → wysoka wariancja → model przeuczony.

Techniki zapobiegania overfittingowi

1. Więcej danych

Najskuteczniejsza metoda. Więcej danych treningowych = trudniej zapamiętać, łatwiej uczyć się wzorców. Sposoby:

  • Zbieranie nowych danych
  • Augmentacja danych — tworzenie zmodyfikowanych kopii (obroty, odbicia, cropping dla obrazów; parafrazowanie, back-translation dla tekstu)
  • Dane syntetyczne — generowanie przez GAN-y lub symulacje

2. Regularyzacja L1 i L2

Dodanie kary za duże wagi do funkcji straty:

L2 (Ridge / Weight Decay): L_total = L_data + λ · Σ wᵢ²

Zmniejsza wagi, ale nie zeruje ich. Efekt: model staje się gładszy, mniej wrażliwy na poszczególne cechy.

L1 (Lasso): L_total = L_data + λ · Σ |wᵢ|

Zeruje małe wagi → selekcja cech (feature selection). Produkuje rzadkie modele.

λ to hiperparametr kontrolujący siłę regularyzacji. Zbyt duże λ → underfitting.

3. Dropout

Podczas treningu losowo wyłącza (zeruje) neurony z prawdopodobieństwem p (typowo 0,2-0,5). Każdy mini-batch „widzi" inną subarchitekturę sieci. Efekt:

  • Zapobiega ko-adaptacji neuronów (nie polegają na konkretnych sąsiadach)
  • Działa jak ensemble wielu mniejszych sieci
  • Podczas inferencji używa wszystkich neuronów, ale skaluje wagi przez (1-p)

Dropout to jedna z najskuteczniejszych technik regularyzacji w głębokim uczeniu. Zaproponowany przez Srivastava et al. (2014).

4. Early Stopping

Monitoruj stratę walidacyjną podczas treningu. Gdy przestaje spadać (lub zaczyna rosnąć) — zatrzymaj trening, nawet jeśli strata treningowa nadal maleje.

W praktyce stosuje się patience — liczbę epok bez poprawy, po których trening jest zatrzymywany. Typowa wartość: 5-20 epok.

Early stopping to forma regularyzacji — ogranicza efektywną złożoność modelu przez ograniczenie czasu treningu.

5. Batch Normalization

Normalizuje aktywacje między warstwami do średniej 0 i odchylenia 1. Oprócz przyspieszenia treningu, działa jako łagodna forma regularyzacji — dodaje szum przez normalizację na mini-batchu zamiast na całym zbiorze.

6. Data Augmentation

Dla obrazów: obroty, odbicia lustrzane, przesunięcia, zmiany jasności, random crop, random erasing, Mixup, CutMix.

Dla tekstu: synonimy, back-translation, random insertion/deletion, parafrazowanie.

Augmentacja efektywnie zwiększa rozmiar i różnorodność danych treningowych bez zbierania nowych.

7. Zmniejszenie złożoności modelu

Jeśli model jest zbyt duży na dostępne dane:

  • Zmniejsz liczbę warstw lub neuronów
  • Użyj prostszej architektury
  • Ogranicz liczbę parametrów

Zasada: model powinien być tak prosty, jak to możliwe, ale nie prostszy (brzytwa Ockhama).

8. Transfer Learning

Zamiast trenować od zera na małym zbiorze, użyj modelu wstępnie wytrenowanego na dużym zbiorze (np. ImageNet). Fine-tunuj tylko kilka ostatnich warstw. Wytrenowany model już nauczył się ogólnych reprezentacji — potrzebuje mniej danych do dostosowania.

Techniki zapobiegania underfittingowi

  1. Zwiększ złożoność modelu — więcej warstw, neuronów, parametrów
  2. Więcej epok treningu — daj modelowi czas na naukę
  3. Zmniejsz regularyzację — obniż λ, dropout rate
  4. Lepsze cechy — feature engineering, dodaj informacyjne zmienne
  5. Zwiększ learning rate — model może poruszać się szybciej (ale uważaj na oscylacje)
  6. Zmień architekturę — np. z liniowej na nieliniową, z prostej na głęboką

Praktyczne wskazówki

1. Zacznij od overfittingu

Paradoksalnie, pierwszy krok to celowe przeuczenie modelu na małym podzbiorze danych. Jeśli model nie potrafi osiągnąć niskiej straty treningowej na kilku przykładach — jest bug w kodzie lub architektura jest zbyt prosta (underfitting).

2. Następnie regularyzuj

Gdy model overfit-uje na pełnym zbiorze, stopniowo dodawaj regularyzację: dropout, weight decay, augmentację, early stopping.

3. Monitoruj krzywe uczenia

Wykreślaj stratę treningową i walidacyjną po każdej epoce. To najcenniejsze źródło informacji o stanie modelu.

4. Używaj walidacji krzyżowej

K-fold CV daje pewniejszą ocenę generalizacji niż pojedynczy split train/validation.

5. Ensemble

Łączenie predykcji wielu modeli (Random Forest, bagging, stacking) redukuje wariancję i poprawia generalizację.

Overfitting w sieciach neuronowych vs klasycznym ML

Głębokie sieci neuronowe mają miliony (lub miliardy) parametrów — znacznie więcej niż próbek treningowych. Klasyczna teoria sugerowałaby katastrofalny overfitting. W praktyce głębokie sieci generalizują znacznie lepiej niż oczekiwano — zjawisko zwane double descent:

  1. Wzrost złożoności → początkowo overfitting
  2. Dalszy wzrost złożoności → niespodziewanie lepsze generalizowanie

Hipotezy: implicit regularization (SGD preferuje „proste" rozwiązania), lottery ticket hypothesis (sieć zawiera wiele dobrych subsieci), flat minima (SGD preferuje szerokie minima, które lepiej generalizują).

Podsumowanie

Overfitting i underfitting to dwa bieguny spektrum dopasowania modelu. Kluczem jest znalezienie równowagi przez odpowiednią złożoność modelu, dostateczną ilość danych i techniki regularyzacji. Monitorowanie krzywych uczenia, walidacja krzyżowa i systematyczne eksperymentowanie to fundamenty skutecznego treningu modeli ML.