Gradientný zostup
Aktualizované na September 03, 2024 3 minúty čítania

Úvod
Predstavme si, že máme funkciu $f(x)$ a chceli by sme nájsť jej minimum. Čo by si robil ?
Jednoduché že? Potrebujeme vyriešiť iba nasledujúcu rovnicu:
$$f’(x) = 0$$
Ide o to, že nájsť vzorec $f’$ nie je vždy ľahké, pretože má tendenciu byť extrémne komplikované, najmä v hlbokom učení, kde sa zaoberáme komplexnými funkciami. Musíme teda nájsť inú metódu, ktorá nám poskytne minimum funkcie bez toho, aby sme museli hľadať vzorec derivácie $f’$.
Vybudujme trochu intuície
Predpokladajme, že máme funkciu f s príslušným grafom:
Začnime s náhodným bodom $x_{0}$. Cieľom je posunúť tento bod a priblížiť ho k $x*$ tak, aby $f’($x*$) = 0$. Takže problém možno rozdeliť na dve časti:
-
Ktorým smerom by sme mali posunúť bod $x$? Ľavá alebo pravá ?
-
Koľko by sme to mali posunúť?
Smer
Budujme trochu intuície, aby sme odpovedali na prvú otázku. Pozrite sa na nasledujúci bod:
Poznač si to:
-
keď je bod $x_{0}$ napravo od optimálneho bodu $x*$, jeho dotyčnica ide hore.
-
keď je bod $x_{0}$ napravo od optimálneho bodu $x*$, jeho dotyčnica klesá.
Smer čiary je určený znamienkom jej sklonu:
-
Čiara stúpa $\implikuje$ sklon $a$ je pozitívny.
-
Čiara klesá $\implikuje$ sklon $a$ je negatívny.
Všimnite si, že: \
Sklon dotyčnice funkcie v určitom bode $x_{0}$ nie je väčší ako derivácia v tomto bode $f’(x_{0})$:
$$ tangent(x*{0}): g(x) = f’(x*{0}).(x-x*{0}) + f(x*{0}) $$
Takže ako odpoveď na otázku “Kam by sme sa mali presunúť $x_{0}$?”:
-
$f’(x_{0}) < 0$ $\implies$ $x_{0}$ napravo od $x*$ $\implies$ Musíme posunúť $x_{0}$ doľava.
-
$f’(x_{0}) > 0$ $\implies$ $x_{0}$ vľavo od $x*$ $\implies$ Potrebujeme presunúť $x_{0}$ doprava.
Kroky
Teraz druhá otázka: Koľko by sme mali presunúť x_{0}$ $ ?
Pozrite si nasledujúce príklady:
Môžeme konštatovať, že:
-
$x_{0}$ je blízko $x*$ => Sklon dotyčnice je malý => $f’(x_{0})$ je malý.
-
$x_{0}$ je vzdialené od $x*$ => Sklon dotyčnice je veľký => $f’(x_{0})$ je veľký.
Zodpovedaním oboch otázok sme dospeli k záveru, že iba znalosť derivácie v bode $x_{0}$ nám môže poskytnúť veľa informácií o smere a vzdialenosti optimálneho bodu $x_{0}$.
Gradientný zostup
Gradient zostup je formuláciou odpovedí na predchádzajúce dve otázky. Je to optimalizačný iteračný algoritmus, ktorý aproximuje minimum $x*$ funkcie počnúc náhodným počiatočným bodom $x_{0}$. Algoritmus je uvedený nasledovne:
$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$
kde:
-
$ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ nie je viac ako derivácia $f$ v bode $x*{n}$.
-
$lr$ je kladná konštanta, ktorá určuje, aké veľké kroky budú.
Všimni si:
-
$x_{n}$ je napravo od $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - kladné $ => $x_{n}$ sa posunie doľava.
-
$x_{n}$ je naľavo od $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + kladné $ => $x_{n}$ sa posunie doprava.
-
$x_{n}$ takmer $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ takmer $0$ => Malá aktualizácia $x_{ n}$.
Kvíz
-
Kedy sa zostup gradientu prestane opakovať:
-
Keď je $x_{n}$ dostatočne malý.
-
Keď sa $x_{n}$ blíži k $x_{0}$ .
-
Keď $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX
– Ako vyberieme $x_{0}$:
-
Vyberáme to náhodne. XXX
-
Berieme to v okolí $x{n}$.
-
Závisí to od problému.
-
Prečo potrebujeme gradientný zostup:
-
Pretože počítače nie sú dostatočne výkonné na výpočet derivácií.
-
Pretože je mimoriadne ťažké nájsť odvodené vzorce modelov hlbokého učenia. XXX
-
Pretože funkcie majú viac ako jedno lokálne minimum.