Vektorisierung des Kreuzentropieverlustes

9

Ich habe es mit einem Problem zu tun, das mit dem Finden des Gradienten der Kreuzentropieverlustfunktion für den Parameter θ wobei:

CE(θ)=iyilog(y^i)

Wobei y i = s o f t m ein x ( θ i ) und θ i ist ein Vektoreingang.y^i=softmax(θi)θi

Auch y ist ein One - hot - Vektor mit der richtigen Klasse und y ist die Vorhersage für jede Klasse unter Verwendung von Softmax - Funktion.y^

Somit kann beispielsweise aufweisen yi=(00010) und y i = ( 0,10 0,20 0,10 0,40 0,20 )y^i=(0.100.200.100.400.20)

Um die partielle Ableitung CE(θ)θik=yiky^ik

Von dort aus sind für jedes die einzelnen Teilgradienten ∂ C E ( θ )iCE(θ)θi=(yi1y^i1yi2y^i2yi3y^i3yi4y^i4yi5y^i5)

Dies ist jedoch nicht der Fall, da die Verläufe für alle anderen Zeilen mit Ausnahme der 4. Zeile tatsächlich 0 sein sollten, da wir die Eigenschaft des einen heißen Vektors verwendet haben. Der tatsächliche Gradient sollte also CE(θ)θi=(000yi4y^i40)

Und daher die Gradienten für alle sollte C E ( θ )iCE(θ)θ=(000yi4y^i4000yi3y^i300...0yi2y^i2000)

Aber dies ist nicht gleich y - y . Wir sollten den Gradienten der Kreuzentropiefunktion also nicht als Vektordifferenz zwischen vorhergesagt und ursprünglich bezeichnen.y^y

Kann jemand dies klarstellen?

UPDATE: Meine Ableitung wurde behoben

θ=(θ1θ2θ3θ4θ5)

CE(θ)=iyilog(y^i)

Wobei y i = s o f t m ein x ( θ i ) und θ i ist ein Vektoreingang.y^i=softmax(θi)θi

Auch ist ein One - hot - Vektor mit der richtigen Klasse und y ist die Vorhersage für jede Klasse unter Verwendung von Softmax - Funktion.yy^

CE(θ)θi=(log(y^k))

UPDATE: Der Index wurde aus y und yy^ Daher kann beispielsweise hat und y = ( 0,10 0,20 0,10 0,40 0,20 )y=(00010)y^=(0.100.200.100.400.20)

θikθiCE(θ)θi=yky^k

Von dort aus sind für jedes i die einzelnen Teilgradienten ∂ C E ( θ iCE(θ)θ=(y1y^1y2y^2y3y^3y4y^4y5y^5)

Die oben geschieht , weil CE(θ)=(yklog(y^k))y^k=log(softmax(θk))=θklog(jexp(θj))CE(θ)θi

CE(θ)θi=(θkθisoftmax(θi))

θkθi=0,ikθkθi=1,i=kCE(θ)θ=y^y

Shubhanshu Mishra
quelle

Antworten:

2

Nein, die Farbverläufe sollten für die anderen Komponenten nicht Null sein. Wenn Ihre Vorhersage isty^iji,jyij=0y^ij

Neil G.
quelle
Aber y^ijyijyiCE(θ)θij=0,jkyik=1
1
Vielen Dank für Ihre Eingabe @ neil-g Ich konnte meine Ableitung des Gradienten korrigieren.
Shubhanshu Mishra
15

Das Folgende ist der gleiche Inhalt wie die Bearbeitung, jedoch in (für mich) etwas klarerem Schritt-für-Schritt-Format:

Wir versuchen zu beweisen, dass:

CEθ=y^y

gegeben

CE(θ)=iyilog(y^i)

und

y^i=exp(θi)jexp(θj)

yj=0jkyk=1

CE(θ)= log(y^k)

= log(exp(θk)jexp(θj))

= θk+log(jexp(θj))

CEθ=θkθ+θlog(jexp(θj))

θkθk=1θkθq=0qk

θkθ=y

θ

θilog(jexp(θj))=exp(θi)jexp(θj)=y^i

Daher,

CEθ=θlog(jexp(θj))θkθ=y^

Maarten
quelle