Gradientnedstigning

Från testwiki
Hoppa till navigering Hoppa till sök

Fil:Gradient Descent in 2D.webm Gradientnedstigning är en metod för obegränsad matematisk optimering. Det är en första ordningens iterativ algoritm för att minimera en differentierbar multivariatfunktion.

Idén är att ta upprepade steg i motsatt riktning av gradienten (eller en approximativ gradient) av funktionen vid den aktuella punkten, eftersom detta är riktningen för den brantaste nedstigningen. Omvänt, att ta steg i gradientens riktning leder till en bana som maximerar funktionen; proceduren är då känd som gradient ascent.

Det är särskilt användbart inom maskininlärning för att minimera kostnads- eller förlustfunktionen.[1] Gradientnedstigning ska inte förväxlas med lokala sökalgoritmer, även om båda är iterativa metoder för optimering.

Gradientnedstigning tillskrivs vanligtvis Augustin-Louis Cauchy, som först föreslog den 1847.[2] Jacques Hadamard föreslog oberoende en liknande metod 1907.[3][4] Dess konvergens-egenskaper för icke-linjära optimeringsproblem studerades först av Haskell Curry 1944,[5] och metoden blev alltmer studerad och använd under de följande årtiondena.[6]

En enkel utvidgning av gradientnedstigning, stokastisk gradientnedstigning, fungerar som den mest grundläggande algoritmen för att träna de flesta djupa nätverk idag.

Beskrivning

Illustration av gradientnedstigning på en serie av nivåmängder

Gradientnedstigning baseras på observationen att om en flerdimensionell funktion F(𝐱) är definierad och differentierbar i en omgivning av en punkt 𝐚, så minskar F(𝐱) snabbast om man går från 𝐚 i riktning mot den negativa gradienten av F vid 𝐚,F(𝐚). Det följer att, om

𝐚n+1=𝐚nγF(𝐚n)

för en tillräckligt liten steglängd eller inlärningshastighet γ+, då gäller att F(𝐚𝐧)F(𝐚𝐧+𝟏). Med andra ord subtraheras termen γF(𝐚) från 𝐚 eftersom vi vill röra oss mot gradienten, mot det lokala minimumet. Med denna observation i åtanke börjar man med en gissning 𝐱0 för ett lokalt minimum av F, och betraktar följden 𝐱0,𝐱1,𝐱2, så att

𝐱n+1=𝐱nγnF(𝐱n), n0.

Vi har en monoton följd

F(𝐱0)F(𝐱1)F(𝐱2),

så förhoppningsvis konvergerar följden (𝐱n) till det önskade lokala minimumet. Notera att värdet på steglängden γ får ändras vid varje iteration.

Det är möjligt att garantera konvergens till ett lokalt minimum under vissa antaganden om funktionen F (till exempel, att F är konvex och att F har Lipschitz-kontinuitet) och med särskilda val av γ. Dessa inkluderar följden

γn=|(𝐱n𝐱n1)T[F(𝐱n)F(𝐱n1)]|F(𝐱n)F(𝐱n1)2

som i Barzilai-Borwein-metoden,[7][8] eller en följd γn som uppfyller Wolfe-villkoren (som kan hittas genom linjesökning). När funktionen F är konvex, är alla lokala minimum också globala minimum, så i detta fall kan gradientnedstigning konvergera till den globala lösningen.

Denna process illustreras i den angränsande bilden. Här antas F vara definierad på planet, och att dess graf har formen av en skål. De blå kurvorna är konturlinjerna, det vill säga de områden där värdet på F är konstant. En röd pil som utgår från en punkt visar riktningen för den negativa gradienten vid den punkten. Notera att den (negativa) gradienten vid en punkt är ortogonal mot konturlinjen som passerar genom den punkten. Vi ser att gradientnedstigningen leder oss till botten av skålen, det vill säga till punkten där funktionen F har sitt minimum.

En analogi för att förstå gradientnedstigning

Dimma i bergen

