Saya merasa agak buruk tentang memberikan jawaban saya sendiri untuk ini karena cukup baik ditangkap oleh amuba dan juampa, kecuali mungkin intuisi terakhir tentang bagaimana Jacobian dapat direduksi kembali menjadi vektor.
Anda dengan benar mendapatkan gradien diagonal dari matriks Jacobian, yang artinya
∂hsaya∂zj= hsaya( 1 - jamj): i = j
dan seperti yang dinyatakan amuba, Anda juga harus menurunkan entri diagonal dari Jacobian, yang menghasilkan
∂hsaya∂zj= - hsayahj: i ≠ j
Kedua konsep definisi ini dapat dengan mudah digabungkan menggunakan konstruksi yang disebut Kronecker Delta , sehingga definisi gradien menjadi
∂hsaya∂zj= hsaya( δsaya j- hj)
Jadi Jacobian adalah matriks persegi [ J]saya j= hsaya( δsaya j- hj)
Semua informasi hingga saat ini sudah dicakup oleh amuba dan juampa. Masalahnya tentu saja, bahwa kita perlu mendapatkan kesalahan input dari kesalahan output yang sudah dihitung. Karena gradien kesalahan output tergantung pada semua input, maka gradien input x i adalah∇ hsayaxsaya
[ ∇ x ]k= ∑saya = 1∇hsaya , k
Mengingat matriks Jacobian didefinisikan di atas, ini diimplementasikan sepele sebagai produk dari matriks dan vektor kesalahan output:
σl→= Jσl + 1→
Jika lapisan softmax adalah lapisan keluaran Anda, maka menggabungkannya dengan model biaya lintas-entropi menyederhanakan perhitungan menjadi hanya
σl→= h⃗ - t⃗
di mana adalah vektor label, dan → h adalah output dari fungsi softmax. Tidak hanya bentuk yang disederhanakan nyaman, tetapi juga sangat berguna dari sudut pandang stabilitas numerik.t⃗ h⃗