Gradient Descent: ako sa model učí z chýb

Gradient Descent je základná metóda, ako „učiť" model: opakovane upravuje svoje parametre tak, aby znižoval chybu (loss). Predstav si to ako zostup z kopca v hmle — nevidíš celé údolie, ale vieš, ktorým smerom je to práve teraz najviac „dole". Táto jednoduchá myšlienka stojí za trénovaním všetkého od jednoduchej logistickej regresie až po modely s biliónom parametrov, ktoré bežia v roku 2026.


1. Čo to je a ako si to predstaviť

  • Chyba (loss): číslo, ktoré hovorí, ako zle model práve odpovedal. Napríklad ako ďaleko je predikcia od reality, alebo ako nepravdepodobný bol správny token.

  • Parametre: „gombíky" v modeli (váhy a biasy), ktorými sa dá meniť správanie siete. Moderné LLM majú desiatky miliárd takýchto gombíkov.

  • Gradient: smer a sila, ktorým sa máš pohnúť, aby chyba klesala najrýchlejšie — lokálne, nie globálne. Matematicky je to vektor čiastočných derivácií loss funkcie podľa každého parametra.

  • Analógia s kopcom: stojíš na svahu v hmle. Spravíš malý krok smerom, kde je zem najstrmšie dole. Opakuješ, kým sa already „nešmýka". Hustota hmly simuluje fakt, že nevidíš celý priestor — len lokálny sklon.

  • Priestor parametrov: pri reálnom modeli nie je priestor 2D kopec, ale hyperpriestorový útvar s miliardami dimenzií. Vizualizácia nefunguje, matematika áno.


