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=jtjlnoj

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 sertjoj.

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=ezjkezk
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(1oj)

De acuerdo con esta pregunta :

δEδzj=tjoj
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
=tjojoj(1oj)
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é?
Geno Racklin Asher
fuente

Respuestas:

6

Tu Eoj es correcto, pero Ezj debiera ser

Ezj=iEoioizj
cuando i=j, utilizando los resultados dados en la publicación que tenemos
Eojojzj=tjojoj(1oj)=tjojtj
cuando ij
oizj=ezikezkzj=ezi(kezk)2ezj=oioj
Eoioizj=tioi(oioj)=tioj
entonces el resumen es
Ezj=iEoioizj=itiojtj
ya que t es un vector único, iti=1 por lo tanto
Ezj=ojtj
También vea esta pregunta .
dontloo
fuente