Deep Neural Network - Backpropogation mit ReLU


17

Ich habe einige Schwierigkeiten, mit ReLU die Rückübertragung abzuleiten, und ich habe einige Arbeit geleistet, bin mir aber nicht sicher, ob ich auf dem richtigen Weg bin.

Kostenfunktion: wobei der reale Wert und ein vorhergesagter Wert ist. Nehmen Sie auch an, dass > 0 immer ist.y y x12(yy^)2yy^x


1 Schicht ReLU, wobei das Gewicht auf der 1. Schichtw1

Bildbeschreibung hier eingeben

dCdw1=dCdRdRdw1

dCw1=(yReLU(w1x))(x)


2 Layer ReLU, wobei die Gewichte auf dem 1. Layer und auf dem 2. Layer Und ich wollte den 1. Layer aktualisierenw 1 w 2w2w1w2

Bildbeschreibung hier eingeben

dCdw2=dCdRdRdw2

dCw2=(yReLU(w1ReLU(w2x))(w1x)

DaReLU(w1ReLU(w2x))=w1w2x


3 Layer ReLU, wobei die Gewichte auf dem 1. Layer , dem 2. Layer und dem 3. Layerw 2 w 1w3w2w1

Bildbeschreibung hier eingeben

dCdw3=dCdRdRdw3

dCw3=(yReLU(w1ReLU(w2(ReLU(w3)))(w1w2x)

SeitReLU(w1ReLU(w2(ReLU(w3))=w1w2w3x

Da die Kettenregel nur mit 2 Ableitungen im Vergleich zu einem Sigmoid dauert, könnte das so lang sein wie Anzahl von Schichten.n


Angenommen, ich wollte alle 3 aktualisieren, wobei die 3. Ebene ist, die 2. Ebene ist und die 3. Ebene istw 2 w 1w1w2w1

dCw1=(yReLU(w1x))(x)

dCw2=(yReLU(w1ReLU(w2x))(w1x)

dCw3=(yReLU(w1ReLU(w2(ReLU(w3)))(w1w2x)

Wie kann ein Verschwinden verhindert werden, wenn diese Ableitung korrekt ist? Im Vergleich zu Sigmoid, wo wir in der Gleichung viel mit 0,25 multiplizieren müssen, während ReLU keine Multiplikation mit konstanten Werten hat. Wenn es Tausende von Schichten gäbe, gäbe es eine Menge Multiplikation aufgrund von Gewichten, würde dies dann nicht zu einem verschwinden oder explodierenden Gradienten führen?


@NeilSlater Danke für deine Antwort! Können Sie das näher erläutern, ich bin mir nicht sicher, was Sie damit gemeint haben?
user1157751

Ah, ich glaube ich weiß was du meintest. Nun, der Grund, warum ich diese Frage aufgeworfen habe, ist, dass die Ableitung korrekt ist. Ich habe in der Umgebung gesucht und kein Beispiel für ReLU gefunden, das vollständig von Grund auf neu erstellt wurde.
user1157751

Antworten:


15

Arbeitsdefinitionen der ReLU-Funktion und ihrer Ableitung:

ReLU(x)={0,if x<0,x,otherwise.

ddxReLU(x)={0,if x<0,1,otherwise.

Das Derivat ist die Einheitssprungfunktion . Dies ignoriert ein Problem bei , bei dem der Gradient nicht genau definiert ist, dies ist jedoch für neuronale Netze kein praktisches Problem . Mit der obigen Formel ist die Ableitung bei 0 1, aber Sie können sie genauso wie 0 oder 0,5 behandeln, ohne dass die Leistung des neuronalen Netzwerks wirklich beeinträchtigt wird.x=0


Vereinfachtes Netzwerk

Schauen wir uns anhand dieser Definitionen Ihre Beispielnetzwerke an.

Sie führen eine Regression mit der Kostenfunktion . Sie haben als Ausgabe des künstlichen Neurons definiert, aber keinen Eingabewert. Ich füge das der Vollständigkeit halber hinzu - nenne es , füge eine Indizierung nach Ebene hinzu, und ich bevorzuge Kleinbuchstaben für die Vektoren und Großbuchstaben für Matrizen, also Ausgabe der ersten Ebene, für seine Eingabe und für die Gewichtung, die das Neuron mit seiner Eingabe verbindet (in einem größeren Netzwerk, das möglicherweise mit einem tieferenC=12(yy^)2Rzr(1)z(1)W(0)xrWert stattdessen). Ich habe auch die Indexnummer für die Gewichtsmatrix angepasst - warum das für das größere Netzwerk klarer wird. NB Ich ignoriere es, vorerst mehr als ein Neuron in jeder Schicht zu haben.

Betrachtet man das einfache 1-Schicht-1-Neuronennetz, so ergeben sich folgende Feed-Forward-Gleichungen:

z(1)=W(0)x

y^=r(1)=ReLU(z(1))

Die Ableitung der Kostenfunktion für eine Beispielschätzung lautet:

Cy^=Cr(1)=r(1)12(yr(1))2=12r(1)(y22yr(1)+(r(1))2)=r(1)y

Verwenden der Kettenregel für die Rückübertragung auf den Wert vor der Transformation ( ):z

Cz(1)=Cr(1)r(1)z(1)=(r(1)y)Step(z(1))=(ReLU(z(1))y)Step(z(1))

Dieses ist eine Zwischenstufe und ein kritischer Teil der Backprop-Verknüpfungsschritte. Ableitungen überspringen diesen Teil häufig, weil sie durch geschickte Kombinationen von Kostenfunktion und Ausgabeschicht vereinfacht werden. Hier ist es nicht.Cz(1)

Um den Gradienten in Bezug auf das Gewicht , ist es eine weitere Iteration der Kettenregel:W(0)

CW(0)=Cz(1)z(1)W(0)=(ReLU(z(1))y)Step(z(1))x=(ReLU(W(0)x)y)Step(W(0)x)x

. . . weil daherz(1)=W(0)xz(1)W(0)=x

Das ist die Komplettlösung für Ihr einfachstes Netzwerk.

In einem mehrschichtigen Netzwerk müssen Sie dieselbe Logik jedoch auch auf die nächste Schicht übertragen. Außerdem haben Sie in der Regel mehr als ein Neuron in einer Schicht.


Allgemeineres ReLU-Netzwerk

Wenn wir allgemeinere Begriffe hinzufügen, können wir mit zwei beliebigen Ebenen arbeiten. Nenne sie Layer indiziert mit und Layer indiziert mit . Die Gewichte sind jetzt eine Matrix. Unsere Feed-Forward-Gleichungen sehen also folgendermaßen aus:(k)i(k+1)j

zj(k+1)=iWij(k)ri(k)

rj(k+1)=ReLU(zj(k+1))

In der Ausgabeebene ist der anfängliche Gradient für immer noch . Ignorieren Sie dies jedoch für den Moment und sehen Sie sich die generische Methode zur Backpropagierung an, vorausgesetzt, wir haben bereits Beachten Sie nur, dass dies letztendlich der Fall ist woher bekommen wir die Ausgabekosten Funktionsverläufe. Dann gibt es 3 Gleichungen, die wir nach der Kettenregel aufschreiben können:rjoutputrjoutputyjCrj(k+1)

Zuerst müssen wir zur Neuroneneingabe gelangen, bevor wir ReLU anwenden können:

  1. Czj(k+1)=Crj(k+1)rj(k+1)zj(k+1)=Crj(k+1)Step(zj(k+1))

Wir müssen den Gradienten auch auf vorherige Schichten übertragen, wobei alle verbundenen Einflüsse für jedes Neuron aufsummiert werden:

  1. Cri(k)=jCzj(k+1)zj(k+1)ri(k)=jCzj(k+1)Wij(k)

Und wir müssen dies mit der Gewichtsmatrix verbinden, um später Anpassungen vornehmen zu können:

  1. CWij(k)=Czj(k+1)zj(k+1)Wij(k)=Czj(k+1)ri(k)

Sie können diese weiter auflösen (durch Ersetzen durch vorherige Werte) oder kombinieren (häufig werden die Schritte 1 und 2 kombiniert, um Farbverläufe vor der Transformation schichtweise in Beziehung zu setzen). Das Obige ist jedoch die allgemeinste Form. Sie können auch den in Gleichung 1 für die Ableitungsfunktion Ihrer aktuellen Aktivierungsfunktion einsetzen - dies ist der einzige Ort, an dem dies die Berechnungen beeinflusst.Step(zj(k+1))


Zurück zu Ihren Fragen:

Wie kann ein Verschwinden verhindert werden, wenn diese Ableitung korrekt ist?

Ihre Ableitung war nicht korrekt. Dies spricht jedoch Ihre Bedenken nicht vollständig an.

Der Unterschied zwischen der Verwendung von Sigmoid und ReLU liegt nur in der Schrittfunktion im Vergleich zu z. B. Sigmoid's , das einmal pro Schicht angewendet wird. Wie Sie aus den obigen generischen Schicht-für-Schicht-Gleichungen ersehen können, erscheint der Gradient der Übertragungsfunktion nur an einer Stelle. Die beste Fallableitung des Sigmoid addiert einen Faktor von 0,25 (wenn ), und es wird schlimmer als das und sättigt sich schnell zu einer Ableitung nahe Null weg von . Der Gradient der ReLU ist entweder 0 oder 1, und in einem gesunden Netzwerk ist 1 oft genug, um weniger Gradientenverlust während der Rückübertragung zu haben. Dies ist nicht garantiert, aber Experimente zeigen, dass ReLU in tiefen Netzwerken eine gute Leistung aufweist.y(1y)x=0,y=0.5x=0

Wenn es Tausende von Schichten gäbe, gäbe es eine Menge Multiplikation aufgrund von Gewichten. Würde dies dann nicht dazu führen, dass der Gradient verschwindet oder explodiert?

Ja, das kann sich auch auswirken. Dies kann unabhängig von der Wahl der Übertragungsfunktion ein Problem sein. In einigen Kombinationen kann ReLU auch dazu beitragen, explodierende Steigungen unter Kontrolle zu halten, da sie nicht gesättigt sind (daher sind große Gewichtsnormen in der Regel schlechte direkte Lösungen und es ist unwahrscheinlich, dass sich ein Optimierer auf sie zubewegt). Dies ist jedoch nicht garantiert.


dCdy^

Cy^=Cr(1)y^=r(1)

C12(yy^)2y^dCdy^=dCdUdUdy^U=yy^

Wenn Sie es einfacher machen können, indem Sie expandieren. Dann erweitern Sie bitte das Quadrat.
user1157751

@ user1157751: Ja, Sie könnten die Kettenregel auf diese Weise verwenden, und sie würde die gleiche Antwort geben wie ich. Ich habe das Quadrat gerade erweitert - ich zeige es.
Neil Slater
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.