Den grundläggande intuitionen bakom gradientnedstigning kan illustreras med ett hypotetiskt scenario. Personer är fast i bergen och försöker ta sig ner (dvs. de försöker hitta det globala minimumet). Det är tät dimma, vilket gör att sikten är extremt begränsad. Därför är vägen ner från berget inte synlig, och de måste använda lokal information för att hitta minimumet. De kan använda gradientnedstigningsmetoden, som innebär att de tittar på brantheten av sluttningen vid deras nuvarande position och sedan fortsätter i riktningen med den brantaste nedgången (dvs. nedförsbacke). Om de istället försökte hitta toppen av berget (dvs. maximumet), skulle de fortsätta i riktningen med den brantaste uppgången (dvs. uppförsbacke). Genom att använda denna metod skulle de så småningom hitta vägen ner från berget eller eventuellt fastna i någon hålighet (dvs. lokalt minimum eller sadelpunkt), som en bergssjö. Antag dock också att sluttningens branthet inte är omedelbart uppenbar vid enkel observation, utan att det kräver ett sofistikerat instrument för att mäta, vilket personerna råkar ha tillgängligt just nu. Det tar en hel del tid att mäta sluttningens branthet med instrumentet, så de bör minimera användningen av instrumentet om de vill komma ner från berget före solnedgången. Svårigheten ligger då i att välja hur ofta de ska mäta sluttningens branthet för att inte hamna fel.

I denna analogi representerar personerna algoritmen, och vägen de tar ner från berget representerar följden av parameterinställningar som algoritmen kommer att utforska. Sluttningens branthet representerar lutningen av funktionen vid den punkten. Instrumentet som används för att mäta brantheten är differentiation. Riktningen de väljer att färdas i stämmer överens med gradienten av funktionen vid den punkten. Den tid de färdas innan de tar en ny mätning är steglängden. Om de skulle råka kliva över ett stup i dimman, skulle de ha optimerat sin nedstigningsväg.

Att välja steglängd och nedstigningsriktning

Eftersom en steglängd γ som är för liten skulle sakta ner konvergensen, och en γ som är för stor skulle leda till att man skjuter förbi och får divergens, är det en viktig praktisk fråga att hitta en bra inställning av γ. Philip Wolfe förespråkade också användningen av "smarta val av [nedstignings-]riktningen" i praktiken.[9] Även om det kan verka kontraintuitivt att använda en riktning som avviker från den brantaste nedstigningsriktningen, är tanken att den mindre lutningen kan kompenseras genom att den upprätthålls över en mycket längre sträcka.

För att resonera om detta matematiskt, överväg en riktning 𝐩n och steglängden γn, och överväg den mer allmänna uppdateringen:

𝐚n+1=𝐚nγn𝐩n.

Att hitta bra inställningar för 𝐩n och γn kräver eftertanke. För det första vill vi att uppdateringsriktningen ska peka nedåt. Matematiskt sett, om θn betecknar vinkeln mellan F(𝐚𝐧) och 𝐩n, krävs det att cosθn>0. För att säga mer behöver vi mer information om den objektiva funktionen som vi optimerar. Under det ganska svaga antagandet att F är kontinuerligt deriverbar, kan vi bevisa att:[10] Mall:NumBlk

Denna olikhet implicerar att hur mycket vi säkert kan säga att funktionen F minskar beror på en avvägning mellan de två termerna inom klamrarna. Den första termen mäter vinkeln mellan nedstigningsriktningen och den negativa gradienten. Den andra termen mäter hur snabbt gradienten ändras längs nedstigningsriktningen.

