Ich bin derzeit ein bisschen verwirrt darüber, wie der Mini-Batch-Gefälle-Abstieg in einem Sattelpunkt gefangen werden kann.
Die Lösung könnte zu trivial sein, als dass ich sie nicht verstehe.
Sie erhalten in jeder Epoche eine neue Stichprobe und es wird ein neuer Fehler basierend auf einer neuen Charge berechnet, sodass die Kostenfunktion nur für jede Charge statisch ist. Dies bedeutet, dass sich der Gradient auch für jede Mini-Charge ändern sollte eine Vanille-Implementierung Probleme mit Sattelpunkten?
Eine weitere wichtige Herausforderung bei der Minimierung von nicht-konvexen Fehlerfunktionen, die für neuronale Netze üblich sind, besteht darin, zu vermeiden, dass sie in ihren zahlreichen suboptimalen lokalen Minima eingeschlossen werden. Dauphin et al. [19] argumentieren, dass die Schwierigkeit in der Tat nicht von lokalen Minima herrührt, sondern von Sattelpunkten, dh Punkten, an denen eine Dimension ansteigt und eine andere abfällt. Diese Sattelpunkte sind normalerweise von einem Plateau mit demselben Fehler umgeben, was es für SGD notorisch schwierig macht, zu entkommen, da der Gradient in allen Dimensionen nahe Null ist.
Ich würde meinen, dass insbesondere SGD einen klaren Vorteil gegenüber Sattelpunkten haben würde, da es in Richtung seiner Konvergenz schwankt.
Bei vollem Batch-Gefälle ist es sinnvoll, dass es im Sattelpunkt gefangen werden kann, da die Fehlerfunktion konstant ist.
Ich bin ein bisschen verwirrt über die beiden anderen Teile.
quelle
Antworten:
Schauen Sie sich das Bild unten von Off Convex an . In einer konvexen Funktion (ganz links im Bild) gibt es nur ein lokales Minimum, das auch das globale Minimum ist. In einer nicht-konvexen Funktion (ganz rechts im Bild) kann es jedoch mehrere lokale Minima geben, und häufig ist das Verbinden von zwei lokalen Minima ein Sattelpunkt. Wenn Sie sich von einem höheren Punkt aus nähern, ist der Gradient vergleichsweise flacher und es besteht die Gefahr, dass Sie dort hängen bleiben, insbesondere wenn Sie sich nur in eine Richtung bewegen.
Jetzt ist die Sache, ob Sie mit Mini-Batch optimierenBeim stochastischen Gradientenabstieg ist die zugrunde liegende nichtkonvexe Funktion dieselbe und der Gradient ist eine Eigenschaft dieser Funktion. Bei der Mini-Batch-Analyse werden mehrere Proben gleichzeitig berücksichtigt und der über alle gemittelte Gradientenschritt ausgeführt. Dies verringert die Varianz. Wenn die durchschnittliche Steigungsrichtung jedoch immer noch in dieselbe Richtung wie der Sattelpunkt zeigt, besteht die Gefahr, dass Sie dort stecken bleiben. Die Analogie ist, wenn Sie 2 Schritte vorwärts und 1 Schritt zurück machen, über diese gemittelt, werden Sie letztendlich 1 Schritt vorwärts machen. Wenn Sie stattdessen SGD ausführen, führen Sie alle Schritte nacheinander aus. Wenn Sie sich jedoch immer noch in eine Richtung bewegen, können Sie den Sattelpunkt erreichen und feststellen, dass der Gradient auf allen Seiten ziemlich flach ist und die Schrittgröße gleich ist zu klein, um über diesen flachen Teil zu gehen. Das tut nicht
Schauen Sie sich hier die Visualisierung an . Selbst bei SGD würde es am Sattelpunkt konvergieren, wenn die Schwankungen nur in einer Dimension auftreten und die Stufen immer kleiner werden. In diesem Fall würde das Mini-Batch-Verfahren nur die Schwankungsbreite verringern, aber die Richtung des Gradienten nicht ändern können.
SGD kann manchmal aus einfachen Sattelpunkten ausbrechen, wenn die Schwankungen in andere Richtungen verlaufen und wenn die Schrittgröße groß genug ist, um die Ebenheit zu überwinden. Aber manchmal können die Sattelbereiche ziemlich komplex sein, wie im Bild unten.
Die Art und Weise, wie Methoden wie Momentum, ADAGRAD, Adam usw. in der Lage sind, daraus auszubrechen, beruht auf der Berücksichtigung der vergangenen Gradienten. Betrachten Sie Dynamik,
Dies fügt einen Teil des letzten Gradienten hinzu, . Wenn Sie nur in eine Richtung hin und her gegangen sind und die Zeichen im Wesentlichen geändert haben, dämpft dies letztendlich Ihren Fortschritt. Wenn es durchweg positive Fortschritte in eine Richtung gegeben hat, baut es sich auf und geht auf diese Weise zurück.vt−1
quelle
Es sollte nicht.
[ 1 ] hat gezeigt, dass ein Gradientenabstieg mit zufälliger Initialisierung und geeigneter konstanter Schrittgröße nicht zu einem Sattelpunkt konvergiert. Es ist eine lange Diskussion, aber um Ihnen eine Vorstellung davon zu geben, warum Sie das folgende Beispiel sehen:
quelle
Wenn Sie zu dem referenzierten Artikel gehen (sie zeigen auch eindrucksvoll, wie sich ihr Ansatz ohne Sattel tatsächlich gegenüber SGD im Minibatch verbessert), stellen sie fest:
Sie bemerken auch das Vorhandensein von "Plateaus" in der Nähe von Sattelpunkten (mit anderen Worten, der Sattel ist nicht steil) - in diesen Fällen würde das Ergreifen von zu kleinen Schritten in der Tat zu einer vorzeitigen Konvergenz führen, bevor er den Sattelbereich verlassen hat. Da dies eine nicht konvexe Optimierung ist, würde die Konvergenz der Lernrate dies verschlechtern.
Es scheint möglich, dass man einen iterativen Ansatz versuchen könnte, bei dem man die Mini-Batch-SGD nach Abschluss neu startet (dh die Lernrate zurücksetzt), um zu sehen, ob man der problematischen Region entkommen kann.
quelle
Ich denke, das Problem ist, dass man, wenn man sich einem Sattelpunkt nähert, ein Plateau betritt, dh ein Gebiet mit geringen (absoluten) Steigungen. Vor allem, wenn Sie sich vom Kamm nähern. Ihr Algorithmus verringert also die Schrittgröße. Mit abnehmender Schrittweite sind nun alle Farbverläufe (in alle Richtungen) betragsmäßig klein. Also stoppt der Algorithmus und denkt, er ist auf dem Minimum.
Wenn Sie die Schritte nicht verringern, werden Sie über das Minimum springen und sie häufig vermissen. Sie müssen die Schrittgröße irgendwie verringern.
quelle