Was ist das "sterbende ReLU" -Problem in neuronalen Netzen?


119

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.


2
Kann jemand einen Verweis auf einen wissenschaftlichen Artikel über "tote Neuronen" finden? Da dies das erste Ergebnis bei Google-Versuchen ist, wäre es großartig, wenn diese Frage mit einem Verweis bearbeitet würde.
Marek Židek

Können wir die Verzerrung durch Regularisierung verhindern, um dieses Problem zu lösen?
Len

3
Jungs, ich habe es geschafft, tote Relu-Neuronen wiederzubeleben, indem ich für Gewichte <= 0 neue zufällige (normalverteilte) Werte für jede Epoche angegeben habe. Ich bin mir nicht sicher, ob dies der sogenannte Phasenübergang ist.) Kann jetzt höhere Lernraten verwenden, ergibt eine bessere Gesamtgenauigkeit (nur bei linearer Regression getestet). Es ist wirklich einfach zu implementieren.
Boli

1
@boli, kannst du deine Implementierung hier teilen?
Anu

Antworten:


121

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.01xwenn 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.


7
Guter Kommentar und Erwähnenswert sind auch die Exponential Linear Units (ELUs), mit deren Hilfe das Problem besser
behoben werden

14
@alex: Weil Voreingenommenheit für Genauigkeit sehr wichtig ist. Voreingenommenheit loszuwerden ist fast dasselbe wie zu sagen, dass alle Entscheidungsebenen den Ursprung passieren müssen - mit wenigen Ausnahmen ist dies eine schlechte Wahl. Tatsächlich bedeutet das Entfernen von Bias-Begriffen in einem neuronalen Netzwerk oder verwandten Modellen (wie lineare oder logistische Regression) in der Regel, dass Ihr Modell unter Bias leidet! Es ist eine der wenigen Möglichkeiten , wie Sie mit einem Modell kann am Ende , die beide Unterbau und Überanpassung zugleich ist,,
Neil Slater

1
@Alex: Ich denke, es ist üblich, ReLUs eine kleine positive Tendenz hinzuzufügen. Ich weiß nicht, ob dies bei einem "sterbenden ReLU-Problem" hilft - es würde wahrscheinlich die Gradientenwerte numerisch nicht sehr stark ändern (da der Gradient für die ReLU entweder 1 oder 0 ist und wenn er 1 ist, könnte er überschießen, a Eine geringe Anlaufverzerrung scheint nur einen sehr geringen Unterschied zu machen. Meistens denke ich, dass es nur ein Trick ist, dem anfänglichen Lernen einen kleinen Schub zu verleihen - aber das könnte helfen, indem man einen besseren Start erhält und im Allgemeinen früher niedrigere Steigungen hat.
Neil Slater

1
@max: In meiner Antwort fehlt der Teil "für jede Eingabe". Kein Gefälle wird jedes Gewicht mit dem „toten“ Neuronen in einem Feed-Forward - Netz zuzugeordnet fließen, da alle Pfade auf derjenigediejenigedasjenige Gewichte sind geschnitten - es gibt keine alternativen Pfade für die Gradienten zu der Untergruppe der Gewichte , die relu Zuführeinheit zu fließen. Sie können eine ReLU z. B. in einer CNN anzeigen oder eine gemeinsame Gewichtung festlegen. In diesem Fall müssten alle Positionen in der Feature-Map auf einmal auf Null gesetzt werden. Ich würde das jedoch als eine weitere Instanz von "für jede Eingabe" ansehen.
Neil Slater

1
@anu: Nach Gefälle. Ein großer positiver Gradient, der durch einen großen Fehlerwert verursacht wird, kann wiederum dazu führen, dass ein einzelner Schritt des Verzerrungsterms groß genug ist, um das Neuron zu "töten", so dass es einen Zustand (für Gewichte und Verzerrung) erreicht, der für zukünftige Eingaben gilt auf die ReLU-Funktion steigen nie über 0.
Neil Slater

102

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

zn=i=0kwiain
wiainxnReLU=max(0,zn)

Angenommen, ein sehr einfaches Fehlermaß

error=ReLUy

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 :

errorzn=δn={1zn00zn<0
wj
error=errorwj=errorzn×znwj=δn×ajn={ajnzn00zn<0

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 .xnx

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)Bildbeschreibung hier eingeben


Vergessen Sie nicht den Bias-Term in der Formel für die Eingabe in den Gleichrichter?
Tom Hale

Ich glaube, ich bin der Notation einiger Lehrbücher gefolgt, in denen angenommen wird, dass a_0 = 1 für alle Ebenen ist und w_0 die Tendenz ist. Die Voreingenommenheit ist nicht wichtig, deshalb ist es besser, sie wegzulassen
MohamedEzz

@MohamedEzz, ich habe deinen Punkt nicht verstanden 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?
Anu

1
Mit "optimal" meine ich, dass das Netzwerk, wenn es eine bessere Vorhersage für diese Eingabe machen möchte, die Gewichte so anpassen muss, dass die ReLU einen positiven Wert ergibt, diese Anpassung aufgrund des 0-Gradienten nicht durchführen kann auf der flachen Seite.
MohamedEzz

Erstaunliche Antwort. Vielen Dank
David Refaeli

13

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)LLin 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.WL

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:

Aktivierungen in einem ReLU MLP mit unterschiedlichen Initialisierungsstrategien

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 istLxj(i)jif(s)=max(0,s)sj(i)(i+1)i(i+1)

Lwjk(i)=Lxk(i+1)xk(i+1)wjk(i).

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 kannwjk(i)

xk(i+1)wjk(i)=f(sj(i))sj(i)sj(i)wjk(i)=f(sj(i))xj(i).

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.


Tolle Erklärung !, könntest du mir bitte helfen, zu verstehen, 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?
Anu

@anu Die Gewichtsaktualisierung lautet . Wenn Sie also einen großen Schritt machen und in diesem Fall ein großes auswählen und wenn positiv ist, können Sie sehen, dass möglicherweise wird Negativ. Dies ist besonders schlimm, wenn wir den Bias auf einen großen negativen Wert aktualisieren. wλdwλdww
Johnson

@JohnsonJia, großartig, ich habe es verstanden :), eine weitere Abklärung ist erforderlich, warum es besonders schlecht ist, wenn es sich um eine Verzerrung im Vergleich zum Gewicht handelt, da der negative Beitrag sowohl auf Gewicht als auch auf Verzerrung beruhen könnte. Korrigieren Sie mich, wenn ich falsch liege.
Anu

Da die Vorspannung nicht durch die Eingabe geändert wird: , bleibt möglicherweise für alle Werte von negativ, wenn sehr negativ ist . z=wx+bbzx
Johnson,

5

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 " .wiwi


4

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:

  1. Sterbende ReLU bedeutet nicht, dass die Ausgabe des Neurons auch zum Testzeitpunkt Null bleibt. Abhängig von Verteilungsunterschieden kann dies der Fall sein oder nicht.
  2. Sterbende ReLU ist nicht permanent tot. Wenn Sie neue Trainingsdaten hinzufügen oder ein vorab trainiertes Modell für ein neues Training verwenden, treten diese Neuronen möglicherweise zurück!
  3. Technisch gesehen muss ReLU nicht für ALLE Trainingsdaten den Wert 0 ausgeben. Es kann vorkommen, dass für einige Daten ein Wert ungleich Null ausgegeben wird, die Anzahl der Epochen jedoch nicht ausreicht, um die Gewichte signifikant zu verschieben.
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.