Übersicht ĂŒber Gradientenmethoden bei mathematischen Optimierungsproblemen

Vorwort


Dieser Artikel konzentriert sich auf Methoden zur Lösung mathematischer Optimierungsprobleme basierend auf der Verwendung eines Funktionsgradienten. Das Hauptziel ist es, in dem Artikel alle wichtigen Ideen zu sammeln, die irgendwie mit dieser Methode und ihren verschiedenen Modifikationen zusammenhÀngen.





UPD In den Kommentaren schreiben sie, dass in einigen Browsern und in der mobilen Anwendung Formeln nicht angezeigt werden. Leider weiß ich nicht, wie ich damit umgehen soll. Ich kann nur sagen, dass ich die Makros "Inline" und "Display" des Habrava-Editors verwendet habe. Wenn Sie plötzlich wissen, wie Sie das beheben können, schreiben Sie bitte in die Kommentare.

Anmerkung des Autors


Zum Zeitpunkt des Schreibens verteidigte ich eine Dissertation, deren Aufgabe es erforderte, ein tiefes VerstĂ€ndnis fĂŒr grundsĂ€tzlich theoretische Methoden der mathematischen Optimierung zu haben. Trotzdem sind meine Augen (wie alle anderen auch) immer noch von unheimlichen langen Formeln verschwommen, so dass ich viel Zeit damit verbracht habe, SchlĂŒsselideen zu isolieren, die verschiedene Variationen von Gradientenmethoden charakterisieren wĂŒrden. Mein persönliches Ziel ist es, einen Artikel zu schreiben, der die Mindestmenge an Informationen enthĂ€lt, die fĂŒr ein mehr oder weniger detailliertes VerstĂ€ndnis des Themas erforderlich sind. Aber seien Sie vorbereitet, auf Formeln kann man sowieso nicht verzichten.

ErklÀrung des Problems


Bevor Sie die Methode beschreiben, mĂŒssen Sie zunĂ€chst das Problem beschreiben: „Gegeben sind viele  m a t h c a l K. und Funktion f : m ein t h c ein l K r i g h t a r r o w m a t h b b R    mĂŒssen einen Punkt finden x ∗ i n m a t h c a l K.   so dass f ( x ) g e q f ( x ∗ )  fĂŒr alle x in mathcalK ", Was normalerweise so geschrieben ist

f(x) rightarrow minx in mathcalK.


Theoretisch wird das normalerweise angenommen f Ist eine differenzierbare und konvexe Funktion, und  mathcalK - konvexer Satz (und noch besser, wenn ĂŒberhaupt  mathcalK= mathbbRn ), so können wir einige Garantien fĂŒr den Erfolg der Anwendung des Gradientenabfalls geben. In der Praxis wird der Gradientenabstieg auch dann erfolgreich angewendet, wenn die Aufgabe keine der oben genannten Eigenschaften aufweist (ein Beispiel weiter unten in diesem Artikel).

Ein bisschen Mathe


Nehmen wir an, wir mĂŒssen vorerst nur ein Minimum einer eindimensionalen Funktion finden

f(x) rightarrow minx in mathbbR.


Bereits im 17. Jahrhundert hatte Pierre Fermat ein Kriterium entwickelt, das es ermöglichte, einfache Optimierungsprobleme zu lösen, nĂ€mlich wenn x∗ - Mindestpunkt f∗ dann

fâ€Č(x∗)=0


wo fâ€Č - Derivat f . Dieses Kriterium basiert auf einer linearen NĂ€herung.

f(x) ungefĂ€hrf(x∗)+fâ€Č(x∗)(x−x∗).


