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=−∑jtjln⁡oj

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δojj−tjoj

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=ezj∑kezk

Aus dieser Datei ich :

δojδzj=oj(1−oj)

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

δEδzj=tj−oj
δEδoj

⇒δEj

δEjδzj=δEjδojδojδzj
=tj-Oj
⇒δEjδoj=δEjδzj÷δojδzj
-tj
=tj−ojoj(1−oj)
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.∂E∂oj∂E∂zj

∂E∂zj=∑i∂E∂oi∂oi∂zj
i=j
∂E∂oj∂oj∂zj=−tjojoj(1−oj)=tjoj−tj
i≠j
∂oi∂zj=∂ezi∑kezk∂zj=−ezi(∑kezk)2ezj=−oioj
∂E∂oi∂oi∂zj=−tioi(−oioj)=tioj
t∑iti=1∂E.
∂E∂zj=∑i∂E∂oi∂oi∂zj=∑itioj−tj
da ein ist heißer Vektor, daher siehe auch diese Frage .t∑iti=1
∂E∂zj=oj−tj
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.