Gradient nedstigning

Oppdatert den September 03, 2024 Lesetid: 3 minutter


Introduksjon

Tenk deg at vi har en funksjon f(x)f(x) og vi vil gjerne finne dens minimum. Hva ville du gjort ?

Enkelt ikke sant? Vi trenger bare å løse følgende ligning:

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

Saken er at det ikke alltid er lett å finne formelen ff', da de har en tendens til å være ekstremt kompliserte, spesielt i dyp læring hvor vi arbeider med komplekse funksjoner. Så vi må finne en annen metode som kan gi oss minimum av en funksjon uten å måtte finne formelen til den deriverte ff'.

La oss bygge litt intuisjon

La oss anta at vi har en funksjon f med den tilsvarende grafen:

Graph 1

La oss starte med et tilfeldig punkt x0x_{0}. Målet er å flytte dette punktet og gjøre det nærmere og nærmere xx* slik at f(f'(x*)=0) = 0. Så problemet kan deles i to deler:

  • I hvilken retning skal vi flytte punktet xx? Venstre eller høyre ?

  • Hvor mye skal vi flytte den?

Retningen

La oss bygge litt intuisjon for å svare på det første spørsmålet. Ta en titt på følgende punkt:

Graph 2

Graph 3

Noter det:

  • når punktet x0x_{0} er til høyre for det optimale punktet xx* går tangentlinjen opp.

  • når punktet x0x_{0} er til høyre for det optimale punktet xx* går tangentlinjen ned.

Retningen til en linje bestemmes av tegnet på skråningen:

  • En linje går opp     \implies helningen aa er positiv.

  • En linje går ned     \implies helningen aa er negativ.

Merk at: \

Helningen til tangentlinjen til en funksjon i et bestemt punkt x0x_{0} er ikke mer enn den deriverte i det punktet 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})

Så som et svar på spørsmålet "Hvor skal vi flytte x0x_{0}?":

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0} til høyre for xx*     \implies Vi må flytte x0x_{0} til venstre.

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0} til venstre for xx*     \implies Vi må flytte x0x_{0} til høyre.

Stegene

Nå til det andre spørsmålet, Hvor mye bør vi flytte x0x_{0}?

Ta en titt på følgende eksempler:

Graph 4

Graph 5

Vi kan konkludere med at:

  • x0x_{0} er nær xx* => Helningen til tangenten er liten => f(x0)f'(x_{0}) er liten.

  • x0x_{0} er langt fra xx* => Hellingen til tangenten er stor => f(x0)f'(x_{0}) er stor.

Ved å svare på begge spørsmålene konkluderte vi med at kun kunnskapen om den deriverte i punktet x0x_{0} kan gi oss mye innsikt om retningen og avstanden til det optimale punktet x0x_{0}.

Gradientnedstigning

Gradientnedstigning er formuleringen av svarene på de to foregående spørsmålene. Det er en iterativ optimaliseringsalgoritme som tilnærmer minimum xx* funksjon fra et tilfeldig startpunkt x0x_{0}. Algoritmen er angitt som følger:

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

hvor:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} er ikke mer enn den deriverte av ff i punktet xnx*{n}.

  • lrlr er en positiv konstant som bestemmer hvor store trinnene skal være.

Legg merke til det:

  • xnx_{n} er til høyre for xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnpositivx_{n+ 1} = x_{n} - positiv => xnx_{n} flyttes til venstre.

  • xnx_{n} er til venstre for xx* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+positivex*{n +1} = x*{n} + positive => xnx_{n} flyttes til høyre.

  • xnx_{n} nær xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} nær 00 => Liten oppdatering til xnx_{ n}.

Quiz

  • Når slutter gradientnedstigning å iterere:

  • Når xnx_{n} er liten nok.

  • Når xnx_{n} er nær x0x_{0} .

  • Når dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

– Hvordan velger vi x0x_{0}:

– Vi plukker det tilfeldig. XXX

  • Vi tar det i nærheten av xnx{n}.

– Det kommer an på problemet.

  • Hvorfor trenger vi gradientnedstigning:

– Fordi datamaskiner ikke er kraftige nok til å beregne derivater.

  • Fordi det er ekstremt vanskelig å finne derivatformlene til dyplæringsmodeller. XXX

– Fordi funksjoner har mer enn ett lokalt minimum.