NĂ€her dran x zu x∗ desto genauer ist diese AnnĂ€herung. Auf der rechten Seite ist ein Ausdruck, der, wenn fâ€Č(x∗) neq0 vielleicht mehr f(x∗) weniger ist das Wesentliche des Kriteriums. Im mehrdimensionalen Fall Ă€hnlich aus der linearen NĂ€herung f(x) ungefĂ€hrf(x∗)+ nablaf(x∗)T(x−x∗) (im Folgenden xTy= sumni=1xiyi - Standard-Skalarprodukt, die Form des Schreibens beruht auf der Tatsache, dass das Skalarprodukt das gleiche ist wie das Matrixprodukt eines Zeilenvektors durch einen Spaltenvektor), das Kriterium wird erhalten

 nablaf(x∗)=0.


Wert  nablaf(x∗) - Funktionsgradient f an der Stelle x∗ . Die Gleichheit des Gradienten mit Null bedeutet auch die Gleichheit aller partiellen Ableitungen mit Null. Daher kann man im mehrdimensionalen Fall dieses Kriterium erhalten, indem man das eindimensionale Kriterium fĂŒr jede Variable einfach nacheinander separat anwendet.

Es ist erwĂ€hnenswert, dass diese Bedingungen notwendig, aber nicht ausreichend sind. Das einfachste Beispiel ist 0 fĂŒr f(x)=x2 und f(x)=x3


Dieses Kriterium ist bei einer konvexen Funktion ausreichend, vor allem deshalb konnten so viele Ergebnisse fĂŒr konvexe Funktionen erzielt werden.

Quadratische Funktionen


Quadratische Funktionen in  mathbbRn Ist eine Funktion der Form

f(x)=f(x1,x2, ldots,xn)= frac12 sumni,j=1aijxixj− sumni=1bixi+c


Um Platz zu sparen (und sich weniger um Indizes zu kĂŒmmern), wird diese Funktion normalerweise in Matrixform geschrieben:

f(x)= frac12xTAx−bTx+c,


wo x=(x1, ldots,xn)T , b=(b1, ldots,bn)T , A Ist eine Matrix, an der an der Kreuzung i Saiten und j Spalte ist der Wert
 frac12(aij+aji) ( A es stellt sich als symmetrisch heraus - das ist wichtig). Weiter. Wenn ich eine quadratische Funktion erwĂ€hne, werde ich die obige Funktion haben.

Warum rede ich darĂŒber? Tatsache ist, dass quadratische Funktionen aus zwei GrĂŒnden fĂŒr die Optimierung wichtig sind:

  1. Sie treten auch in der Praxis auf, beispielsweise beim Aufbau einer linearen Regression kleinster Quadrate
  2. Der Gradient einer quadratischen Funktion ist eine lineare Funktion, insbesondere fĂŒr die obige Funktion

     frac partiell partiellxif(x1,x2, ldots,xn)=aiixi+ sumj neqi frac12(aij+aji)xj−bi,


    Oder in Matrixform

     nablaf(x)=Ax−b,


    Also das System  nablaf(x)=0 - lineares System. Ein System, das einfacher als linear ist, existiert nicht. Der Gedanke, den ich erreichen wollte, ist die Optimierung einer quadratischen Funktion - die einfachste Klasse von Optimierungsproblemen . Auf der anderen Seite die Tatsache, dass  nablaf(x∗)=0 - Die notwendigen Mindestbedingungen ermöglichen es, lineare Systeme durch Optimierungsprobleme zu lösen. Wenig spĂ€ter werde ich versuchen, Sie davon zu ĂŒberzeugen, dass dies sinnvoll ist.

NĂŒtzliche Verlaufseigenschaften


Nun, wir scheinen herausgefunden zu haben, dass wenn eine Funktion differenzierbar ist (sie hat Ableitungen in Bezug auf alle Variablen), der Gradient am minimalen Punkt gleich Null sein sollte. Aber enthĂ€lt der Gradient nĂŒtzliche Informationen, wenn er nicht Null ist?

