Gradientni spust

globoko učenje
matematika
gradientni spust
Gradientni spust cover image

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:

Graph 1

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:

Graph 2

Graph 3

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:

Graph 4

Graph 5

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.


Career Services background pattern

Karierne storitve

Contact Section background image

Ostanimo v stiku

Code Labs Academy © 2024 Vse pravice pridržane.