Ich wollte ein Netzwerk mit Nichtlinearitäten trainieren, die unter dem Verschwinden leiden (oder dem explodierenden Gradientenproblem, obwohl es hauptsächlich verschwindet). Ich weiß, dass die (derzeitige) Standardmethode darin besteht, die Chargennormalisierung 1 [BN] 1 zu verwenden oder einfach die Nichtlinearität aufzugeben und ReLu- Gleichrichter- / ReLu- Einheiten zu verwenden.
Ich wollte zwei Dinge:
- Bleib bei meiner Nichtlinearität, damit ich sie nicht aufgeben und die ReLu verwenden möchte (dh keine ReLu ist erlaubt!). Eine Neuparametrisierung der Nichtlinearität ist in Ordnung, z. B. indem ein Multiplikativ wie in davor gestellt wird .
- Im Idealfall wollte ich mich nicht auf zu viel Batch-Normalisierung verlassen (oder zumindest, wenn es verwendet wird, muss es auf eine neuartige Weise verwendet werden, anders als es in der Originalarbeit verwendet wurde, oder auf viele Nichtlinearitäten verallgemeinern). Einer der Gründe, warum ich Batch Normalize vermeiden wollte, ist, dass es nur für bestimmte Nichtlinearitäten zu funktionieren scheint. Zum Beispiel für Sigmoide, Tanh, aber es ist unklar, wie sie für andere Nichtlinearitäten funktionieren würden, sagen Gaußsche.
Der Grund, warum ich diese Einschränkungen habe, ist, dass ich mich mit dem Problem des Verschwindens von Gradienten oder explodierenden Gradienten befassen möchte, indem ich das Problem direkt anspreche, anstatt eine Lösung zu hacken, die nur für bestimmte Nichtlinearitäten funktioniert, oder das Problem einfach zu vermeiden, indem ich a einschiebe ReLu.
Ich habe mich angesichts dieser beiden Einschränkungen gefragt, welche alternativen Möglichkeiten es gibt, um mit dem Problem des verschwindenden Gradienten umzugehen. (Eine weitere in Betracht gezogene Nichtlinearität wäre der RBF-Gauß-Kern mit euklidischer Normvoraktivierung, Sigmoid, Tanh usw.)
Die möglichen (vagen) Ideen, an die ich dachte, wären:
- Haben Sie eine gute Initialisierung, damit die sättigenden Nichtlinearitäten nicht bereits gesättigt beginnen (gesättigte Nichtlinearitäten führen zu Gradienten nahe Null).
- In ähnlicher Weise kann für RBF ein guter Init wichtig sein, da Gaußsche Werte meist einen großen Wert nahe 0 haben (dh wenn Filter der Aktivierung oder den Daten ähnlich sind). Wenn sie zu groß oder zu klein sind, treten ähnliche Probleme mit dem verschwindenden Gradienten auf.
- Ich weiß nicht wirklich, ob dies zu einschränkend ist, aber es wäre schön, wenn es eine andere Möglichkeit gäbe, die Chargennormalisierung zu verwenden als den traditionellen Vorschlag im Originalpapier (oder vielleicht eine BN-Idee, die sich auf eine größere Menge von Nicht-Normalen verallgemeinert) Linearitäten, derzeit scheint der größte Teil der Forschung zu zeigen, dass es für Sigmoide funktioniert, soweit ich weiß).
- Eine weitere Idee könnte es sein, statt mit Nichtlinearität haben wir , wo . Wenn , bedeutet dies, dass die Nichtlinearitäten nicht für jede Schicht mehrfach rückwärts multipliziert werden, um zu vermeiden, dass sie für frühere Schichten "verschwinden". Dies könnte die Lernregel instabil machen, daher ist möglicherweise ein Regularizer eine gute Idee.a θ ( z ) a ∈ R a > 1
- Ein Optimierer, der sich intrinsisch mit dem verschwindenden Gradienten befasst (oder zumindest jeden Parameter anders aktualisiert). Wenn es sich beispielsweise um eine Ebene handelt, die näher an der Eingabe liegt, sollte der Lernschritt größer sein. Es wäre schön, wenn der Lernalgorithmus dies selbst berücksichtigen würde, um mit dem verschwindenden Gradienten fertig zu werden.
Wenn es irgendwelche Vorschläge gibt, wie man mit einem anderen verschwindenden Gefälle als der Batch-Norm oder ReLus umgeht, würde ich gerne davon hören!
Es scheint, dass ein verschwindender Gradient hauptsächlich deshalb auftritt, weil die Nichtlinearitäten die Eigenschaft haben, dass und auch weil und nach mehrmaliger Multiplikation explodiert es oder verschwindet. Das explizite Sagen des Problems könnte helfen, es zu lösen. Das Problem ist, dass die unteren Schichten das Signal über das Netzwerk nicht aktualisieren oder behindern. Es wäre schön, dieses Signal, das durch das Netzwerk fließt, während des Vorwärts- und Rückwärtsdurchlaufs (und auch während des Trainings, nicht nur bei der Initialisierung) aufrechtzuerhalten.| θ ' ( s ) | < 1
1 : Ioffe S. und Szegedy C. (2015),
"Chargennormalisierung: Beschleunigung des tiefen Netzwerktrainings durch Reduzierung der internen Kovariatenverschiebung",
Tagungsband der 32. Internationalen Konferenz über maschinelles Lernen , Lille, Frankreich, 2015.
Journal of Machine Learning Research: W & CP Band 37
Antworten:
Haben Sie sich mit RMSProp befasst? Schauen Sie sich diese Folien von Geoff Hinton an:
Übersicht über den Mini-Batch-Gradientenabstieg
Insbesondere Seite 29 mit dem Titel 'rmsprop: Eine Mini-Batch-Version von rprop', obwohl es sich wahrscheinlich lohnt, den gesamten Satz durchzulesen, um eine umfassendere Vorstellung von einigen verwandten Ideen zu erhalten.
Ebenfalls verwandt sind Yan Le Cuns No More Pesky Learning Rates
und Brandyn Webbs SMORMS3 .
Die Hauptidee ist es, das Zeichen des Gradienten zu betrachten und ob es Flip-Flop ist oder nicht; Wenn es konsistent ist, möchten Sie sich in diese Richtung bewegen. Wenn das Zeichen nicht umgedreht wird, muss der Schritt, den Sie gerade ausgeführt haben, in Ordnung sein, vorausgesetzt, er ist nicht verschwindend klein. Es gibt also Möglichkeiten, die Schrittgröße zu steuern, um ihn beizubehalten sinnvoll und das sind etwas unabhängig vom tatsächlichen Gefälle.
Die kurze Antwort auf den Umgang mit verschwindenden oder explodierenden Verläufen lautet also einfach: Verwenden Sie nicht die Größe des Gradienten!
quelle
Einige meiner Erkenntnisse sind möglicherweise nicht korrekt.
Die Ursache für das Problem des verschwindenden Gradienten ist, dass
sigmoid
tanh
(und RBF) auf beiden Seiten (-inf
und ) gesättigt sindinf
, so dass es sehr wahrscheinlich ist, dass die Eingabe einer solchen Nichtlinearität auf die gesättigten Bereiche fällt.Der Effekt von BN ist, dass es den Eingang der Nichtlinearität in einen kleinen Bereich um 0 als Ausgangspunkt "zieht" , wo solche Nichtlinearitäten nicht gesättigt sind. Ich denke, es wird auch mit RBF funktionieren.N(0,1)
Um die Nichtlinearität von ReLU zu beseitigen, können wir die Softplus-Funktion , die ReLU sehr nahe kommt und in Geoffrey Hintons Papper verwendet wurde , um zu erklären, warum ReLU funktionieren würde.log(1+ex)
Auch die Restnetze oder die Autobahnnetze bieten eine andere Möglichkeit, verschwindende Gradienten (über Abkürzungen) anzugehen. Nach meiner Erfahrung wird eine solche Architektur viel schneller trainiert, als nur den Verlust mit der letzten Schicht zu verbinden.
Darüber hinaus ist die Schwierigkeit, tiefe Netzwerke zu trainieren, nicht nur auf den verschwindenden Gradienten zurückzuführen , sondern auch auf andere Faktoren (z. B. die interne Kovariatenverschiebung). Es gibt eine kürzlich erfolgte Normalisierung der Papierschicht über eine andere Art der Normalisierung. Sie sagt zwar nichts über das Verschwinden von Verläufen aus, aber vielleicht sind Sie interessiert.
quelle