2. Ako to funguje krok za krokom

  1. Začneš s nejakými parametrami: často náhodne (alebo rozumne inicializované — napr. Kaiming / He init pre ReLU siete, Xavier pre iné).

  2. Model urobí predikciu: napríklad klasifikuje obrázok, doplní ďalšie slovo alebo ohodnotí, ktorá odpoveď je lepšia.

  3. Spočíta sa chyba: porovnáš predikciu s pravdou (labelom) a získaš loss — jedno číslo.

  4. Spočíta sa gradient: zistíš, ako sa loss zmení, keď jemne pohneš každým parametrom. V neurónových sieťach toto rieši backpropagation — efektívna aplikácia reťazového pravidla derivácií cez celú sieť.

  5. Urobíš update parametrov: posunieš parametre proti gradientu (lebo chceš ísť „dole"):

    nové_parametre = staré_parametre − learning_rate × gradient
    
  6. Opakuješ veľa krát: cez veľa dávok dát (batchov), cez mnoho epoch, kým sa tréning stabilizuje.

Kľúčové pojmy:

  • Learning rate (krok): ak je príliš veľký, môžeš „preskakovať" minimum a tréning diverguje; ak je príliš malý, učenie je pomalé alebo uviazneš v zlom mieste.
  • Lokálnosť: gradient hovorí, čo je najlepšie urobiť tu a teraz, nie globálne pre celý priestor. Preto môžeš skončiť v lokálnom minime.
  • Realita v hlbokých sieťach: pri veľkých modeloch sa skoro nikdy nekončí v „dokonalom" minime. Typicky sa nájde dobrá sedlová oblasť (saddle point region) alebo flat minimum, kde model generalizuje dobre. Výskum z rokov 2024–2025 naznačuje, že pri dostatočne veľkých modeloch je väčšina lokálnych miním porovnateľne dobrých.

3. Prečo je to dôležité a kde sa používa

  • Základ tréningu neurónových sietí: bez gradientového učenia by moderné deep learning modely neexistovali. Každý GPT, Claude, Gemini alebo Llama bol natrénovaný gradientovým zostupom.

  • Klasické ML aj moderné LLM: používa sa pri lineárnej a logistickej regresii, pri CNN, Transformeroch, State Space Models (Mamba), aj pri dolaďovaní modelov (fine-tuning, LoRA, QLoRA).

  • Embeddings a odporúčacie systémy: optimalizácia podobností, rankingov a reprezentácií je gradientový problém.

  • RLHF a preference learning: aj pri tréning s ľudskou spätnou väzbou (RLHF, DPO, GRPO) bežia gradientové kroky — len sú zabalené do zložitejšieho procesu s reward modelom alebo priamou optimalizáciou.

  • Multimodálne modely: obrázky, zvuk, video, kód — všetko sa trénuje tým istým mechanizmom.


4. Varianty a vylepšenia, s ktorými sa v praxi stretneš

Podľa veľkosti dávky

  • Batch Gradient Descent: gradient počítaš z celého datasetu naraz. Stabilný smer, ale pomalé a pamäťovo náročné — pri milión vzorkách nepoužiteľné.

  • Stochastic Gradient Descent (SGD): gradient z jednej vzorky. Rýchle kroky, vie „uniknúť" zlým miestam vďaka šumu, ale kolíše.

  • Mini-batch (najčastejšie): kompromis — gradient z malej dávky (typicky 32–4096 vzoriek, pri LLM niekedy viac). Efektívne na GPU/TPU, rozumný kompromis šum/stabilita. Toto je štandard.

Vylepšenia a moderné optimalizéry

  • Momentum: pridáva „zotrvačnosť" — keď sa dlhšie tlačíš dobrým smerom, ideš rýchlejšie. Prekoná lokálne plošiny (plateaus).

  • Nesterov Accelerated Gradient (NAG): podobné ako momentum, ale gradient počíta z „pohľadu dopredu" — mierne stabilnejšie konverguje.

  • AdaGrad: adaptívne znižuje learning rate pre frekventne aktualizované parametre. Dobrý pre riedke dáta (embeddingy), ale learning rate sa môže príliš rýchlo znižovať.

  • RMSProp: stabilizuje learning rate cez exponenciálny kĺzavý priemer štvorca gradientov. Riešenie problému AdaGradu.

  • Adam: kombinácia momentu a RMSProp. Veľmi populárny default. Rýchlo konverguje, robustný na výber learning rate.

  • AdamW: Adam s oddeleným weight decay. Kľúčový rozdiel: weight decay neprechádza cez adaptívne škálovanie, čo je matematicky správnejšie. Štandard pri trénovaní Transformerov.

  • Lion (2023): optimalizér od Google Brain, pracuje len so znamienkom gradientu (+/−). Pamäťovo úspornejší ako Adam, pri veľkých modeloch porovnateľná kvalita.

  • Muon (2024–2025): vychádza z Nesterov + ortogonalizácia cez Newton-Schulz iteráciu. V roku 2025 získal pozornosť pri trénovaní LLM (použitý napríklad pri Moonshot AI Kimi k1.5). Rýchlejšia konvergencia pri menšom počte krokov.

  • Schedule-free AdamW (2024): Meta FAIR prináša optimalizér, ktorý nevyžaduje learning rate schedule. Automaticky sa adaptuje bez warmup/decay fázy.


5. Prehľad najpoužívanejších optimalizérov

Optimalizér Adaptívny LR Momentum Pamäť (vs SGD) Typické použitie
SGD Nie Voliteľné Klasické CV úlohy, ResNet
SGD + Nesterov Nie Áno 1–2× CV benchmarky, dolaďovanie
AdaGrad Áno Nie Riedke embeddingy, NLP
RMSProp Áno Voliteľné RNN, reinforcement learning
Adam Áno Áno Všeobecný default
AdamW Áno Áno LLM, fine-tuning, Transformery
Lion Čiastočne Áno Veľké modely, efektívnosť pamäte
Muon Áno (matica) Áno 3–4× LLM pre-training, rýchla konvergencia
Schedule-free AdamW Áno Áno Keď nechceš ladiť schedule

Pamäť je udaná relatívne voči prostému SGD bez momentu. Pri miliardách parametrov je rozdiel 3× vs 2× veľmi dôležitý.


6. Learning rate schedule: ako meniť rýchlosť v čase

Pevný learning rate je suboptimálny — prax ukázala, že meniť ho v čase zásadne zlepšuje výsledky.

  • Warmup: na začiatku tréningu začneš s malým learning rate a postupne ho zvyšuješ (typicky prvých 1–5 % krokov). Dôvod: na začiatku sú gradienty nestabilné a veľký krok by rozhodil tréning.

  • Cosine decay: po warme sa learning rate plynule znižuje podľa kosínusovej krivky. Štandard pri LLM trénovaní.

  • Linear decay: jednoduchšia alternatíva — lineárne znižovanie. Menej hladké, ale ľahšie nastaviteľné.

  • Constant + cooldown: ModernBERT a niektoré novšie modely (2024–2025) používajú konštantný LR s krátkym „cooldown" na konci — jednoduchší schedule, porovnateľné výsledky.

  • Cyclic LR / 1cycle: learning rate osciluje cyklicky. Populárne v CV pri kratšom trénovaní.

  • Warmup a cosine v kóde:

from torch.optim.lr_scheduler import CosineAnnealingLR, LinearLR
from torch.optim.lr_scheduler import SequentialLR

warmup = LinearLR(optimizer, start_factor=0.01, end_factor=1.0, total_iters=warmup_steps)
cosine = CosineAnnealingLR(optimizer, T_max=total_steps - warmup_steps)
scheduler = SequentialLR(optimizer, schedulers=[warmup, cosine], milestones=[warmup_steps])

7. Výhody a obmedzenia

Výhody

  • Jednoduchosť: konceptuálne aj implementačne priamočiare — gradient + krok.
  • Škálovanie: funguje pri stovkách miliárd parametrov; distribuovaný tréning cez stovky GPU len rozdeľuje výpočet gradientu.
  • Praktická účinnosť: s dobrými trikmi (AdamW, schedule, normalizácie, gradient clipping) trénuje spoľahlivo aj tie najväčšie modely.
  • Automatická diferenciácia: frameworky (PyTorch, JAX) počítajú gradienty automaticky — nepíšeš derivácie ručne.

Obmedzenia

  • Citlivosť na hyperparametre: learning rate, batch size, schedule, weight decay — zlé nastavenie môže zničiť tréning.
  • Potrebná diferencovateľnosť: loss funkcia musí byť derivovateľná (alebo aspoň subgradientovateľná). Diskrétne operácie (napr. vzorkovanie tokenov) sa obchádzajú trikmi (REINFORCE, Gumbel-Softmax).
  • Problémy s gradientmi: pri hlbokých sieťach môže gradient miznúť (vanishing gradient — učenie prestane) alebo explodovať (exploding gradient — update je enormný). Residual connections, normalizácie a gradient clipping to riešia.
  • Negarantuje globálne optimum: nájde „dosť dobré" riešenie, nie nevyhnutne najlepšie možné. V praxi to pre veľké modely nie je problém.
  • Pamäťová náročnosť: pri miliardách parametrov a optimalizéri Adam potrebuješ 3× pamäť len pre stav optimalizéra — nie pre samotné váhy.

8. Praktické použitie a tipy

  • Learning rate je prvá páčka: ak tréning diverguje (loss rastie alebo skáče), znižuj LR. Ak stagnuje príliš rýchlo, skús zvýšiť alebo predĺžiť warmup.

  • Sleduj tréningovú vs. validačnú chybu: keď tréningová chyba klesá, ale validačná rastie, preučuješ (overfitting). Zvýš weight decay, pridaj dropout alebo zastaviť skôr.

  • Gradient clipping: keď sú gradienty občas extrémne (napr. pri RNN alebo počas nestabilnej fázy tréningu Transformerov), clipping ich „zreže" na maximálnu normu:

torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
  • Normalizácie: Layer Norm, RMS Norm (používa sa v Llama) — robí gradientový zostup oveľa „hladším". Bez normalizácií by hlboké siete bolo oveľa ťažšie trénovať.

  • Batch size a learning rate: keď zdvojnásobíš batch size, typicky zdvojnásobíš aj learning rate (linear scaling rule). Nie vždy platí presne, ale je to dobrý štartovací bod.

  • Mixed precision tréning (bf16/fp8): moderné tréningy bežia v bf16 alebo fp8 pre rýchlosť a úsporu pamäte. Gradienty sa akumulujú vo vyššej presnosti (fp32), aby sa predišlo numerickým chybám.

  • Gradient checkpointing: keď nemáš dostatok pamäte GPU, ukladáš len niektoré aktivácie a ostatné prepočítaváš pri backprop. Pomalšie, ale umožňuje trénovať väčšie modely.

  • Pri fine-tuningu (LoRA, QLoRA, full fine-tuning):

    • Malý learning rate (typicky 1e-5 až 5e-4, závisí od metódy)
    • Warmup (aspoň 3–5 % krokov)
    • AdamW s weight decay 0.01–0.1
    • Early stopping alebo evaluácia na validačnom sete
    • Gradient clipping (max_norm=1.0 je rozumný default)
  • Čo to znamená pre bežného používateľa AI: keď klikneš „train", „fine-tune" alebo „optimize" v akomkoľvek nástroji, v pozadí beží gradient descent (alebo jeho variant). Preto sú tréningy citlivé na nastavenia a rovnaký dataset s rôznymi hyperparametrami môže dať veľmi odlišné výsledky.


9. Ako to vyzerá v kóde

Základná tréningová slučka v PyTorch — jeden krok gradientového zostupu:

optimizer = torch.optim.AdamW(model.parameters(), lr=3e-4, weight_decay=0.01)
scheduler = get_cosine_schedule_with_warmup(optimizer, num_warmup_steps=100, num_training_steps=1000)

for x, y in dataloader:
    pred = model(x)
    loss = loss_fn(pred, y)           # ako veľmi sa mýlim

    loss.backward()                   # gradient cez backpropagation
    torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)  # clipping
    optimizer.step()                  # parametre -= lr * (upravený gradient)
    scheduler.step()                  # posun schedule
    optimizer.zero_grad()             # reset pred ďalšou dávkou

