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
Začneš s nejakými parametrami: často náhodne (alebo rozumne inicializované — napr. Kaiming / He init pre ReLU siete, Xavier pre iné).
Model urobí predikciu: napríklad klasifikuje obrázok, doplní ďalšie slovo alebo ohodnotí, ktorá odpoveď je lepšia.
Spočíta sa chyba: porovnáš predikciu s pravdou (labelom) a získaš loss — jedno číslo.
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ť.
Urobíš update parametrov: posunieš parametre proti gradientu (lebo chceš ísť „dole"):
nové_parametre = staré_parametre − learning_rate × gradientOpakuješ 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é | 1× | Klasické CV úlohy, ResNet |
| SGD + Nesterov | Nie | Áno | 1–2× | CV benchmarky, dolaďovanie |
| AdaGrad | Áno | Nie | 2× | Riedke embeddingy, NLP |
| RMSProp | Áno | Voliteľné | 2× | RNN, reinforcement learning |
| Adam | Áno | Áno | 3× | Všeobecný default |
| AdamW | Áno | Áno | 3× | LLM, fine-tuning, Transformery |
| Lion | Čiastočne | Áno | 2× | Veľké modely, efektívnosť pamäte |
| Muon | Áno (matica) | Áno | 3–4× | LLM pre-training, rýchla konvergencia |
| Schedule-free AdamW | Áno | Áno | 3× | 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.