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.

V roku 2026 je overfitting stále jedným z najčastejších problémov, s ktorými sa stretávajú tímy pracujúce na fine-tuningu veľkých jazykových modelov (LLM), klasifikačných úlohách aj pri tréningu multimodálnych systémov. Mení sa len forma: namiesto plytších sietí bojujeme s memorization v modeloch s miliardami parametrov a s benchmark contamination pri hodnotení.


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 alebo kvalitu dát, alebo keď tréning beží príliš dlho — model si začne pamätať výnimky namiesto pravidiel.
  • Opisuje sa v rámci bias–variance tradeoff:
    • Underfitting → vysoký bias (model je príliš jednoduchý, nevidí reálne vzory),
    • Good fit → nízky bias aj variance (model generalizuje správne),
    • Overfitting → vysoká variance (model je príliš citlivý na konkrétne tréningové dáta).
Stav Tréningová chyba Validačná chyba Medzera train–val Generalizácia
Underfitting Vysoká Vysoká Malá Slabá
Good fit Nízka Nízka Malá Dobrá
Overfitting Veľmi nízka Stredná–vysoká Veľká Slabá

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že interiér = mačka".

Dvojitý zostup (double descent): V moderných overparametrizovaných modeloch sa objavuje fenomén zvaný double descent — pri extrémne veľkej kapacite modelu môže validačná chyba po prvotnom náraste opäť klesnúť. Tento jav je pozorovaný najmä pri veľkých neurónových sieťach a transformer modeloch, avšak nie je spoľahlivou záchranou pre bežné projekty — závisí od konkrétnej architektúry, dát a tréningu.

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 a diagnostika

Ako to spoznáš v praxi:

  • Veľká medzera medzi tréningovou a validačnou presnosťou (alebo F1, AUC, BLEU…).
  • 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 na vstupe → iná predikcia.
  • Pri LLM: model doslova recituje vety z tréningových dát namiesto toho, aby generalizoval odpovede.

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),
  • pri LLM: memorization môže byť aj bezpečnostným a súkromným rizikom — model môže reprodukovať tréningové dáta vrátane citlivých informácií.

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, nekonsistentné anotácie).
  • Príliš veľký model (veľa parametrov) v kombinácii s dlhým tréningom.
  • Data leakage (únik informácie):
    • rovnaké alebo veľmi podobné príklady v tréningu aj testovaní,
    • nesprávne normalizácie alebo feature engineering (napr. použitie informácie z budúcnosti pri časových dátach),
    • benchmark contamination — problém, ktorý v rokoch 2025–2026 zasiahol hodnotenie LLM modelov, keď tréningové dáta obsahovali otázky zo štandardných benchmarkov.
  • Nesprávny split (napr. časové dáta miešané náhodne namiesto „minulosť → budúcnosť").
  • Príliš agresívna optimalizácia — nízke learning rate s veľa epochami bez early stopping.
  • Malý fine-tuning dataset — pri LLM stačí niekoľko stoviek príkladov na to, aby model začal memorovať namiesto učenia.

5. Detekcia a monitoring

Samotné tréningové logy nestačia — overfitting treba aktívne monitorovať aj počas tréningu aj po nasadení.

Metriky, ktoré treba sledovať:

Metrika Čo prezradí
train_loss vs. val_loss Základný signál — rastúca medzera je problém
Presnosť per-class Odhalí, ktoré triedy model „recituje" alebo ignoruje
Calibration (ECE, reliability diagram) Je model prehnane sebavedomý vo svojich predikciách?
Perplexita na held-out sete Pri jazykových modeloch kľúčový ukazovateľ
Memorization rate Pri LLM: % výstupov totožných s tréningovými príkladmi
Výkon na out-of-distribution dátach Skutočný test robustnosti modelu

Nástroje (2026):

  • TensorBoard, Weights & Biases (W&B), MLflow — štandardné sledovanie tréningových kriviek v reálnom čase.
  • lm-eval-harness (EleutherAI) — štandardný framework na evaluáciu LLM, pomáha odhaliť memorization a degradáciu po fine-tuningu.
  • Vlastný held-out set s príkladmi, ktoré model nikdy nevidel — zlatý štandard pre všetky typy modelov.
  • Membership inference attacks — technika, ktorou možno otestovať, do akej miery model „zapamätal" konkrétne tréningové príklady.

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

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

  • Použi kvalitný split: train / validation / testtest nech je naozaj posledný, nikdy ho nepoužívaj na rozhodnutia počas tréningu.
  • Pri časových dátach urob time-based split (nikdy nie náhodný).
  • Odhaľ duplicity a podobnosti (takmer rovnaké fotky, rovnaké logy, parafrázy).
  • Zaveď cross-validation, ak je dataset malý — k-fold alebo stratified k-fold pre nevyvážené triedy.
  • Skontroluj data leakage — najčastejšia „tichá" príčina zlých výsledkov na produkcii.

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

  • Zmenši model (menej vrstiev, menšie hidden dim) — nemusíš vždy siahnuť po najväčšom modeli.
  • Early stopping podľa val_loss — zastaviť tréning v bode, keď generalizácia prestáva rásť.
  • Uprav learning rate schedule: cosine annealing s warmupom je v 2026 štandard pri väčšine transformer modelov.

C) Regularizácia

  • Weight decay (L2 regularization) — penalizuje veľké váhy, núti model byť „úspornejší".
  • Dropout — náhodne vypína neuróny počas tréningu, zabraňuje ko-adaptácii.
  • Label smoothing — pri klasifikácii znižuje prílišnú sebavedomosť modelu (namiesto one-hot používa mäkké distribúcie).
  • Gradient clipping — obmedzuje veľkosť aktualizácií, stabializuje tréning.
  • Pridanie šumu do vstupov alebo skrytých vrstiev (noise injection) — núti model učiť sa robustnejšie reprezentácie.

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

  • Obraz: rotácie, výrezy, zmeny svetla, šum, farebné posúvy, horizontálne zrkadlenie…
  • Text: opatrne — parafrázy, back-translation, ale s kontrolou kvality (LLM-generované augmentácie treba filtrovať).
  • Pokročilé: Mixup / CutMix (hlavne v CV), RandAugment.
  • Syntetické dáta generované LLM — v 2026 bežná technika na rozšírenie malých datasetov, ale treba overiť distribúciu a nekopírovať biasy zo zdrojového modelu.

