Yan LeCun und andere argumentieren in Efficient BackProp, dass
Die Konvergenz ist normalerweise schneller, wenn der Durchschnitt jeder Eingabevariable über den Trainingssatz nahe Null liegt. Betrachten Sie dazu den Extremfall, in dem alle Eingänge positiv sind. Die Gewichte für einen bestimmten Knoten in der ersten Gewichtsschicht werden um einen Betrag proportional zu δx aktualisiert, wobei δ der (skalare) Fehler an diesem Knoten und x der Eingangsvektor ist (siehe Gleichungen (5) und (10)). Wenn alle Komponenten eines Eingabevektors positiv sind, haben alle Aktualisierungen von Gewichten, die in einen Knoten eingehen, dasselbe Vorzeichen (dh Vorzeichen ( δ )). Verringern oder alle Zunahme Als Ergebnis können diese Gewichte nur alle zusammenfür ein gegebenes Eingabemuster. Wenn also ein Gewichtsvektor die Richtung ändern muss, kann dies nur durch Zickzack erfolgen, was ineffizient und daher sehr langsam ist.
Aus diesem Grund sollten Sie Ihre Eingaben so normalisieren, dass der Durchschnitt Null ist.
Die gleiche Logik gilt für mittlere Schichten:
Diese Heuristik sollte auf alle Ebenen angewendet werden. Dies bedeutet, dass der Durchschnitt der Ausgaben eines Knotens nahe Null sein soll, da diese Ausgaben die Eingaben für die nächste Ebene sind.
Postscript @craq weist darauf hin, dass dieses Zitat für ReLU (x) = max (0, x) keinen Sinn macht, was zu einer weit verbreiteten Aktivierungsfunktion geworden ist. Während ReLU das erste von LeCun erwähnte Zick-Zack-Problem vermeidet, löst es diesen zweiten Punkt von LeCun nicht, der sagt, es sei wichtig, den Durchschnitt auf Null zu bringen. Ich würde gerne wissen, was LeCun dazu zu sagen hat. In jedem Fall gibt es ein Papier namens Batch Normalization , das auf der Arbeit von LeCun aufbaut und eine Möglichkeit bietet, dieses Problem zu lösen:
Es ist seit langem bekannt (LeCun et al., 1998b; Wiesler & Ney, 2011), dass das Netzwerktraining schneller konvergiert, wenn seine Eingaben weiß werden - dh linear transformiert werden, um Mittelwerte und Einheitsvarianzen von Null zu haben, und dekorreliert werden. Da jede Schicht die von den darunter liegenden Schichten erzeugten Eingaben beobachtet, wäre es vorteilhaft, das gleiche Weißwerden der Eingaben jeder Schicht zu erzielen.
Übrigens, dieses Video von Siraj erklärt in 10 Minuten viel über Aktivierungsfunktionen.
@elkout sagt: "Der wahre Grund, warum tanh gegenüber sigmoid (...) bevorzugt wird, ist, dass die Ableitungen des tanh größer sind als die Ableitungen des sigmoid."
Ich denke, das ist kein Problem. Ich habe nie gesehen, dass dies ein Problem in der Literatur ist. Wenn es Sie stört, dass eine Ableitung kleiner als eine andere ist, können Sie sie einfach skalieren.
σ(x)=11+e−kxk=1k
Nitpick: Tanh ist auch eine Sigmoidfunktion . Jede Funktion mit einer S-Form ist ein Sigmoid. Was ihr als Sigmoid bezeichnet, ist die logistische Funktion. Der Grund, warum die Logistikfunktion populärer ist, sind historische Gründe. Es wird seit längerer Zeit von Statistikern verwendet. Außerdem glauben einige, dass es biologisch plausibler ist.