Diferenciação de Entropia Cruzada


9

Eu tenho tentado criar um programa para treinar redes neurais no meu computador. Para a rede em questão, decidi usar a função Erro de entropia cruzada:

E=−∑jtjln⁡oj

Onde é a saída alvo do neurônio e é a saída desse neurônio, tentando prever .tjjojtj

Eu quero saber o que é para alguns neurônios . Minha intuição (mais meu conhecimento limitado de cálculo) me leva a acreditar que esse valor deve ser .δEδojj−tjoj

No entanto, isso não parece estar correto. A entropia cruzada é freqüentemente usada em conjunto com a função softmax, de modo que que z é o conjunto de entradas para todos os neurônios na camada softmax ( veja aqui )

oj=ezj∑kezk

A partir deste arquivo , entendo que:

δojδzj=oj(1−oj)

De acordo com esta pergunta : Mas isso entra em conflito com o meu palpite anterior de . Por quê?

δEδzj=tj−oj
δEδoj

δEjδzj=δEjδojδojδzj
⇒δEjδoj=δEjδzj÷δojδzj
=tj−ojoj(1−oj)
em contradição direta com a anterior solução de Então, qual (se houver) solução para está correta e por quê?
−tjoj
δEjδoj

Respostas:


6

Seu está correto, mas deve ser quando , usando os resultados apresentados na publicação, temos quando portanto o somatório é ∂E∂oj∂E∂zj

∂E∂zj=∑i∂E∂oi∂oi∂zj
i=j
∂E∂oj∂oj∂zj=−tjojoj(1−oj)=tjoj−tj
i≠j
∂oi∂zj=∂ezi∑kezk∂zj=−ezi(∑kezk)2ezj=−oioj
∂E∂oi∂oi∂zj=−tioi(−oioj)=tioj
∂E∂zj=∑i∂E∂oi∂oi∂zj=∑itioj−tj
pois é um vetor quente, portanto, também vêem esta pergunta .t∑iti=1
∂E∂zj=oj−tj
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.