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.
Wenn ich es ableite, bekomme ich
Ä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.
Antworten:
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
und wie Amöbe es sagte, müssen Sie auch die nicht diagonalen Einträge des Jacobian ableiten, die ergeben
Diese beiden Begriffsdefinitionen können bequem mit einem Konstrukt namens Kronecker Delta kombiniert werden , sodass die Definition des Gradienten erfolgt
In Anbetracht der oben definierten Jacobi-Matrix wird dies trivial als das Produkt der Matrix und des Ausgangsfehlervektors implementiert:
Wenn die Softmax-Ebene Ihre Ausgabeebene ist, vereinfacht die Kombination mit dem Cross-Entropy-Kostenmodell die Berechnung auf einfache Weise
quelle
Die Ableitung ist falsch. Es sollte sein,
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.tnk tnk
Beachten Sie, dass die ts konstant sind. Daher ist das Minimieren dieser Funktion gleichbedeutend mit dem Minimieren,
was den Vorteil hat, dass der Jakobianer eine sehr bequeme Form annimmt, nämlich
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.
quelle
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=-hjHkj≠k∂jhj=∂hj∂zj=hj(1−hj) ∂khj=−hjhk j≠k
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 ∂ Cj j
quelle