Differenzierung der Kreuzentropie


9

Ich habe versucht, ein Programm zum Trainieren neuronaler Netze auf meinem Computer zu erstellen. Für das betreffende Netzwerk habe ich mich für die Funktion Cross Entropy Error entschieden:

E=jtjlnoj

Wobei die für das Neuron ist und die Ausgabe dieses Neurons ist, das versucht, vorherzusagen . j o j t jtjjojtj

Ich möchte wissen, was für ein Neuron . Meine Intuition (plus meine begrenzten Kenntnisse der Analysis) ließ mich glauben, dass dieser Wert . j-tjδEδojjtjoj

Dies scheint jedoch nicht richtig zu sein. Cross Entropy wird häufig zusammen mit der Softmax-Funktion verwendet, sodass wobei z die Menge der Eingaben für alle Neuronen in der Softmax-Schicht ist ( siehe hier) ).

oj=ezjkezk

Aus dieser Datei ich :

δojδzj=oj(1oj)

Nach dieser Frage : Dies widerspricht jedoch meiner früheren Vermutung von . Warum?δE

δEδzj=tjoj
δEδoj

δEj

δEjδzj=δEjδojδojδzj
=tj-Oj
δEjδoj=δEjδzj÷δojδzj
-tj
=tjojoj(1oj)
im direkten Widerspruch zu meinem früheren Lösung von (wenn auch) Lösung für ist also richtig und warum? δEj
tjoj
δEjδoj

Antworten:


6

Ihr ist korrekt, aber sollte wenn , unter Verwendung der in dem Beitrag angegebenen Ergebnisse haben wir wenn also ist die Summation E.EojEzj

Ezj=iEoioizj
i=j
Eojojzj=tjojoj(1oj)=tjojtj
ij
oizj=ezikezkzj=ezi(kezk)2ezj=oioj
Eoioizj=tioi(oioj)=tioj
titi=1E.
Ezj=iEoioizj=itiojtj
da ein ist heißer Vektor, daher siehe auch diese Frage .titi=1
Ezj=ojtj
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.