optimizer (tu AdamW) v sebe skrýva momentum, adaptívne kroky a weight decay — preto v praxi nepíšeš w -= lr * grad ručne.

Čo robí každý riadok:

Riadok Čo sa stane
loss.backward() PyTorch prepočíta gradient pre každý parameter (reťazové pravidlo)
clip_grad_norm_ Ak je norma gradientu > 1.0, všetky gradienty sa proporcionálne zmenšia
optimizer.step() Každý parameter sa posunie podľa gradientu a stavu optimalizéra
scheduler.step() Learning rate sa aktualizuje podľa schedule (warmup/decay)
zero_grad() Gradienty sa vynulujú — inak by sa akumulovali cez batche

10. Čo je nové v 2024–2026

Pole optimalizácie sa hýbe rýchlo. Niekoľko dôležitých trendov:

  • Muon optimizer: vychádza z Nesterov SGD s ortogonalizáciou váhových matíc (Newton-Schulz). Ukazuje rýchlejšiu konvergenciu pri trénovaní jazykových modelov. V roku 2025 použitý v niekoľkých open-source LLM projektoch.

  • Schedule-free optimalizery: Meta FAIR (Aaron Defazio, 2024) ukázal, že schedule nie je vždy potrebný — optimalizér sám si udržiava pohyblivý priemer, ktorý nahrádza decay. Menej hyperparametrov na ladenie.

  • SOAP (2024): kombinuje Shampoo (druhého rádu) s Adamom. Druhý rád berie do úvahy krivosť loss funkcie (nie len sklon), čo dáva lepšie kroky — ale za cenu väčšej pamäte a výpočtu.

  • fp8 tréning: NVIDIA H100/H200 a nové akcelerátory umožňujú tréning v 8-bitovej presnosti. Gradienty a aktivácie v fp8, starostlivé škálovanie zamedzuje strate presnosti. Vyžaduje sofistikovanejšie správanie optimalizéra.

  • Distribuovaný optimizer state (ZeRO-3, FSDP): pri trénovaní 70B+ modelov sa stav optimalizéra (momenty Adama) sharduje cez GPU. PyTorch FSDP (Fully Sharded Data Parallel) je v roku 2025–2026 praktický štandard.

  • Výskum loss landscape: novší výskum (2024–2025) ukazuje, že pri dostatočne veľkých modeloch je povrch loss funkcie prekvapivo „hladký" a lokálne minimá sú si takmer rovnocenné. Čo rozhoduje, nie je presné minimum, ale to, či model konverguje do širokého vs. úzkeho minima (wide minima generalizujú lepšie).


