Gradientni spust
Posodobljeno na September 03, 20243 minute preberite
Uvod
Predstavljajte si, da imamo funkcijo in bi radi našli njen minimum. Kaj bi naredil?
Preprosto kajne? Rešiti moramo samo naslednjo enačbo:
Stvar je v tem, da iskanje formule 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 .
Razvijmo nekaj intuicije
Recimo, da imamo funkcijo f z ustreznim grafom:
Začnimo z naključno točko . Cilj je premakniti to točko in jo vse bolj približati , tako da je x*. Torej lahko problem razdelimo na dva dela:
-
V katero smer naj premaknemo točko ? 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 desno od optimalne točke , gre njena tangenta navzgor.
-
ko je točka desno od optimalne točke , gre njena tangenta navzdol.
Smer črte je določena z znakom njenega naklona:
-
Črta gre navzgor , da je naklon pozitiven.
-
Premica gre navzdol , da je naklon negativen.
Upoštevajte, da: \
Naklon tangente funkcije v določeni točki ni večji od odvoda v tej točki :
Kot odgovor na vprašanje "Kam naj premaknemo ?":
-
desno od moramo premakniti v levo.
-
levo od moramo premakniti v desno.
Koraki
Zdaj pa drugo vprašanje, Koliko naj premaknemo ?
Oglejte si naslednje primere:
Lahko sklepamo, da:
-
je blizu => Naklon tangente je majhen => je majhen.
-
je oddaljen od => Naklon tangente je velik => je velik.
Z odgovorom na obe vprašanji smo ugotovili, da nam le poznavanje odvoda v točki lahko da veliko vpogleda v smer in oddaljenost optimalne točke .
Gradientni spust
Gradientni spust je formulacija odgovorov na prejšnji dve vprašanji. To je optimizacijski iterativni algoritem, ki približa najmanj funkcije, začenši z naključno začetno točko . Algoritem je naveden kot sledi:
kje:
-
ni več kot odvod v točki .
-
je pozitivna konstanta, ki določa, kako veliki bodo koraki.
Upoštevajte, da:
-
je desno od => => => se premakne v levo.
-
je levo od => => => se premakne v desno.
-
blizu => blizu => Majhna posodobitev na .
Kviz
-
Kdaj se gradientni spust preneha ponavljati:
-
Ko je dovolj majhen.
-
Ko je blizu .
-
Ko je . XXX
-
Kako izberemo :
-
Izberemo ga naključno. XXX
-
Vzamemo ga v bližini .
-
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.
