Gradientni spust

globoko učenje
matematika
gradientni spust
Gradientni spust cover image

Uvod

Predstavljajte si, da imamo funkcijo f(x)f(x) in bi radi našli njen minimum. Kaj bi naredil?

Preprosto kajne? Rešiti moramo samo naslednjo enačbo:

f(x)=0f'(x) = 0

Stvar je v tem, da iskanje formule ff' 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 ff'.

Razvijmo nekaj intuicije

Recimo, da imamo funkcijo f z ustreznim grafom:

Graph 1

Začnimo z naključno točko x0x_{0}. Cilj je premakniti to točko in jo vse bolj približati xx*, tako da je f(f'(x*)=0) = 0. Torej lahko problem razdelimo na dva dela:

  • V katero smer naj premaknemo točko xx? 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 x0x_{0} desno od optimalne točke xx*, gre njena tangenta navzgor.

  • ko je točka x0x_{0} desno od optimalne točke xx*, gre njena tangenta navzdol.

Smer črte je določena z znakom njenega naklona:

  • Črta gre navzgor     \implies, da je naklon aa pozitiven.

  • Premica gre navzdol     \implies, da je naklon aa negativen.

Upoštevajte, da: \

Naklon tangente funkcije v določeni točki x0x_{0} ni večji od odvoda v tej točki 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})

Kot odgovor na vprašanje "Kam naj premaknemo x0x_{0}?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} desno od xx*     \implies x0x_{0} moramo premakniti v levo.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} levo od xx*     \implies x0x_{0} moramo premakniti v desno.

Koraki

Zdaj pa drugo vprašanje, Koliko naj premaknemo x0x_{0}?

Oglejte si naslednje primere:

Graph 4

Graph 5

Lahko sklepamo, da:

  • x0x_{0} je blizu xx* => Naklon tangente je majhen => f(x0)f'(x_{0}) je majhen.

  • x0x_{0} je oddaljen od xx* => Naklon tangente je velik => f(x0)f'(x_{0}) je velik.

Z odgovorom na obe vprašanji smo ugotovili, da nam le poznavanje odvoda v točki x0x_{0} lahko da veliko vpogleda v smer in oddaljenost optimalne točke x0x_{0}.

Gradientni spust

Gradientni spust je formulacija odgovorov na prejšnji dve vprašanji. To je optimizacijski iterativni algoritem, ki približa najmanj xx* funkcije, začenši z naključno začetno točko x0x_{0}. Algoritem je naveden kot sledi:

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

kje:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} ni več kot odvod ff v točki xnx*{n}.

  • lrlr je pozitivna konstanta, ki določa, kako veliki bodo koraki.

Upoštevajte, da:

  • xnx_{n} je desno od xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnpozitivnix_{n+ 1} = x_{n} - pozitivni => xnx_{n} se premakne v levo.

  • xnx_{n} je levo od xx* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+pozitivnox*{n +1} = x*{n} + pozitivno => xnx_{n} se premakne v desno.

  • xnx_{n} blizu xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} blizu 00 => Majhna posodobitev na xnx_{ n}.

Kviz

  • Kdaj se gradientni spust preneha ponavljati:

  • Ko je xnx_{n} dovolj majhen.

  • Ko je xnx_{n} blizu x0x_{0}.

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

  • Kako izberemo x0x_{0}:

  • Izberemo ga naključno. XXX

  • Vzamemo ga v bližini xnx{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 © 2025 Vse pravice pridržane.