Diferensiasi Lintas Entropi


9

Saya telah mencoba membuat program untuk melatih Neural Networks di komputer saya. Untuk Jaringan yang dimaksud, saya telah memutuskan untuk menggunakan fungsi Cross Entropy Error:

E=−∑jtjln⁡oj

Di mana adalah output target untuk Neuron , dan adalah output dari neuron itu, mencoba untuk memprediksi .tjjojtj

Saya ingin tahu apa untuk sebagian Neuron . Intuisi saya (ditambah pengetahuan saya yang terbatas tentang kalkulus) membuat saya percaya bahwa nilai ini seharusnya .δEδojj−tjoj

Namun, ini sepertinya tidak benar. Cross Entropy sering digunakan bersama dengan fungsi softmax, sehingga mana z adalah himpunan input untuk semua neuron dalam lapisan softmax ( lihat di sini ).

oj=ezj∑kezk

Dari file ini , saya kumpulkan bahwa:

δojδzj=oj(1−oj)

Menurut pertanyaan ini : Tapi ini bertentangan dengan tebakan saya sebelumnya tentang . Mengapa?

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

δEjδzj=δEjδojδojδzj
⇒δEjδoj=δEjδzj÷δojδzj
=tj−ojoj(1−oj)
bertentangan langsung dengan saya sebelumnya solusi Jadi solusi (jika salah) mana untuk benar, dan mengapa?
−tjoj
δEjδoj

Jawaban:


6

Anda adalah benar, tetapi harus ketika , menggunakan hasil yang diberikan dalam pos yang kita miliki ketika jadi adalah ∂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
karena adalah satu- vektor panas, karena itu juga melihat pertanyaan ini .t∑iti=1
∂E∂zj=oj−tj
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.