11. Súvislosti

  • Deep Learning: gradientový zostup je motor jeho tréningovej slučky — bez neho by deep learning neexistoval.
  • Overfitting: keď tréningová chyba klesá, ale validačná rastie — signál zastaviť (early stopping) alebo pridať regularizáciu.
  • Inductive bias: weight decay je forma biasu smerom k jednoduchším riešeniam (uprednostňuje malé váhy).
  • Backpropagation: algoritmus, ktorý efektívne počíta gradient vo všetkých parametroch siete — neoddeliteľný partner gradient descent.
  • Inferencia: opak tréningu — používanie už naučených váh bez ďalšej aktualizácie.
  • LoRA a fine-tuning: parameter-efficient metódy, ktoré stále bežia na gradient descent, len aktualizujú malú podmnožinu parametrov.

Zhrnutie

  • Gradient Descent je spôsob, ako model znižuje chybu postupnými malými krokmi „dole kopcom" v priestore parametrov — opakovaný výpočet gradientu a update váh.

  • V praxi dominuje mini-batch tréning s AdamW optimalizérom a warmup + cosine decay scheduleom — táto kombinácia je štandard pri trénovaní Transformerov v roku 2026.

  • Kľúčové nastavenia: learning rate (najdôležitejšia páčka), batch size, weight decay, gradient clipping a správny schedule.

  • Nové optimalizéry (Muon, Schedule-free, SOAP) posúvajú hranice efektívnosti, ale AdamW ostáva spoľahlivým defaultom pre väčšinu úloh.

  • Hoci gradient descent negarantuje globálne optimum, v kombinácii s modernými trikmi a dostatočne veľkými modelmi je to pracovný kôň, ktorý stojí za každým súčasným AI modelom.