Gradientni spust
Posodobljeno na September 03, 2024 3 minute preberite

Uvod
Predstavljajte si, da imamo funkcijo $f(x)$ in bi radi našli njen minimum. Kaj bi naredil?
Preprosto kajne? Rešiti moramo samo naslednjo enačbo:
$$f’(x) = 0$$
Stvar je v tem, da iskanje formule $f’$ ni vedno enostavno, saj so ponavadi izjemno zapletene, zlasti pri globokem učenju, kjer imamo opravka s kompleksnimi funkcijami. Zato moramo najti drugo metodo, ki nam lahko zagotovi minimum funkcije, ne da bi bilo treba najti formulo odvoda $f’$.
Razvijmo nekaj intuicije
Recimo, da imamo funkcijo f z ustreznim grafom:
Začnimo z naključno točko $x_{0}$. Cilj je premakniti to točko in jo vse bolj približati $x*$, tako da je $f’($x*$) = 0$. Torej lahko problem razdelimo na dva dela:
-
V katero smer naj premaknemo točko $x$? Levo ali desno ?
-
Koliko naj ga premaknemo?
Smer
Razvijmo nekaj intuicije, da bi odgovorili na prvo vprašanje. Oglejte si naslednjo točko:
Upoštevajte to:
-
ko je točka $x_{0}$ desno od optimalne točke $x*$, gre njena tangenta navzgor.
-
ko je točka $x_{0}$ desno od optimalne točke $x*$, gre njena tangenta navzdol.
Smer črte je določena z znakom njenega naklona:
-
Črta gre navzgor $\implies$, da je naklon $a$ pozitiven.
-
Premica gre navzdol $\implies$, da je naklon $a$ negativen.
Upoštevajte, da: \
Naklon tangente funkcije v določeni točki $x_{0}$ ni večji od odvoda v tej točki $f’(x_{0})$:
$$ tangent(x*{0}): g(x) = f’(x*{0}).(x-x*{0}) + f(x*{0}) $$
Kot odgovor na vprašanje “Kam naj premaknemo $x_{0}$?”:
-
$f’(x_{0}) < 0$ $\implies$ $x_{0}$ desno od $x*$ $\implies$ $x_{0}$ moramo premakniti v levo.
-
$f’(x_{0}) > 0$ $\implies$ $x_{0}$ levo od $x*$ $\implies$ $x_{0}$ moramo premakniti v desno.
Koraki
Zdaj pa drugo vprašanje, Koliko naj premaknemo $x_{0}$?
Oglejte si naslednje primere:
Lahko sklepamo, da:
-
$x_{0}$ je blizu $x*$ => Naklon tangente je majhen => $f’(x_{0})$ je majhen.
-
$x_{0}$ je oddaljen od $x*$ => Naklon tangente je velik => $f’(x_{0})$ je velik.
Z odgovorom na obe vprašanji smo ugotovili, da nam le poznavanje odvoda v točki $x_{0}$ lahko da veliko vpogleda v smer in oddaljenost optimalne točke $x_{0}$.
Gradientni spust
Gradientni spust je formulacija odgovorov na prejšnji dve vprašanji. To je optimizacijski iterativni algoritem, ki približa najmanj $x*$ funkcije, začenši z naključno začetno točko $x_{0}$. Algoritem je naveden kot sledi:
$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$
kje:
-
$ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ ni več kot odvod $f$ v točki $x*{n}$.
-
$lr$ je pozitivna konstanta, ki določa, kako veliki bodo koraki.
Upoštevajte, da:
-
$x_{n}$ je desno od $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - pozitivni $ => $x_{n}$ se premakne v levo.
-
$x_{n}$ je levo od $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + pozitivno $ => $x_{n}$ se premakne v desno.
-
$x_{n}$ blizu $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ blizu $0$ => Majhna posodobitev na $x_{ n}$.
Kviz
-
Kdaj se gradientni spust preneha ponavljati:
-
Ko je $x_{n}$ dovolj majhen.
-
Ko je $x_{n}$ blizu $x_{0}$.
-
Ko je $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX
-
Kako izberemo $x_{0}$:
-
Izberemo ga naključno. XXX
-
Vzamemo ga v bližini $x{n}$.
-
Odvisno od problema.
-
Zakaj potrebujemo gradientni spust:
-
Ker računalniki niso dovolj zmogljivi za izračun derivatov.
-
Ker je izredno težko najti formule izpeljank modelov globokega učenja. XXX
-
Ker imajo funkcije več kot en lokalni minimum.