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“.
1. Čo to je a ako si to predstaviť
Chyba (loss): číslo, ktoré hovorí, ako zle model práve odpovedal (napr. ako ďaleko je predikcia od reality).
Parametre: „gombíky“ v modeli (váhy), ktorými sa dá meniť správanie.
Gradient: smer a sila, ktorým sa máš pohnúť, aby chyba klesala najrýchlejšie (lokálne).
Analógia s kopcom: stojíš na svahu v hmle. Spravíš malý krok smerom, kde je zem najstrmšie dole. Opakuješ, kým sa už „nešmýka“.
2. Ako to funguje krok za krokom
1) Začneš s nejakými parametrami: často náhodne (alebo rozumne inicializované).
2) Model urobí predikciu: napr. klasifikuje obrázok alebo doplní ďalšie slovo.
3) Spočíta sa chyba: porovnáš predikciu s pravdou (labelom) a získaš loss.
4) Spočíta sa gradient: zistíš, ako sa loss zmení, keď jemne pohneš každým parametrom (v neurónkach typicky cez backpropagation).
5) Urobíš update: posunieš parametre proti gradientu (lebo chceš ísť „dole“):
- update pravidlo: nové_parametre = staré_parametre − learning rate × gradient
6) Opakuješ veľa krát: cez veľa dávok dát (batchov), kým sa tréning stabilizuje.
Learning rate (krok): ak je krok príliš veľký, môžeš „preskakovať“ minimum a tréning sa rozbije; ak je príliš malý, učí sa to pomaly.
Lokálnosť: gradient ti hovorí, čo je najlepšie urobiť tu a teraz, nie globálne pre celý priestor parametrov.
Realita v hlbokých sieťach: často nekončíš v „dokonalom“ minime, ale v dobrej oblasti, kde model funguje prakticky.
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 prakticky neexistovali v dnešnej podobe.
Klasické ML aj moderné LLM: používa sa pri lineárnej/logistickej regresii, pri CNN/Transformeroch, aj pri dolaďovaní modelov (fine-tuning).
Embeddings a odporúčania: optimalizácia podobností a rankingov je často gradientový problém.
RLHF a „učíme model preferenciám“: aj tu sa bežne používajú gradientové kroky (len je to celé zabalené do zložitejšieho procesu).
4. Varianty a vylepšenia, s ktorými sa v praxi stretneš
Batch Gradient Descent: gradient počítaš z celého datasetu naraz.
Plus: stabilnejší smer.
Mínus: pomalé a pamäťovo náročné.
Stochastic Gradient Descent (SGD): gradient počítaš z jednej vzorky.
Plus: rýchle kroky, vie „uniknúť“ zlým miestam.
Mínus: šum, viac kolíše.
Mini-batch (najčastejšie): kompromis — gradient z malej dávky (napr. 32–1024 vzoriek).
- Plus: efektívne na GPU, rozumný kompromis šum/stabilita.
Momentum: pridáva „zotrvačnosť“ — keď sa dlhšie tlačíš dobrým smerom, ideš rýchlejšie.
Nesterov momentum: podobné, ale „pozrie sa dopredu“, často trochu stabilnejšie.
Adaptívne optimalizéry: automaticky menia veľkosť krokov podľa správania gradientov.
AdaGrad: viac kroti kroky pre často sa meniace parametre (hodí sa pre riedke dáta, ale vie sa príliš „spomaliť“).
RMSProp: stabilizuje learning rate cez kĺzavý priemer.
Adam / AdamW: veľmi populárne, dobrý default pre veľa úloh; AdamW oddeľuje weight decay (prakticky dôležité pri veľkých modeloch).
Learning rate schedule: learning rate sa mení v čase.
Warmup: na začiatku pomalšie, aby sa tréning nerozbil.
Decay (napr. cosine): postupne znižuje krok, aby sa model „dolaďoval“ jemnejšie.
5. Výhody a obmedzenia
Výhody
Jednoduchosť: konceptuálne aj implementačne je to priamočiare.
Škálovanie: funguje aj pri obrovskom počte parametrov (milióny až miliardy).
Praktická účinnosť: s dobrými trikmi (AdamW, schedule, normalizácie) trénuje veľké modely spoľahlivo.
Obmedzenia
Citlivosť na nastavenia: learning rate, batch size a ďalšie hyperparametre rozhodujú, či sa model naučí alebo „zblázni“.
Potrebná diferencovateľnosť: typicky potrebuješ funkciu chyby, ktorá sa dá derivovať (v praxi sa to obchádza rôznymi trikmi, ale princíp zostáva).
Problémy s gradientmi: pri hlbokých sieťach môže gradient miznúť (model sa prestane učiť) alebo explodovať (update je príliš veľký).
Negarantuje globálne optimum: často nájde „dosť dobré“ riešenie, nie najlepšie možné.
6. Praktické použitie a tipy
Learning rate je prvá páčka: ak tréning diverguje (loss rastie alebo skáče), znižuj learning rate; ak sa nič nedeje, jemne zvyšuj alebo zmeň schedule.
Sleduj tréning vs. validáciu: keď tréningová chyba klesá, ale validačná rastie, typicky preučuješ (overfitting).
Gradient clipping: keď sú gradienty občas extrémne, clipping ich „zreže“ a stabilizuje tréning (časté pri RNN/Transformeroch).
Normalizácie a škálovanie vstupov: správne škálované dáta a vrstvy (napr. layer norm) robia gradientový zostup oveľa „hladší“.
Batch size nie je len o rýchlosti: väčší batch dá stabilnejší gradient, ale môže meniť generalizáciu; menší batch pridá šum, ktorý niekedy pomáha.
Pri fine-tuningu (aj LoRA):
malý learning rate,
warmup,
často AdamW,
a dobré je mať early stopping (zastaviť, keď sa zlepšovanie skončí).
Čo to znamená pre bežného používateľa AI: keď niekde klikneš „train“, „fine-tune“ alebo „optimize“, v pozadí takmer určite beží gradient descent (alebo jeho moderný variant). Preto sú tréningy citlivé na nastavenia a niekedy dve rovnaké tréningy nedopadnú úplne rovnako.
Zhrnutie
Gradient Descent je spôsob, ako model znižuje chybu postupnými malými krokmi „dole kopcom“ v priestore parametrov.
V praxi je kľúčové nastavenie learning rate, batch size a stabilizačných trikov (momentum, AdamW, schedule, clipping).
Najčastejšie sa používa mini-batch tréning, lebo dobre sedí na GPU a dáva rozumný kompromis medzi šumom a stabilitou.
Hoci negarantuje globálne optimum, v kombinácii s modernými optimalizérmi je to pracovný kôň tréningu dnešných neurónových sietí.