Versuchen wir, ein einfacheres Problem zu lösen: Der Punkt ist gegeben x Punkt finden  barx so dass f( barx)<f(x) . Nehmen wir einen Punkt neben x wieder mit linearer Approximation f( barx) ca.f(x)+ nablaf(x)T( barx−x) . Wenn du nimmst  barx=x− alpha nablaf(x) ,  alpha>0 dann bekommen wir

f( barx) ungefĂ€hrf(x)− alpha | nablaf(x) |2<f(x).


Ebenso wenn  alpha<0 dann f( barx) wird mehr sein f(x) (im Folgenden ||x||= sqrtx21+x22+ ldots+x2n  ) Da wir die NĂ€herung verwendet haben, gelten diese Überlegungen wiederum nur fĂŒr kleine  alpha . Um das Obige zusammenzufassen, wenn  nablaf(x) neq0 dann gibt der Gradient die Richtung der grĂ¶ĂŸten lokalen Funktionssteigerung an .

Hier sind zwei Beispiele fĂŒr zweidimensionale Funktionen. Bilder dieser Art sind hĂ€ufig in Demonstrationen des GefĂ€lles zu sehen. Farbige Linien sind die sogenannten ebenen Linien . Dies ist eine Menge von Punkten, fĂŒr die die Funktion feste Werte annimmt. In meinem Fall sind dies Kreise und Ellipsen. Ich habe die blauen Linien des Levels mit einem niedrigeren Wert markiert, rot - mit einem höheren.



Beachten Sie, dass fĂŒr eine OberflĂ€che durch eine Gleichung der Form definiert f(x)=c ,  nablaf(x) Setzt die Normale (bei gewöhnlichen Menschen - die Senkrechte) auf diese OberflĂ€che. Beachten Sie auch, dass der Verlauf zwar in Richtung der grĂ¶ĂŸten Zunahme der Funktion angezeigt wird, es jedoch keine Garantie dafĂŒr gibt, dass Sie in der dem Verlauf entgegengesetzten Richtung ein Minimum finden (z. B. das linke Bild).

GefÀlle Abstieg


Es gab nur noch einen kleinen Schritt zur grundlegenden Gradientenabstiegsmethode: Wir haben aus dem Punkt gelernt x Punkt bekommen  barx mit niedrigerem Funktionswert f . Was hindert uns daran, dies mehrmals zu wiederholen? TatsĂ€chlich ist dies der Gradientenabstieg: Wir bauen die Sequenz auf

xk+1=xk− alphak nablaf(xk).


Wert  alphak genannt die SchrittgrĂ¶ĂŸe (beim maschinellen Lernen - die Lerngeschwindigkeit ). Ein paar Worte zur Wahl  alphak : wenn  alphak - sehr klein, die Sequenz Ă€ndert sich langsam, was den Algorithmus nicht sehr effizient macht; wenn  alphak sehr groß, dann wird die lineare Approximation schlecht und möglicherweise sogar falsch. In der Praxis wird die SchrittgrĂ¶ĂŸe hĂ€ufig empirisch ausgewĂ€hlt, theoretisch wird ĂŒblicherweise ein Lipschitz-Gradient angenommen, nĂ€mlich wenn

 | nablaf(x)− nablaf(y) | leqL |x−y |


fĂŒr alle x,y dann  alphak< frac2L garantiert Abnahme f(xk) .

Analyse fĂŒr quadratische Funktionen


Wenn A Ist eine symmetrische invertierbare Matrix, Ax∗=b dann fĂŒr die quadratische Funktion f(x)= frac12xTAx−bTx+c Punkt x∗ ist der Mindestpunkt ( UPD . vorausgesetzt, dieser Mindestwert existiert ĂŒberhaupt - f kommt dem nicht nahe − infty Werte nur wenn A positiv definitiv), und fĂŒr die Gradientenabstiegsmethode können wir Folgendes erhalten

xk+1−x∗=xk− alphak nablaf(xk)−x∗=xk− alphak(Axk−b)−x∗=


