Diferenciación de entropía cruzada


9

He estado tratando de crear un programa para entrenar redes neuronales en mi computadora. Para la red en cuestión, he decidido usar la función Error de entropía cruzada:

E=−∑jtjln⁡oj

Dónde tj es la salida objetivo para la neurona jy oj es la salida de esa neurona, intentando predecir tj.

Quiero saber que δEδoj es para alguna neurona j. Mi intuición (más mi conocimiento limitado del cálculo) me lleva a creer que este valor debería ser−tjoj.

Sin embargo, esto no parece ser correcto. Cross Entropy se usa a menudo en tándem con la función softmax, de modo que

oj=ezj∑kezk
donde z es el conjunto de entradas a todas las neuronas en la capa softmax ( ver aquí ).

De este archivo , deduzco que:

δojδzj=oj(1−oj)

De acuerdo con esta pregunta :

δEδzj=tj−oj
Pero esto está en conflicto con mi conjetura anterior de δEδoj. ¿Por qué?

δEjδzj=δEjδojδojδzj
⇒δEjδoj=δEjδzj÷δojδzj
=tj−ojoj(1−oj)
en contradicción directa con mi solución anterior de
−tjoj
Entonces, ¿cuál (si alguna) solución para δEjδoj es correcto y por qué?

Respuestas:


6

Tu ∂E∂oj es correcto, pero ∂E∂zj debiera ser

∂E∂zj=∑i∂E∂oi∂oi∂zj
cuando i=j, utilizando los resultados dados en la publicación que tenemos
∂E∂oj∂oj∂zj=−tjojoj(1−oj)=tjoj−tj
cuando i≠j
∂oi∂zj=∂ezi∑kezk∂zj=−ezi(∑kezk)2ezj=−oioj
∂E∂oi∂oi∂zj=−tioi(−oioj)=tioj
entonces el resumen es
∂E∂zj=∑i∂E∂oi∂oi∂zj=∑itioj−tj
ya que t es un vector único, ∑iti=1 por lo tanto
∂E∂zj=oj−tj
También vea esta pregunta .
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.