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