(xk−x∗)− alphakA(xk−x∗)=(I− alphakA)(xk−x∗),


wo I Ist die IdentitĂ€tsmatrix, d.h. Ix=x fĂŒr alle x . Wenn  alphak equiv alpha es wird sich herausstellen

 |xk−x∗ |= |(I− alphaA)k(x0−x∗) | leq |I− alphaA |k |x0−x∗ |.


Der Ausdruck links ist der Abstand von der in Schritt erhaltenen NĂ€herung k Gradientenabstieg zum minimalen Punkt rechts - ein Ausdruck der Form  lambdak beta was gegen Null konvergiert, wenn | lambda|<1 (Die Bedingung, ĂŒber die ich geschrieben habe  alpha im vorherigen Absatz ist dies genau das, was garantiert). Diese grundlegende SchĂ€tzung stellt sicher, dass der Gradientenabstieg konvergiert.

Änderungen des GefĂ€lles


Jetzt möchte ich ein wenig ĂŒber die hĂ€ufig verwendeten Modifikationen des Gradientenabstiegs sprechen, vor allem die sogenannten

TrÀgheits- oder beschleunigte Gradientenmethoden


Alle Methoden dieser Klasse werden wie folgt ausgedrĂŒckt

xk+1=xk− alphak nablaf(xk)+ betak(xk−xk−1).


Der letzte Term kennzeichnet dieselbe „TrĂ€gheit“, der Algorithmus versucht bei jedem Schritt, sich gegen den Gradienten zu bewegen, bewegt sich jedoch gleichzeitig teilweise durch TrĂ€gheit in die gleiche Richtung wie in der vorherigen Iteration. Solche Methoden haben zwei wichtige Eigenschaften:

  1. Sie erschweren praktisch nicht den im Rechenplan ĂŒblichen Gradientenabstieg.
  2. Mit sorgfĂ€ltiger Auswahl  alphak, betak Solche Verfahren sind selbst bei einem optimal ausgewĂ€hlten Schritt um eine GrĂ¶ĂŸenordnung schneller als ein gewöhnlicher Gradientenabstieg.

Eine der ersten derartigen Methoden erschien Mitte des 20. Jahrhunderts und wurde als Heavy-Ball-Methode bezeichnet , die die Art der TrĂ€gheit der Methode vermittelte: bei dieser Methode  alphak, betak unabhĂ€ngig von k und sorgfĂ€ltig ausgewĂ€hlt, abhĂ€ngig von der Zielfunktion. Es ist erwĂ€hnenswert, dass  alphak kann alles andere als sein  betak - normalerweise nur etwas weniger als eins .

Die Heavy-Ball-Methode ist die einfachste TrÀgheitsmethode, aber nicht die allererste. In diesem Fall ist meiner Meinung nach die allererste Methode sehr wichtig, um das Wesentliche dieser Methoden zu verstehen.

Chebyshev-Methode


Ja, ja, die erste Methode dieses Typs wurde von Chebyshev erfunden, um lineare Gleichungssysteme zu lösen. Irgendwann in der Analyse des Gradientenabfalls wurde die folgende Gleichheit erhalten

xk+1−x∗=(I− alphakA)(xk−x∗)= ldots=


(I− alphakA)(I− alphak−1A) ldots(I− alpha1A)(x0−x∗)=Pk(A)(x0−x∗),


wo Pk Ist bis zu einem gewissen Grad polynomisch k . Warum nicht versuchen, abzuholen?  alphak so dass Pk(A)(x0−x∗) war es kleiner? Ein Knoten universeller Polynome, die am wenigsten von Null abweichen, ist das Chebyshev-Polynom. Chebyshevs Methode besteht im Wesentlichen darin, die Abstiegsparameter so auszuwĂ€hlen, dass Pk war ein Polynom von Chebyshev. Es gibt wirklich ein kleines Problem: Bei einem normalen GefĂ€lle ist dies einfach nicht möglich. Bei TrĂ€gheitsverfahren ist dies jedoch möglich. Dies ist hauptsĂ€chlich auf die Tatsache zurĂŒckzufĂŒhren, dass die Chebyshev-Polynome die Wiederholungsrelation zweiter Ordnung erfĂŒllen

