Hoppa till innehållet

Gradientnedstigning

Från Wikipedia
Gradientnedstigning i 2D

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.

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

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

för en tillräckligt liten steglängd eller inlärningshastighet , då gäller att . Med andra ord subtraheras termen 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 för ett lokalt minimum av , och betraktar följden så att

Vi har en monoton följd

så förhoppningsvis konvergerar följden 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 (till exempel, att är konvex och att har Lipschitz-kontinuitet) och med särskilda val av . Dessa inkluderar följden

som i Barzilai-Borwein-metoden,[7][8] eller en följd som uppfyller Wolfe-villkoren (som kan hittas genom linjesökning). När funktionen ä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 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å ä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 har sitt minimum.

En analogi för att förstå gradientnedstigning

[redigera | redigera wikitext]
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

[redigera | redigera wikitext]

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 och steglängden , och överväg den mer allmänna uppdateringen:

.

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

Denna olikhet implicerar att hur mycket vi säkert kan säga att funktionen 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 och 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 , 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 , och använda line search för att hitta en lämplig steglängd , 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 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 ).
  • Om vi antar att är två gånger deriverbar, kan vi använda dess Hessian för att uppskatta Därefter kan vi välja och genom att optimera olikhet (Mall:EquationNote).
  • Om vi antar att är Lipschitz-kontinuerlig, kan vi använda dess Lipschitz-konstant för att begränsa Därefter kan vi välja och genom att optimera olikhet (Mall:EquationNote).
  • Bygg en egen modell av för . Därefter kan vi välja och 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 ä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

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

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

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

så att

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

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

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 , kan en enkel algoritm vara som följer:[6]

För att undvika multiplikation med två gånger per iteration, noterar vi att implicerar , vilket ger den traditionella algoritmen:[13]

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 för systemmatrisen (förhållandet mellan de största och minsta egenvärdena för ), 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]

  1. ^ Stephen P. Boyd; Lieven Vandenberghe (augusti 2013) (på engelska). Convex Optimization. Cambridge: Cambridge University Press. doi:10.1017/CBO9780511804441. Wikidata Q58633368. ISBN 978-0-511-80444-1. OCLC 919495857. https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf. 
  2. ^ Lemaréchal, C. (2012). ”Cauchy and the Gradient Method”. Doc Math Extra: sid. 251–254. https://www.math.uni-bielefeld.de/documenta/vol-ismp/40_lemarechal-claude.pdf. Läst 26 januari 2020.  Arkiverad 29 december 2018 hämtat från the Wayback Machine.
  3. ^ Hadamard, Jacques (1908). ”Mémoire sur le problème d'analyse relatif à l'équilibre des plaques élastiques encastrées”. Mémoires présentés par divers savants éstrangers à l'Académie des Sciences de l'Institut de France 33. 
  4. ^ R. Courant (1 januari 1943). ”Variational methods for the solution of problems of equilibrium and vibrations” (på engelska). Bulletin of the American Mathematical Society 49 (1): sid. 1-24. doi:10.1090/S0002-9904-1943-07818-4. Wikidata Q55954196. ISSN 0273-0979. https://web.archive.org/web/20240820073607/https://www.ams.org/journals/bull/1943-49-01/S0002-9904-1943-07818-4/S0002-9904-1943-07818-4.pdf. 
  5. ^ Haskell B. Curry (1944). ”The method of steepest descent for non-linear minimization problems” (på engelska). Quarterly of Applied Mathematics 2 (3): sid. 258-261. doi:10.1090/QAM/10667. Wikidata Q90314523. ISSN 0033-569X. https://www.ams.org/journals/qam/1944-02-03/S0033-569X-1944-10667-3/S0033-569X-1944-10667-3.pdf. 
  6. ^ [a b c] Boris Polyak (2010). ”Introduction to optimization” (på engelska). ResearchGate. Wikidata Q130240203. https://www.researchgate.net/profile/Boris-Polyak-2/publication/342978480_Introduction_to_Optimization/links/5f1033e5299bf1e548ba4636/Introduction-to-Optimization.pdf. 
  7. ^ JONATHAN BARZILAI; JONATHAN M. BORWEIN (1988). ”Two-Point Step Size Gradient Methods” (på engelska). IMA Journal of Numerical Analysis 8 (1): sid. 141-148. doi:10.1093/IMANUM/8.1.141. Wikidata Q56935973. ISSN 0272-4979. https://pages.cs.wisc.edu/~swright/726/handouts/barzilai-borwein.pdf. 
  8. ^ Roger Fletcher (2005) (på engelska). On the Barzilai-Borwein Method. 235-256. doi:10.1007/0-387-24255-4_10. Wikidata Q130240238. ISBN 978-0-387-24254-5. 
  9. ^ Wolfe, Philip (April 1969). ”Convergence Conditions for Ascent Methods”. SIAM Review 11 (2): sid. 226–235. doi:10.1137/1011036. 
  10. ^ Bernstein, Jeremy; Vahdat, Arash; Yue, Yisong; Liu, Ming-Yu (2020-06-12). ”On the distance between two neural networks and the stability of learning”. 'arXiv:2002.03432 [cs.LG]'. 
  11. ^ Haykin, Simon S. Adaptive filter theory. Pearson Education India, 2008. - s. 108-142, 217-242
  12. ^ Saad, Yousef (2003). Iterative methods for sparse linear systems (2nd). Philadelphia, Pa.: Society for Industrial and Applied Mathematics. sid. 195. ISBN 978-0-89871-534-7. https://archive.org/details/iterativemethods0000saad/page/195 
  13. ^ [a b] Bouwmeester, Henricus; Dougherty, Andrew; Knyazev, Andrew V. (2015). ”Nonsymmetric Preconditioning for Conjugate Gradient and Steepest Descent Methods”. Procedia Computer Science 51: sid. 276–285. doi:10.1016/j.procs.2015.05.241.