Gradientný zostup

hlboké učenie
matematika
gradientný zostup
Gradientný zostup cover image

Úvod

Predstavme si, že máme funkciu f(x)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)=0f'(x) = 0

Ide o to, že nájsť vzorec ff' 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 ff'.

Vybudujme trochu intuície

Predpokladajme, že máme funkciu f s príslušným grafom:

Graph 1

Začnime s náhodným bodom x0x_{0}. Cieľom je posunúť tento bod a priblížiť ho k xx* tak, aby f(f'(x*)=0) = 0. Takže problém možno rozdeliť na dve časti:

  • Ktorým smerom by sme mali posunúť bod xx? Ľ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:

Graph 2

Graph 3

Poznač si to:

  • keď je bod x0x_{0} napravo od optimálneho bodu xx*, jeho dotyčnica ide hore.

  • keď je bod x0x_{0} napravo od optimálneho bodu xx*, jeho dotyčnica klesá.

Smer čiary je určený znamienkom jej sklonu:

  • Čiara stúpa \implikuje\implikuje sklon aa je pozitívny.

  • Čiara klesá \implikuje\implikuje sklon aa je negatívny.

Všimnite si, že: \

Sklon dotyčnice funkcie v určitom bode x0x_{0} nie je väčší ako derivácia v tomto bode f(x0)f'(x_{0}):

tangent(x0):g(x)=f(x0).(xx0)+f(x0)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úť x0x_{0}?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} napravo od xx*     \implies Musíme posunúť x0x_{0} doľava.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} vľavo od xx*     \implies Potrebujeme presunúť x0x_{0} doprava.

Kroky

Teraz druhá otázka: Koľko by sme mali presunúť x_{0} ?

Pozrite si nasledujúce príklady:

Graph 4

Graph 5

Môžeme konštatovať, že:

  • x0x_{0} je blízko xx* => Sklon dotyčnice je malý => f(x0)f'(x_{0}) je malý.

  • x0x_{0} je vzdialené od xx* => Sklon dotyčnice je veľký => f(x0)f'(x_{0}) je veľký.

Zodpovedaním oboch otázok sme dospeli k záveru, že iba znalosť derivácie v bode x0x_{0} nám môže poskytnúť veľa informácií o smere a vzdialenosti optimálneho bodu x0x_{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 xx* funkcie počnúc náhodným počiatočným bodom x0x_{0}. Algoritmus je uvedený nasledovne:

xn+1=xnlr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

kde:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} nie je viac ako derivácia ff v bode xnx*{n}.

  • lrlr je kladná konštanta, ktorá určuje, aké veľké kroky budú.

Všimni si:

  • xnx_{n} je napravo od xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnkladneˊx_{n+ 1} = x_{n} - kladné => xnx_{n} sa posunie doľava.

  • xnx_{n} je naľavo od xx* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+kladneˊx*{n +1} = x*{n} + kladné => xnx_{n} sa posunie doprava.

  • xnx_{n} takmer xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} takmer 00 => Malá aktualizácia xnx_{ n}.

Kvíz

  • Kedy sa zostup gradientu prestane opakovať:

  • Keď je xnx_{n} dostatočne malý.

  • Keď sa xnx_{n} blíži k x0x_{0} .

  • Keď dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

– Ako vyberieme x0x_{0}:

  • Vyberáme to náhodne. XXX

  • Berieme to v okolí xnx{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.


Career Services background pattern

Kariérne služby

Contact Section background image

Ostaňme v kontakte

Code Labs Academy © 2025 Všetky práva vyhradené.