Tn+1(x)=2xTn(x)−Tn−1(x),


Daher können sie nicht fĂŒr den Gradientenabstieg erstellt werden, bei dem ein neuer Wert nur aus einem vorherigen Wert berechnet wird, und fĂŒr die TrĂ€gheit wird dies möglich, da die beiden vorherigen Werte verwendet werden. Es stellt sich heraus, dass die KomplexitĂ€t der Berechnung  alphak, betak hĂ€ngt nicht davon ab k noch die GrĂ¶ĂŸe des Raumes n .

Gradientenmethode konjugieren


Eine weitere sehr interessante und wichtige Tatsache (eine Konsequenz des Hamilton-Cayley-Theorems): fĂŒr jede quadratische Matrix A die GrĂ¶ĂŸe n timesn Es gibt ein Polynom P Grad nicht mehr n fĂŒr welche P(A)=0 . Warum ist das interessant? Es geht um die gleiche Gleichheit

xk+1−x∗=Pk(A)(x0−x∗).


Wenn wir die SchrittgrĂ¶ĂŸe im Gradientenabstieg so wĂ€hlen könnten, dass genau dieses Nullpunktpolynom erhalten wird, wĂŒrde der Gradientenabstieg fĂŒr eine feste Iterationszahl konvergieren, die nicht grĂ¶ĂŸer als die Dimension ist A . Wie wir bereits herausgefunden haben, können wir dies nicht fĂŒr den Gradientenabstieg tun. GlĂŒcklicherweise können wir fĂŒr TrĂ€gheitsmethoden. Die Beschreibung und BegrĂŒndung der Methode ist recht technisch, ich beschrĂ€nke mich auf das Wesentliche: Bei jeder Iteration werden Parameter ausgewĂ€hlt, die das beste Polynom ergeben, das unter BerĂŒcksichtigung aller vor dem aktuellen Schritt der Gradientenmessung durchgefĂŒhrten Messungen erstellt werden kann . Dabei

  1. Eine Iteration des Gradientenabfalls (ohne BerĂŒcksichtigung von Parameterberechnungen) enthĂ€lt eine Matrixmultiplikation mit einem Vektor und 2-3 Vektoradditionen
  2. Die Berechnung von Parametern erfordert auch 1-2 Matrixmultiplikation mit Vektor, 2-3 Skalarmektormultiplikation mit Vektor und mehrere Additionen von Vektoren.

Das Schwierigste im Rechenplan ist die Multiplikation der Matrix mit einem Vektor, dies erfolgt normalerweise zeitlich  mathcalO(n2) FĂŒr eine spezielle Implementierung kann dies jedoch in erfolgen  mathcalO(m) wo m - die Anzahl der Elemente ungleich Null in A . Angesichts der Konvergenz der konjugierten Gradientenmethode nicht mehr als n Iterationen erhalten die GesamtkomplexitĂ€t des Algorithmus  mathcalO(nm) , was in allen FĂ€llen nicht schlimmer ist  mathcalO(n3) fĂŒr die Gauß- oder Cholesky-Methode, aber viel besser, wenn m<<n2 das ist nicht so selten.

Die konjugierte Gradientenmethode funktioniert auch gut, wenn f ist keine quadratische Funktion, konvergiert jedoch nicht in einer endlichen Anzahl von Schritten und erfordert hÀufig kleine zusÀtzliche Modifikationen

Nesterov-Methode


