Softmax-Schicht in einem neuronalen Netzwerk


43

Ich versuche, einem mit Backpropagation trainierten neuronalen Netzwerk eine Softmax-Ebene hinzuzufügen, also versuche ich, den Gradienten zu berechnen.

Der Softmax-Ausgang ist wobeijdie Ausgangsneuronenzahl ist.hj=ezjezij

Wenn ich es ableite, bekomme ich

hjzj=hj(1hj)

Ähnlich wie bei der logistischen Regression. Dies ist jedoch falsch, da meine Überprüfung des numerischen Gradienten fehlschlägt.

Was mache ich falsch? Ich hatte den Gedanken, dass ich auch die Kreuzableitungen berechnen muss (dh ) aber ich bin mir nicht sicher, wie ich das machen soll und halte die Dimension des Gradienten gleich, damit er für den Back Propagation-Prozess passt.hjzk


3
Sie sollten den Titel Ihrer Frage verbessern, da es nicht um das Hinzufügen einer allgemeinen Softmax-Ebene zu einem NN geht, da Ihre Frage sich darauf bezieht, wie die Verlaufsprüfung fehlschlägt. Ich empfehle dringend, den Titel in "Warum funktioniert die Backpropagation nicht mehr richtig, wenn ich meinem neuronalen Netzwerk eine Softmax-Ebene hinzufüge" zu ändern.
Charlie Parker

Antworten:


43

Ich fühle mich ein bisschen schlecht über meine eigene Antwort für diese Bereitstellung , weil es ziemlich gut durch Amöben und juampa, mit Ausnahme vielleicht der letzte Intuition darüber , wie das aufgenommen wird Jacobi reduziert auf einen Vektor zurück.

Sie haben den Gradienten der Diagonale der jakobianischen Matrix, das heißt, richtig abgeleitet

hizj=hi(1hj):i=j

und wie Amöbe es sagte, müssen Sie auch die nicht diagonalen Einträge des Jacobian ableiten, die ergeben

hizj=hihj:ij

Diese beiden Begriffsdefinitionen können bequem mit einem Konstrukt namens Kronecker Delta kombiniert werden , sodass die Definition des Gradienten erfolgt

hizj=hi(δijhj)

[J]ij=hi(δijhj)

hixi

[x]k=i=1hi,k

In Anbetracht der oben definierten Jacobi-Matrix wird dies trivial als das Produkt der Matrix und des Ausgangsfehlervektors implementiert:

σl=Jσl+1

Wenn die Softmax-Ebene Ihre Ausgabeebene ist, vereinfacht die Kombination mit dem Cross-Entropy-Kostenmodell die Berechnung auf einfache Weise

σl=ht

th


σl=(σl,1,σl,2,...,σl,k)σl,j=Czj

Ja, das ist richtig.
Mranz

Könnte jemand bitte erklären, was die Kleinbuchstaben-Delta-Terme im Kronecker-Delta sind und wie man sie berechnet?
Danijar

Ich stecke eine Weile bei diesem Problem fest. Um klarzustellen. Sie haben einen Vektor (vor Softmax) und berechnen dann Softmax. Da die Werte von softmax von allen Eingabewerten abhängen, wird die tatsächliche jacobianische Matrix benötigt. Dann nehmen Sie die jacobianische Matrix und summieren die Zeilen, um einen einzelnen Zeilenvektor zu erhalten, den Sie wie gewohnt für den Gradientenabstieg verwenden. Ist das alles zu 100% richtig?
Harveyslash

14

Die Ableitung ist falsch. Es sollte sein,

hjzk=hjδkjhjhk

C

nk=1Ctknlnyk(xn)

Wenn der Superindex über die Stichprobenmenge läuft, ist der Wert der k-ten Komponente des Ziels für die n-te Stichprobe. Hier wird angenommen, dass Sie ein 1-aus-C-Codierungsschema verwenden, d. . In diesem Fall sind alle t Null, mit Ausnahme der Komponente, die die entsprechende Klasse darstellt, nämlich Eins.tkntkn

Beachten Sie, dass die ts konstant sind. Daher ist das Minimieren dieser Funktion gleichbedeutend mit dem Minimieren,

nk=1Ctknlnyk(xn)+nk=1Ctknlntkn=nk=1Ctknlnyk(xn)tkn

was den Vorteil hat, dass der Jakobianer eine sehr bequeme Form annimmt, nämlich

Ezj=hjtj

Ich würde Ihnen empfehlen, ein Exemplar von Bishops Neuronalen Netzen für die Mustererkennung zu erwerben . IMHO immer noch das beste Buch über neuronale Netze.


14

Jeder Ausgang des Softmax hängt von allen Eingängen ab, daher ist der Gradient in der Tat eine ganze Jacobi-Matrix. Sie haben richtig berechnet , aber Sie brauchen auch wenn . Ich denke, wenn Sie den ersten Ausdruck ableiten können, sollten Sie auch den zweiten leicht ableiten können.khj=-hjHkjkjhj=hjzj=hj(1hj)khj=hjhkjk

Ich bin mir nicht sicher, welches Problem Sie bei der Rückübertragung sehen: In der Softmax-Schicht haben Sie Ausgänge und Eingänge, daher sollte ein Fehler von jedem Ausgang zu jedem Eingang übertragen werden, und genau deshalb benötigen Sie den gesamten Jacobi. Andererseits haben Sie normalerweise eine Kostenfunktion, die der Softmax-Ausgabe zugeordnet ist, z. B. wobei Ihre gewünschten Ausgaben sind (wenn Sie klassifizieren, ist oft eine von ihnen gleich 1) und andere zu 0). Dann interessieren Sie sich tatsächlich für , das mit einer Kettenregel berechnet werden kann, die zu einem ordentlichen Ausdruck führt, und in der Tat ein Vektor (keine Matrix) ist.j C = - j t j log h j , t j Cjj

C=jtjloghj,
tjCzj

1
Ich werde versuchen, mein Problem besser zu beschreiben, zum Beispiel gemäß diesem Tutorial ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm , ich muss die Gewichte und das Delta mit der Ableitung elementweise multiplizieren (Schritt Nummer 3). Wenn ich also die vollständige jacobianische Matrix habe, passen die Abmessungen nicht. Vielen Dank.
Ran

Wissen Sie, wie Sie vorgehen müssen, wenn es sich nicht um einen Softmax, sondern um eine übliche versteckte Schicht handelt? Stellen Sie sich vor, dass jede Einheit auf dieser Ebene Eingaben von allen Einheiten der vorherigen Ebene erhält (dh diese Ebene ist "vollständig verbunden"), was normalerweise der Fall ist. Dann müssen Sie auch die Fehler durch diese Schicht zurückbreiten, und die Ableitungen bilden auch eine Jacobi-Matrix. Wenn Sie sich nicht sicher sind, wie es geht, hat Ihre Verwirrung nichts mit softmax zu tun.
Amöbe sagt Reinstate Monica

1
Ich habe es erfolgreich für lineare und Sigmoid-Ebenen implementiert, da die Ableitung ein Vektor ist, sodass ich keine Probleme mit den Dimensionen hatte.
Ran

Tut mir leid, Ran, vielleicht bin ich nur dumm, aber wenn Sie eine Sigmoid-Schicht haben, die vollständig mit der vorherigen Schicht verbunden ist, wird der Ausgang (oder Eingang) jeder Einheit in Bezug auf die eingehende Verbindung von jeder Einheit auf der abgeleitet vorherige Schicht, dh alle Derivate bilden eine 2D-Matrix, n'est-ce pas? iji
Amöbe sagt Reinstate Monica
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.