E) Fine-tuning LLM — špeciálne techniky (2026)

Pri fine-tuningu veľkých jazykových modelov je overfitting obzvlášť zákerný, lebo dataset býva malý a model má obrovskú kapacitu.

  • Drž si held-out eval — nepoužívaj ho na tréningové rozhodnutia okrem early stopping.
  • Použi nízku learning rate (typicky 1e-5 až 5e-5) a kratší tréning (1–3 epochy sú normou).
  • LoRA / QLoRA — trénuj len malú podmnožinu parametrov (rank-decomposition matice), čím prirodzene obmedzíš kapacitu bez straty kvality bázového modelu.
  • DPO (Direct Preference Optimization) a ďalšie metódy zarovnávania znižujú memorization priamych supervised signálov.
  • Sleduj, či model nezačne doslova recitovať tréningové odpovede — signál hlbokého preučenia.
  • Daj pozor na memorization citlivých dát — ak dataset obsahuje interné alebo osobné údaje, preučenie je nielen technický, ale aj právny problém.

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
  • Pri LLM: LoRA + nízka LR + held-out eval + sledovanie memorization

Early stopping v kóde

Najlacnejšia obrana proti overfittingu — zastaviť tréning, keď sa validačná chyba prestane zlepšovať:

best_val, patience, wait = float("inf"), 5, 0
for epoch in range(max_epochs):
    train_one_epoch(model)
    val_loss = evaluate(model, val_set)
    if val_loss < best_val:
        best_val, wait = val_loss, 0
        save_checkpoint(model)        # ulož najlepší stav
    else:
        wait += 1
        if wait >= patience:          # val_loss dlho nerastie
            break                     # stop — ďalej už len memoruje

load_checkpoint(model)                # vráť sa k najlepšiemu checkpointu

Súvislosti


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.
  • V ére LLM (2026) pribudli nové riziká: memorization, benchmark contamination a preučenie na malých fine-tuning datasetoch — riešené najmä cez LoRA, DPO a prísny held-out protokol.