FĂŒr die Gemeinschaften der mathematischen Optimierung und des maschinellen Lernens ist der Name "Nesterov" seit langem ein bekannter Name. In den 80er Jahren des letzten Jahrhunderts hat Yu.E. Nesterov hat eine interessante Version der TrĂ€gheitsmethode entwickelt, die die Form hat

xk+1=xk− alphak nablaf(xk+ betak(xk−xk−1))+ betak(xk−xk−1),


es bedeutet keine komplizierte Berechnung  alphak, betak Wie bei der konjugierten Gradientenmethode ist das Verhalten der Methode im Allgemeinen Ă€hnlich wie bei der Heavy-Ball-Methode, aber ihre Konvergenz ist in der Regel sowohl in der Theorie als auch in der Praxis viel zuverlĂ€ssiger.

Stochastischer Gradientenabstieg


Der einzige formale Unterschied zum ĂŒblichen Gradientenabstieg besteht in der Verwendung einer Funktion anstelle eines Gradienten g(x, theta) so dass E thetag(x, theta)= nablaf(x) ( E theta - zufĂ€llige Erwartung  theta ), so hat der stochastische Gradientenabstieg die Form

xk+1=xk− alphakg(xk, thetak).


 thetak - Dies ist ein zufĂ€lliger Parameter, den wir nicht beeinflussen, aber gleichzeitig gehen wir im Durchschnitt gegen den Gradienten. Betrachten Sie als Beispiel die Funktionen

f(x)= frac12m summj=1 |x−yj |2,   nablaf(x)= frac1m summj=1(x−yj)


und

g(x,i)=x−yi.


Wenn i nimmt Werte an 1, ldots,m ebenso wahrscheinlich nur durchschnittlich g Ist ein GefĂ€lle f . Dieses Beispiel zeigt auch Folgendes: die KomplexitĂ€t der Berechnung des Gradienten in m mal mehr als rechnerische KomplexitĂ€t g . Dies ermöglicht den gleichzeitigen stochastischen Gradientenabstieg in m mal mehr Iterationen. Trotz der Tatsache, dass der stochastische Gradientenabstieg aufgrund einer so starken Zunahme der Anzahl von Iterationen normalerweise langsamer als gewöhnlich konvergiert, ist es möglich, die Konvergenzrate pro Zeiteinheit zu verbessern. Soweit ich weiß, ist der stochastische Gradientenabstieg derzeit die grundlegende Methode zum Trainieren der meisten neuronalen Netze, die in allen wichtigen ML-Bibliotheken implementiert sind: Tensorflow, Fackel, Kaffee, CNTK usw.

Es ist erwĂ€hnenswert, dass die Ideen von TrĂ€gheitsmethoden fĂŒr den stochastischen Gradientenabstieg verwendet werden und in der Praxis hĂ€ufig zu einem Anstieg fĂŒhren. Theoretisch wird normalerweise angenommen, dass sich die asymptotische Konvergenzrate nicht Ă€ndert, da der Hauptfehler beim stochastischen Gradientenabstieg auf Dispersion zurĂŒckzufĂŒhren ist g .

Subgradientabstieg


Diese Variante ermöglicht es Ihnen, mit nicht differenzierbaren Funktionen zu arbeiten. Ich werde sie genauer beschreiben. Wir mĂŒssen uns noch einmal an die lineare Approximation erinnern - Tatsache ist, dass es eine einfache Eigenschaft der KonvexitĂ€t durch einen Gradienten gibt, eine differenzierbare Funktion f genau dann konvex, wenn f(y) geqf(x)+ nablaf(x)T(y−x) fĂŒr alle x,y . Es stellt sich heraus, dass eine konvexe Funktion nicht differenzierbar sein muss, sondern fĂŒr jeden Punkt x sicherlich gibt es einen solchen Vektor g das f(y) geqf(x)+gT(y−x) fĂŒr alle y . Ein solcher Vektor g allgemein als Subgradient bezeichnet f an der Stelle x , die Menge aller Subgradienten zu Punkten x Subdifferential genannt x und bezeichnen  partiellf(x) (trotz der Bezeichnung - es hat nichts mit partiellen Ableitungen zu tun). Im eindimensionalen Fall g Ist eine Zahl, und die obige Eigenschaft bedeutet einfach, dass das Diagramm f liegt ĂŒber der Linie durch (x,f(x)) und eine Steigung haben g (siehe Bilder unten). Ich stelle fest, dass es fĂŒr einen Punkt mehrere Subgradienten geben kann, sogar eine unendliche Zahl.