I princip skulle olikhet (Mall:EquationNote) kunna optimeras över 𝐩n och γn för att välja en optimal steglängd och riktning. Problemet är att utvärderingen av den andra termen inom klamrarna kräver att man utvärderar F(𝐚ntγn𝐩n), och extra gradientutvärderingar är generellt sett dyra och oönskade. Några sätt att kringgå detta problem är:

  • Avstå från fördelarna med en smart nedstigningsriktning genom att sätta 𝐩n=F(𝐚𝐧), och använda line search för att hitta en lämplig steglängd γn, såsom en som uppfyller Wolfe conditions. Ett mer ekonomiskt sätt att välja inlärningshastigheter är backtracking line search, en metod som har både goda teoretiska garantier och experimentella resultat. Notera att man inte behöver välja 𝐩n som gradienten; vilken riktning som helst som har positiv skalärprodukt med gradienten kommer att leda till en minskning av funktionsvärdet (för ett tillräckligt litet värde av γn).
  • Om vi antar att F är två gånger deriverbar, kan vi använda dess Hessian 2F för att uppskatta |F(𝐚ntγn𝐩n)F(𝐚n)|2|tγn2F(𝐚n)𝐩n|. Därefter kan vi välja 𝐩n och γn genom att optimera olikhet (Mall:EquationNote).
  • Om vi antar att F är Lipschitz-kontinuerlig, kan vi använda dess Lipschitz-konstant L för att begränsa |F(𝐚ntγn𝐩n)F(𝐚n)|2Ltγn|𝐩n|. Därefter kan vi välja 𝐩n och γn genom att optimera olikhet (Mall:EquationNote).
  • Bygg en egen modell av maxt[0,1]|F(𝐚ntγn𝐩n)F(𝐚n)|2|F(𝐚n)|2 för F. Därefter kan vi välja 𝐩n och γn genom att optimera olikhet (Mall:EquationNote).

Vanligtvis kan konvergens till ett lokalt minimum garanteras genom att följa ett av recepten ovan. När funktionen F är konvex är alla lokala minima även globala minima, så i detta fall kan gradientnedstigning konvergera till den globala lösningen.

Lösning av ett linjärt system

Den brantaste nedstigningsalgoritmen tillämpad på Wienerfilter[11]

Gradientnedstigning kan användas för att lösa ett system av linjära ekvationer:

A𝐱𝐛=0

som omformuleras som ett kvadratiskt minimiseringsproblem. Om systemmatrisen A är reellt symmetrisk och positivt definit, definieras en objektiv funktion som den kvadratiska funktionen, där målet är att minimera

F(𝐱)=𝐱TA𝐱2𝐱T𝐛,

så att

F(𝐱)=2(A𝐱𝐛).

För en allmän reell matris A definieras linjär minsta kvadratmetoden som

F(𝐱)=A𝐱𝐛2.

I den traditionella linjära minsta kvadratmetoden för reella A och 𝐛 används euklidisk norm, och i detta fall gäller

F(𝐱)=2AT(A𝐱𝐛).

Linjär sökning för att minimera, och hitta den lokalt optimala steglängden γ vid varje iteration, kan utföras analytiskt för kvadratiska funktioner, och explicita formler för den lokalt optimala γ är kända.[6][12]

Till exempel, för en reell symmetrisk och positivt definit matris A, kan en enkel algoritm vara som följer:[6]

upprepa i loopen:𝐫:=𝐛𝐀𝐱γ:=𝐫𝖳𝐫/𝐫𝖳𝐀𝐫𝐱:=𝐱+γ𝐫om 𝐫𝖳𝐫 är tillräckligt liten, avsluta loopenslut på upprepa-loopreturnera 𝐱 som resultat

För att undvika multiplikation med A två gånger per iteration, noterar vi att 𝐱:=𝐱+γ𝐫 implicerar 𝐫:=𝐫γ𝐀𝐫, vilket ger den traditionella algoritmen:[13]

𝐫:=𝐛𝐀𝐱upprepa i loopen:γ:=𝐫𝖳𝐫/𝐫𝖳𝐀𝐫𝐱:=𝐱+γ𝐫om 𝐫𝖳𝐫 är tillräckligt liten, avsluta loopen𝐫:=𝐫γ𝐀𝐫slut på upprepa-loopreturnera 𝐱 som resultat

Metoden används sällan för att lösa linjära ekvationer, med konjugatgradientmetoden som ett av de mest populära alternativen. Antalet gradientnedstigningsiterationer är vanligtvis proportionellt mot det spektrala konditionstalet κ(A) för systemmatrisen A (förhållandet mellan de största och minsta egenvärdena för Mall:Nowrap, medan konvergensen för konjugatgradientmetoden typiskt bestäms av en kvadratrot av konditionstalet, vilket innebär att den är mycket snabbare. Båda metoderna kan dra nytta av förkonditionering, där gradientnedstigning kan kräva färre antaganden om förkonditioneringen.[13]

Referenser