Saya mencoba memahami bagaimana backpropagation bekerja untuk lapisan output softmax / cross-entropy.
Fungsi kesalahan lintas entropi adalah
dengan dan sebagai target dan output pada neuron , masing-masing. Jumlahnya adalah di atas setiap neuron di lapisan output. itu sendiri merupakan hasil dari fungsi Softmax:
Sekali lagi, jumlahnya adalah lebih dari setiap neuron di lapisan output dan adalah input ke neuron :
Itu adalah jumlah seluruh neuron di lapisan sebelumnya dengan output yang sesuai mereka dan berat menuju neuron ditambah bias .
Sekarang, untuk memperbarui bobot yang menghubungkan neuron di lapisan output dengan neuron di lapisan sebelumnya, saya perlu menghitung turunan parsial dari fungsi kesalahan menggunakan aturan rantai:
dengan sebagai input ke neuron .
Istilah terakhir cukup sederhana. Karena hanya ada satu bobot antara dan , turunannya adalah:
Istilah pertama adalah derivasi dari fungsi kesalahan sehubungan dengan output :
Jangka menengah adalah derivasi dari fungsi Softmax sehubungan dengan input lebih sulit:
Katakanlah kita memiliki tiga neuron output yang sesuai dengan kelas maka o b = s o f t m a x adalah:
dan turunannya menggunakan aturan hasil bagi:
=softmax(b)-softmax2(b)=ob-o 2 b =ob(1-ob) Kembali ke jangka menengah untuk backpropagation ini berarti: ∂oj
Menyatukan semuanya saya dapatkan
yang berarti, jika target untuk kelas ini adalah , maka saya tidak akan memperbarui bobot untuk ini. Itu kedengarannya tidak benar.
Menyelidiki hal ini saya menemukan orang yang memiliki dua varian untuk derivasi softmax, satu di mana dan yang lainnya untuk i ≠ j , seperti di sini atau di sini .
Tapi aku tidak bisa memahaminya. Juga saya bahkan tidak yakin apakah ini penyebab kesalahan saya, itulah sebabnya saya memposting semua perhitungan saya. Saya harap seseorang dapat mengklarifikasi saya di mana saya kehilangan sesuatu atau salah.