Es ist normalerweise nicht sehr schwierig, mindestens einen Subgradienten fĂŒr einen Punkt zu berechnen, bei einem Subgradientenabstieg wird im Wesentlichen ein Subgradient anstelle eines Gradienten verwendet. Es stellt sich heraus, dass dies ausreicht, theoretisch nimmt die Konvergenzrate jedoch beispielsweise in neuronalen Netzen eine undifferenzierbare Funktion ab ReLU(x)= max(0,x) Sie verwenden es gerne, nur weil das Training damit schneller ist (dies ist ĂŒbrigens ein Beispiel fĂŒr eine nicht konvexe, nicht differenzierbare Funktion, bei der (Sub-) Gradientenabstieg erfolgreich angewendet wird. Die Funktion selbst Relu konvexes aber mehrschichtiges neuronales Netzwerk mit Relu nicht konvex und nicht differenzierbar). Als Beispiel fĂŒr eine Funktion f(x)=|x| Subdifferenz wird sehr einfach berechnet

\ partielle f (x) = \ begin {FĂ€lle} 1, & x> 0, \\ -1, & x <0, \\ [-1, 1], & x = 0. \ end {FĂ€lle}



Vielleicht ist das Letzte, was zu wissen ist, dass der Subgradientenabstieg nicht bei einer konstanten SchrittgrĂ¶ĂŸe konvergiert . Dies ist fĂŒr die obige Funktion am einfachsten zu erkennen. f(x)=|x| . Sogar das Fehlen einer Ableitung an einem Punkt bricht die Konvergenz:

  1. Nehmen wir an, wir haben von vorne angefangen x0 .
  2. Subgradienten-Abstiegsschritt:

    x_ {k + 1} = \ begin {FĂ€lle} x_ {k} -1, & x> 0, \\ x_k + 1, & x <0, \\ ??? & x = 0. \ end {FĂ€lle}

  3. Wenn x0>0 dann werden wir in den ersten Schritten einen subtrahieren, wenn x0<0 dann hinzufĂŒgen. Auf die eine oder andere Weise werden wir uns irgendwann in der Pause befinden [0,1) von dem wir kommen [−1,0) und dann springen wir zwischen zwei Punkten dieser Intervalle.

Theoretisch wird fĂŒr den Subgradientenabstieg empfohlen, eine Abfolge von Schritten durchzufĂŒhren

 alphak= frac1(k+1)c.


Wo c in der Regel 1 oder  frac12 . In der Praxis habe ich oft erfolgreiche Schritte gesehen  alphak=e−ck , obwohl es fĂŒr solche Schritte im Allgemeinen keine Konvergenz geben wird.

Proximale Methoden


Leider kenne ich keine gute Übersetzung fĂŒr "proximal" im Zusammenhang mit der Optimierung. Deshalb werde ich diese Methode einfach aufrufen. Proximale Methoden erschienen als Verallgemeinerung projektiver Gradientenmethoden. Die Idee ist sehr einfach: Wenn es eine Funktion gibt f als Summe dargestellt f(x)= varphi(x)+h(x) wo  varphi Ist eine differenzierbare konvexe Funktion, und h(x) - konvex, fĂŒr die es einen speziellen proximalen Operator gibt proxh(x) (In diesem Artikel beschrĂ€nke ich mich nur auf Beispiele, die ich nicht allgemein beschreiben werde), dann die Konvergenzeigenschaften des Gradientenabfalls fĂŒr  varphi bleiben und fĂŒr GefĂ€lle Abstieg fĂŒr f Wenn nach jeder Iteration dieser proximale Operator fĂŒr den aktuellen Punkt angewendet wird xk Mit anderen Worten, die allgemeine Form der proximalen Methode sieht folgendermaßen aus:

