In Bezug auf die Stanford-Kursnotizen zu Faltungs-Neuronalen Netzen für die visuelle Erkennung heißt es in einem Absatz:
"Leider können ReLU-Einheiten während des Trainings zerbrechlich sein und" sterben ". Beispielsweise kann ein großer Gradient, der durch ein ReLU-Neuron fließt, dazu führen, dass die Gewichte so aktualisiert werden, dass das Neuron an keinem Datenpunkt wieder aktiviert wird. Wenn dies der Fall ist." Wenn dies passiert, ist der Gradient, der durch das Gerät fließt, ab diesem Zeitpunkt für immer Null, dh die ReLU-Geräte können während des Trainings irreversibel sterben, da sie vom Datenverteiler gestoßen werden können % Ihres Netzwerks können "tot" sein (dh Neuronen, die niemals über den gesamten Trainingsdatensatz aktiviert werden), wenn die Lernrate zu hoch eingestellt ist. Bei korrekter Einstellung der Lernrate ist dies weniger häufig ein Problem. "
Was bedeutet hier das Sterben von Neuronen?
Könnten Sie bitte eine intuitive Erklärung in einfacheren Begriffen geben.
quelle
Antworten:
Eine "tote" ReLU gibt für jeden Eingang immer den gleichen Wert aus (Null, aber das ist nicht wichtig). Wahrscheinlich wird dies dadurch erreicht, dass man einen großen negativen Verzerrungsterm für seine Gewichte lernt.
Dies bedeutet wiederum, dass es keine Rolle bei der Unterscheidung zwischen Eingaben spielt. Zur Klassifizierung können Sie dies als Entscheidungsebene außerhalb aller möglichen Eingabedaten visualisieren .
Sobald eine ReLU in diesem Zustand endet, ist es unwahrscheinlich, dass sie sich erholt, da der Funktionsgradient bei 0 ebenfalls 0 ist, sodass das Lernen des Gradientenabfalls die Gewichte nicht verändert. "Undichte" ReLUs mit einem kleinen positiven Gradienten für negative Eingaben (
y=0.01x
wenn x <0 ist) sind ein Versuch, dieses Problem zu beheben und eine Chance zur Wiederherstellung zu geben.Die Sigmoid- und Tanh-Neuronen können unter ähnlichen Problemen leiden, da ihre Werte gesättigt sind, aber es gibt immer mindestens einen kleinen Gradienten, der es ihnen ermöglicht, sich langfristig zu erholen.
quelle
Sehen wir uns an, wie die ReLU (Rectified Linear Unit) aussieht:
Die Eingabe in den Gleichrichter für einige Eingaben ist für Gewichte und Aktivierungen aus der vorherigen Schicht für diese bestimmte Eingabe . Die Gleichrichterneuronenfunktion istxn
Angenommen, ein sehr einfaches Fehlermaß
Der Gleichrichter hat nur 2 mögliche Gradientenwerte für die Deltas des Backpropagation-Algorithmus: (Wenn wir ein geeignetes Fehlermaß verwenden, wird die 1 zu etwas anderem, aber die 0 bleibt gleich) und so für ein bestimmtes Gewicht :
Eine Frage, die sich stellt, ist, wie ReLU "überhaupt" mit dem Gradienten 0 auf der linken Seite tatsächlich funktioniert . Was ist, wenn für den Eingang die aktuellen Gewichte die ReLU auf die linke flache Seite legen, während sie für diesen bestimmten Eingang optimalerweise auf der rechten Seite sein sollte? Der Gradient ist 0 und daher wird das Gewicht nicht aktualisiert, auch nicht ein kleines bisschen. Wo ist also "Lernen" in diesem Fall?= xn
Das Wesentliche der Antwort liegt in der Tatsache, dass der stochastische Gradientenabstieg nicht nur eine einzige Eingabe berücksichtigt , sondern viele von ihnen, und die Hoffnung ist, dass nicht alle Eingaben die ReLU auf die flache Seite stellen, so dass der Gradient nicht ist -zero für einige Eingaben (es kann aber auch + ve oder -ve sein). Wenn mindestens ein Eingang unsere ReLU auf der steilen Seite hat, dann ist die ReLU noch am Leben, weil noch etwas gelernt wird und die Gewichte für dieses Neuron aktualisiert werden. Wenn alle Eingänge die ReLU auf die flache Seite stellen, besteht keine Hoffnung, dass sich die Gewichte ändern und das Neuron tot ist .xn x∗
Eine ReLU kann am Leben sein und dann aufgrund des Gradientenschritts für einige Eingabestapel sterben , wodurch die Gewichte auf kleinere Werte gebracht werden und für alle Eingaben gemacht wird. Eine große Lernrate verstärkt dieses Problem.zn<0
Wie @Neil Slater bereits erwähnte, besteht eine Korrektur darin, die flache Seite so zu ändern, dass sie einen kleinen Gradienten aufweist, so dass sie wie zu wird, was als LeakyReLU bezeichnet wird.ReLU=max(0.1x,x)
quelle
What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?
, wenn der Eingang negativ ist, wäre der Gradient 0? Was ist für diesen Fall optimal? Könntest du bitte helfen, es zu verstehen?ReLU-Neuronen geben Null aus und haben für alle negativen Eingaben Null-Ableitungen. Wenn die Gewichte in Ihrem Netzwerk immer zu negativen Eingaben in ein ReLU-Neuron führen, trägt dieses Neuron effektiv nicht zum Training des Netzwerks bei. Mathematisch gesehen ist der Gradientenbeitrag zu den Gewichtsaktualisierungen, die von diesem Neuron ausgehen, immer Null (einige Details finden Sie im mathematischen Anhang).
Wie hoch ist die Wahrscheinlichkeit, dass Ihre Gewichte negative Zahlen für alle Eingaben in ein bestimmtes Neuron produzieren? Es ist im Allgemeinen schwer zu beantworten, aber eine Möglichkeit, wie dies passieren kann, besteht darin, ein Update der Gewichte zu umfangreich zu gestalten. Es sei daran erinnert, dass neuronale Netze typischerweise durch Minimieren einer Verlustfunktion in Bezug auf die Gewichte unter Verwendung eines Gradientenabfalls trainiert werden . Das heißt, die Gewichte eines neuronalen Netzwerks sind die "Variablen" der Funktion (der Verlust hängt vom Datensatz ab, aber nur implizit: Es ist typischerweise die Summe über jedes Trainingsbeispiel, und jedes Beispiel ist effektiv eine Konstante). Da der Gradient einer Funktion immer in die Richtung des steilsten Anstiegs zeigt, müssen wir nur den Gradienten von berechnenL(W) L L in Bezug auf die Gewichte und in die entgegengesetzte Richtung ein wenig bewegen, dann spülen und wiederholen. Auf diese Weise enden wir in einem (lokalen) mindestens bis . Wenn Ihre Eingaben ungefähr auf der gleichen Skala liegen, können Sie daher bei einem großen Schritt in Richtung des Verlaufs Gewichte erhalten, die ähnliche Eingaben ergeben, die möglicherweise negativ sind.W L
Im Allgemeinen hängt das, was passiert, davon ab, wie Informationen durch das Netzwerk fließen. Sie können sich vorstellen, dass die Werte, die Neuronen im Laufe des Trainings produzieren, schwanken und es den Gewichten ermöglichen, den gesamten Datenfluss durch einige von ihnen zu unterbrechen. (Manchmal kann es jedoch vorkommen, dass diese ungünstigen Konfigurationen aufgrund von Gewichtsaktualisierungen früher im Netzwerk verbleiben!). Ich habe diese Idee in einem Blogbeitrag über die Gewichtsinitialisierung - die ebenfalls zu diesem Problem beitragen kann - und ihre Beziehung zum Datenfluss untersucht. Ich denke, mein Punkt hier kann durch eine Handlung aus diesem Artikel veranschaulicht werden:
Das Diagramm zeigt Aktivierungen in einem 5-Schicht-Mehrschicht-Perceptron mit ReLU-Aktivierungen nach einem Durchlauf durch das Netzwerk mit verschiedenen Initialisierungsstrategien. Sie sehen, dass abhängig von der Gewichtskonfiguration die Ausgänge Ihres Netzwerks gedrosselt werden können.
Mathematischer Anhang
Mathematisch ist, wenn die Verlustfunktion Ihres Netzwerks ist, die Ausgabe des ten Neurons in der ten Schicht, ist das ReLU-Neuron und ist die lineare Eingabe in die -ste Schicht, dann durch die Kettenregel die Ableitung des Verlusts in Bezug auf ein Gewicht, das das te und - st Schichten istL x(i)j j i f(s)=max(0,s) s(i)j (i+1) i (i+1)
Der erste Term rechts kann rekursiv berechnet werden. Der zweite Term auf der rechten Seite ist der einzige Ort, an dem das Gewicht direkt beteiligt ist und in den unterteilt werden kannw(i)jk
Daraus können Sie ersehen, dass, wenn die Ausgaben immer negativ sind, die in das Neuron führenden Gewichte nicht aktualisiert werden und das Neuron nicht zum Lernen beiträgt.
quelle
Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.
wie Gewichte negativ werden, wenn die Eingaben normalisiert sind?Genauer gesagt, während der lokale Gradient von ReLU (der ) den Gradienten multipliziert, der aufgrund der Rückausbreitung zurückfließt, könnte das Ergebnis des aktualisierten Gradienten eine große negative Zahl sein (wenn der Gradient, der zurückfließt, zurück ist eine große negative Zahl).1
Solch ein großer negativer aktualisierter Gradient erzeugt ein großes negatives wenn die Lernrate relativ groß ist, und unterdrückt daher Aktualisierungen, die in diesem Neuron stattfinden werden, da es fast unmöglich ist, eine große positive Zahl zu bilden, um die große negative Zahl, die dadurch hervorgerufen wird, auszugleichen. kaputt " .wi wi
quelle
Die "sterbende ReLU" bezieht sich auf ein Neuron, das 0 für Ihre Daten im Trainingssatz ausgibt. Dies geschieht , weil Summe der Gewichts * Eingänge in einem Neuron (auch als Aktivierung ) wird <= 0 für alle Eingabemuster. Dies bewirkt, dass ReLU 0 ausgibt. Da die Ableitung von ReLU in diesem Fall 0 ist, werden keine Gewichtsaktualisierungen vorgenommen und das Neuron bleibt bei der Ausgabe von 0 hängen.
Dinge zu beachten:
quelle