Gibt es Möglichkeiten, mit dem verschwindenden Gradienten für die Sättigung von Nichtlinearitäten umzugehen, bei denen keine Chargennormalisierung oder ReLu-Einheiten erforderlich sind?


8

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:

  1. 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 .θ(s)
  2. 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:

  1. 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).
  2. 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.
  3. 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ß).
  4. 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θ(z)aθ(z)aRa>1
  5. 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|a|<1|θ(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


+1 Dies ist eine interessante Frage. Nur aus Neugier - warum möchten Sie keine ReLUs verwenden?
Sycorax sagt Reinstate Monica

Meine Gründe sind: 1) Es scheint mir, dass die Verwendung von ReLu die Frage des Verschwindens und Explodierens des Gradienten vermeidet, anstatt ihn direkt anzusprechen. 2) Wenn man eine Aktivierung hatte, von der man glaubte, dass sie bei einigen Aufgaben sehr gut ist, anstatt bei anderen, dann sind wir irgendwie gezwungen, zu ReLu zu wechseln, obwohl sie möglicherweise nicht die richtige sind. 3) ... (nächste Kommentare)
Pinocchio

3) Wenn es zum Beispiel um Gaußsche geht, ist die Verallgemeinerung der Chargennormalisierung nicht trivial (sollte ich die Voraktivierung der euklidischen Norm chargenweise normalisieren? Wenn ich dies tue, könnte die Eingabe in den RBF-Guassian negativ sein, was zu explodierenden Gradienten führt, aber was ist, wenn ich stattdessen ich Normalisieren Sie die Ausgabe der Nichtlinearität direkt. Dann normalisieren wir etwas, das bereits eingeschränkte Momente hatte, da die Ausgabe von RBF und tatsächlich auch Sigmoid (tanh) auf ein kleines Intervall [0,1] oder [- beschränkt sind 1,1]) Grundsätzlich scheint es nur so, als könnten diese beiden Ideen weiterentwickelt werden, ich weiß nur nicht wie.
Pinocchio

Obwohl meine Gründe hauptsächlich auf Vermutungen beruhen, brauchen wir natürlich mehr Forschung oder etwas, um mit all diesen Punkten fertig zu werden.
Pinocchio

1
Nur neugierig, ob Sie etwas darüber wissen, wie LSTMs oder Residual-Netzwerke mit sättigenden Nichtlinearitäten umgehen. Ich frage mich, ob sie nur dazu neigen, mit ReLus zu arbeiten. In den Papieren geben beide an, dass ReLus verwendet wird, aber ich frage mich, ob dies für die Methoden wesentlich ist oder nur etwas, das ihnen einen Schub gibt.
Testbenutzer

Antworten:


2

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!


Wie geht das? "Es gibt also Möglichkeiten, die Schrittgröße zu steuern, um sie sinnvoll zu halten, und diese sind etwas unabhängig vom tatsächlichen Gradienten." Muss man das manuell machen oder gibt es einen Algorithmus, der das macht?
Pinocchio

In den Links werden verschiedene Methoden (und Varianten) erläutert, die jedoch alle eine Methode zur Berechnung einer Gewichtsaktualisierung bieten, die nicht das Produkt eines Gradienten und einer Lernrate ist.
Redcalx

1

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 ( -infund ) gesättigt sind inf, 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)

Geben Sie hier die Bildbeschreibung ein

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.