xk+1=prox alphakh(xk− alphak nabla varphi(xk))


Ich denke bisher ist es völlig unverstÀndlich, warum dies notwendig sein kann, insbesondere angesichts der Tatsache, dass ich nicht erklÀrt habe, was ein proximaler Operator ist. Hier sind zwei Beispiele:
  1. h(x) - Anzeigefunktion eines konvexen Satzes  mathcalK , also

    h (x) = \ begin {FĂ€lle} 0, & x \ in \ mathcal {K}, \\ + \ infty, & x \ notin \ mathcal {K}. \\ \ end {FĂ€lle}


    In diesem Fall prox alphakh(x) Ist eine Projektion auf das Set  mathcalK , das heißt, "am nĂ€chsten an x Sollwert  mathcalK ". Daher beschrĂ€nken wir den Gradientenabstieg nur auf die Menge  mathcalK Dies ermöglicht es uns, Probleme mit EinschrĂ€nkungen zu lösen. Leider kann die Berechnung der Projektion im allgemeinen Fall noch schwieriger sein. Daher wird diese Methode normalerweise verwendet, wenn die EinschrĂ€nkungen einfach sind, z. B. die sogenannten Box-EinschrĂ€nkungen: fĂŒr jede Koordinate

    li leqxi leqri


  2. h(x)= lambda |x |1= lambda sumni=1|xi| - -  ell1 -regelmĂ€ĂŸigkeit. Sie möchten diesen Begriff zu Optimierungsproblemen beim maschinellen Lernen hinzufĂŒgen, um eine Umschulung zu vermeiden. Eine solche Regularisierung neigt auch dazu, die am wenigsten signifikanten Komponenten aufzuheben. FĂŒr eine solche Funktion hat der proximale Operator die Form (ein Ausdruck fĂŒr eine einzelne Koordinate wird unten beschrieben):

    [prox _ {\ alpha h} (x)] _ i = \ begin {case} x_i- \ alpha, & x_i> \ alpha, \\ x_i + \ alpha, & x_i <- \ alpha, \\ 0, & x_i \ in [- \ alpha, \ alpha], \ end {case}


    Das ist ziemlich einfach zu berechnen.

Fazit


Damit sind die mir bekannten Hauptvarianten der Gradientenmethode beendet. Vielleicht wĂŒrde ich am Ende feststellen, dass all diese Modifikationen (außer vielleicht der konjugierten Gradientenmethode) leicht miteinander interagieren können. Ich habe die Newton-Methode und die Quasi-Newton-Methode (BFGS und andere) bewusst nicht in diese Liste aufgenommen: Obwohl sie einen Gradienten verwenden, sind sie komplexere Methoden und erfordern spezifische zusĂ€tzliche Berechnungen, die normalerweise rechenintensiver sind als die Berechnung eines Gradienten. Wenn dieser Text jedoch gefragt ist, werde ich gerne eine Ă€hnliche ÜberprĂŒfung durchfĂŒhren.

Gebrauchte / empfohlene Literatur


Boyd. S, Vandenberghe L. Konvexe Optimierung
Shewchuk JR Eine EinfĂŒhrung in die konjugierte Gradientenmethode ohne den qualvollen Schmerz
Bertsekas DP Konvexe Optimierungstheorie

Nesterov Yu. E. Konvexe Optimierungsmethoden
Gasnikov A. V. Universeller Gradientenabstieg

Source: https://habr.com/ru/post/de413853/


All Articles