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(θ)=iyilog(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 parcialCE(θ)θik=yiky^ik

Tomando de allí para cada los gradientes parciales individuales serán iCE(θ)θi=(yi1y^i1yi2y^i2yi3y^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=(000yi4y^i40)

Y por lo tanto los gradientes para todo deben ser iCE(θ)θ=(000yi4y^i4000yi3y^i300...0yi2y^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(θ)=iyilog(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 parcialCE(θ)θi=yky^k

Tomando de allí para cada los gradientes parciales individuales serán iCE(θ)θ=(y1y^1y2y^2y3y^3y4y^4y5y^5)

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

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

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

Shubhanshu Mishra
fuente

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

Neil G
fuente
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^ijyijyiCE(θ)θij=0,jkyik=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(θ)=iyilog(y^i)

y

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

Lo sabemos yj=0 0 para jk 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 qk, 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

Maarten
fuente