Vectorización de la pérdida de entropía cruzada


9

Estoy tratando con un problema relacionado con encontrar el gradiente de la función de pérdida de entropía cruzada wrt el parámetro donde:θ

CE(θ)=−∑iyi∗log(y^i)

Donde, y es una entrada vectorial.y^i=softmax(θi)θi

Además, es un vector caliente de la clase correcta y es la predicción para cada clase que utiliza la función softmax.yy^

Por lo tanto, por ejemplo, tengamos yyyo=(0 00 00 010 0)y^i=(0.100.200.100.400.20)

Para encontrar la derivada parcial∂CE(θ)∂θik=−yik−y^ik

Tomando de allí para cada los gradientes parciales individuales serán i∂CE(θ)∂θi=(yi1−y^i1yi2−y^i2yi3−y^i3yyo4 4-y^yo4 4yyo5 5-y^yo5 5)

Pero esto no es cierto porque los gradientes en realidad deberían ser 0 para todas las demás filas, excepto para la cuarta fila, porque hemos utilizado la propiedad del vector caliente. Entonces el gradiente real debe ser ∂CE(θ)∂θi=(000yi4−y^i40)

Y por lo tanto los gradientes para todo deben ser i∂CE(θ)∂θ=(000yi4−y^i4000yi3−y^i300...0yi2−y^i2000)

Pero esto no es igual a . Por lo tanto, no deberíamos llamar al gradiente de la función de entropía cruzada una diferencia vectorial entre el predicho y el original.y^−y

¿Alguien puede aclarar sobre esto?

ACTUALIZACIÓN: Se corrigió mi derivación

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

CE(θ)=−∑iyi∗log(y^i)

Donde, y es una entrada vectorial.y^i=softmax(θi)θi

Además, es un vector caliente de la clase correcta y es la predicción para cada clase que utiliza la función softmax.yy^

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

ACTUALIZACIÓN: se eliminó el índice de yyy^ Por lo tanto, por ejemplo, tengamos yy=(00010)y^=(0.100.200.100.400.20)

ACTUALIZACIÓN: Se corrigió que estaba tomando wrt derivada , debería ser solo wrt . θikθi Para encontrar la derivada parcial∂CE(θ)∂θi=−yk−y^k

Tomando de allí para cada los gradientes parciales individuales serán i∂CE(θ)∂θ=(y1−y^1y2−y^2y3−y^3y4−y^4y5−y^5)

Lo anterior sucede porque Y, Tomando la derivada parcial de wrt obtenemos:CE(θ)=−(yk∗log(y^k))y^k=log(softmax(θk))=θk−log(∑jexp(θj))CE(θ)θi

∂CE(θ)∂θi=−(∂θk∂θi−softmax(θi))

PASO PRINCIPAL: El hecho de que y crea el vector que completa la prueba.∂θk∂θi=0,i≠k∂θk∂θi=1,i=k∂CE(θ)∂θ=y^−y

Respuestas:


2

No, los gradientes no deberían ser cero para los otros componentes. Si su predicción es para algunos y su observación , entonces pronosticó demasiado con .y^iji,jyij=0y^ij


Pero siempre será un valor softmax y la observación real. Y debido a que usamos el hecho de que es un vector caliente, por lo tanto, la derivada parcial , dado ¿Estoy cometiendo un error en la diferenciación? y^ijyijyi∂CE(θ)∂θij=0,∀j≠kyik=1
— Shubhanshu Mishra

1
Gracias por su aporte @ neil-g Pude corregir mi derivación del gradent.
— Shubhanshu Mishra

15

El siguiente es el mismo contenido que la edición, pero en (para mí) un formato paso a paso un poco más claro:

Estamos tratando de demostrar que:

∂CE∂θ=y^−y

dado

CE(θ)=−∑iyi∗log(y^i)

y

y^yo=miXpags(θyo)∑jmiXpags(θj)

Lo sabemos yj=0 0 para j≠k y yk=1, entonces:

Cmi(θ)=- losol(y^k)

=- losol(miXpags(θk)∑jmiXpags(θj))

=- θk+losol(∑jmiXpags(θj))

∂Cmi∂θ=-∂θk∂θ+∂∂θlosol(∑jmiXpags(θj))

Usa el hecho de que ∂θk∂θk=1 y ∂θk∂θq=0 0 para q≠k, para mostrar que.

∂θk∂θ=y

Para la segunda parte, escribimos la derivada para cada elemento individual de θ y usa la regla de la cadena para obtener:

∂∂θyolosol(∑jmiXpags(θj))=miXpags(θyo)∑jmiXpags(θj)=y^yo

Por lo tanto,

∂Cmi∂θ=∂∂θlosol(∑jmiXpags(θj))-∂θk∂θ=y^ - y

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.