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í.