Overfitting

Overfitting (preučenie) je stav, keď sa AI model počas tréningu „naučí naspamäť" tréningové dáta až príliš dobre, vrátane šumu a náhodných detailov, a potom zlyháva pri generalizácii na nové, nevidené dáta. Výsledok: výborný výkon na tréningovej množine, slabší (alebo nestabilný) výkon v reálnej prevádzke.


1. Definícia

  • Overfitting = vysoká presnosť na tréningu, nízka presnosť mimo tréningu.
  • Typicky vzniká, keď je model príliš komplexný vzhľadom na množstvo/kvalitu dát, alebo keď je tréning nastavený tak, že model ide „na doraz" aj cez šum.
  • Často sa opisuje v rámci bias–variance tradeoff:
    • underfitting → vysoký bias (model je príliš jednoduchý),
    • overfitting → vysoká variance (model je príliš citlivý na konkrétne tréningové dáta).

2. Ako to funguje / prečo k tomu dochádza

Overfitting vzniká, keď optimalizácia (napr. gradient descent) tlačí model k minimálnej chybe na tréningu a model si postupne začne:

  • pamätať špecifické vzory z tréningových dát (napr. konkrétne pozadie na obrázkoch, opakujúce sa frázy v textoch),
  • učiť sa šum (náhodné odchýlky, chyby v anotáciách, nekonzistentné štítky),
  • zneužívať „skratky" (spurious correlations) – napr. „všetky fotky mačiek sú v interiéri, tak interiér = mačka".

Typický signál v tréningu:

  • tréningová strata train_loss ďalej klesá,
  • validačná strata val_loss sa zastaví, začne rásť alebo kolísať,
  • metriky na validácii/teste stagnujú či padajú.

3. Hlavné prejavy, výhody a nevýhody

Ako to spoznáš v praxi:

  • Veľká medzera medzi tréningovou a validačnou presnosťou (alebo F1, AUC…).
  • Model je prehnane sebavedomý na tréningu, ale mimo tréningu robí „divné" chyby.
  • Výkon silne závisí od konkrétneho splitu dát (raz super, raz katastrofa).
  • Citlivosť na drobné zmeny vstupu (malý šum → iná predikcia).

Je na tom niečo „dobré"? Jediné pozitívum je, že overfitting často znamená, že model má kapacitu učiť sa zložité vzory. Problém je, že ich učí nesprávnym spôsobom – namiesto pravidiel sa učí výnimky.

Nevýhody:

  • horšia generalizácia a robustnosť,
  • krehké správanie v produkcii,
  • riziko, že model „naberie" aj nežiaduce vzory (bias, leakage).

4. Najčastejšie príčiny

  • Málo dát alebo slabá variabilita dát (málo príkladov „z reálneho sveta").
  • Nekvalitné dáta (šum, chybné štítky, duplicity).
  • Príliš veľký model (veľa parametrov) a dlhý tréning.
  • Data leakage (únik informácie):
    • rovnaké alebo veľmi podobné príklady v tréningu aj testovaní,
    • nesprávne spravené normalizácie/feature engineering (napr. použitie informácie z budúcnosti).
  • Nesprávny split (napr. časové dáta miešané náhodne namiesto „minulosť → budúcnosť").

5. Praktické riešenia (čo reálne funguje)

A) Lepšie dáta a správne vyhodnocovanie

  • Použi kvalitný split: train/validation/test (a test nech je naozaj posledný).
  • Pri časových dátach urob time-based split.
  • Odhaľ duplicity a podobnosti (napr. takmer rovnaké fotky, rovnaké logy).
  • Zaveď cross-validation, ak je dataset malý.
  • Skontroluj data leakage (najčastejšia „tichá" príčina).

B) Zníženie kapacity / disciplína tréningu

  • Zmenši model (menej vrstiev, menšie hidden dim).
  • Early stopping podľa val_loss (zastaviť tréning v bode, keď generalizácia prestáva rásť).
  • Zníž počet epoch alebo uprav learning rate schedule.

C) Regularizácia (klasika, ktorá často zachráni projekt)

  • Weight decay (L2 regularization)
  • Dropout
  • Label smoothing (pri klasifikácii)
  • Pridanie šumu do vstupov alebo skrytých vrstiev (noise injection)

D) Augmentácie a „rozšírenie" dát

  • Obraz: rotácie, výrezy, zmeny svetla, šum…
  • Text: opatrne – parafrázy, back-translation, ale s kontrolou kvality
  • Pokročilé: Mixup / CutMix (hlavne v CV)

E) Triky pre LLM a fine-tuning

Pri fine-tuningu veľkých jazykových modelov je overfitting častý, lebo dataset býva malý.

  • Drž si held-out eval (nepoužívaj ho na tréningové rozhodnutia okrem early stopping).
  • Použi nižšiu learning rate, kratší tréning, prípadne LoRA s rozumným nastavením.
  • Sleduj, či model nezačne „recitovať" tréningové odpovede doslova.
  • Daj pozor na „memorization" citlivých dát (ak dataset obsahuje interné alebo osobné údaje).

Quick Reference

  • Signál: train_loss ↓ ale val_loss ↑/stagnuje
  • Prvé kroky: skontrolovať split + leakage, zapnúť early stopping
  • Najčastejšie fixy: viac/lepšie dáta, augmentácie, weight decay, dropout, menší model

Zhrnutie

  • Overfitting je, keď model vyhrá tréning, ale prehrá realitu – učí sa šum a výnimky namiesto pravidiel.
  • Najväčšie „zabijaky" sú málo dát, data leakage a príliš dlhý tréning/veľká kapacita.
  • Najpraktickejšia obrana: správny split + leakage kontrola + early stopping + regularizácia + augmentácie.