Vektorisasi Rugi Entropi Silang

9

Saya berurusan dengan masalah yang berkaitan dengan menemukan gradien fungsi Cross entropy loss wrt parameter θ dimana:

CE(θ)=iyilog(y^i)

Dimana, y^i=softmax(θi) dan θi adalah input vektor.

Juga, y adalah satu vektor panas dari kelas yang benar dan y^ adalah prediksi untuk setiap kelas menggunakan fungsi softmax.

Oleh karena itu, misalnya mari kita miliki yi=(00010) dan y^i=(0.100.200.100.400.20)

Untuk menemukan turunan parsial CE(θ)θik=yiky^ik

Mengambil dari sana untuk masing-masing i gradien parsial individu akan CE(θ)θi=(yi1y^i1yi2y^i2yi3y^i3yi4y^i4yi5y^i5)

Tapi ini tidak benar karena gradien sebenarnya harus 0 untuk semua baris lain kecuali untuk baris ke-4 karena kami telah menggunakan properti dari satu vektor panas. Jadi gradien aktual seharusnya CE(θ)θi=(000yi4y^i40)

Dan karenanya gradien untuk semua i seharusnya CE(θ)θ=(000yi4y^i4000yi3y^i300...0yi2y^i2000)

Tapi ini tidak sama dengan y^y. Jadi kita tidak boleh menyebut gradien fungsi lintas entropi perbedaan vektor antara diprediksi dan asli.

Bisakah seseorang memperjelas hal ini?

UPDATE: Memperbaiki derivasi saya

θ=(θ1θ2θ3θ4θ5)

CE(θ)=iyilog(y^i)

Dimana, y^i=softmax(θi) dan θi adalah input vektor.

Juga, y adalah satu vektor panas dari kelas yang benar dan y^ adalah prediksi untuk setiap kelas menggunakan fungsi softmax.

CE(θ)θi=(log(y^k))

PEMBARUAN: Menghapus indeks dari y dan y^ Oleh karena itu, misalnya mari kita miliki y=(00010) dan y^=(0.100.200.100.400.20)

UPDATE: Memperbaiki Saya mengambil turunan wrt θik seharusnya hanya wrt θi. Untuk menemukan turunan parsialCE(θ)θi=yky^k

Mengambil dari sana untuk masing-masing i gradien parsial individu akan CE(θ)θ=(y1y^1y2y^2y3y^3y4y^4y5y^5)

Di atas terjadi karena CE(θ)=(yklog(y^k)) Dan, y^k=log(softmax(θk))=θklog(jexp(θj)) Mengambil sebagian turunan dari CE(θ) wrt θi kita mendapatkan:

CE(θ)θi=(θkθisoftmax(θi))

LANGKAH UTAMA: Fakta ituθkθi=0,ik dan θkθi=1,i=k membuat vektor CE(θ)θ=y^y yang melengkapi buktinya.

Shubhanshu Mishra
sumber

Jawaban:

2

Tidak, gradien tidak boleh nol untuk komponen lainnya. Jika prediksi Anda benary^sayaj untuk beberapa saya,j dan pengamatan Anda ysayaj=0, maka Anda terlalu banyak memperkirakan y^sayaj.

Neil G
sumber
Tapi y^sayaj akan selalu menjadi nilai softmax dan ysayajpengamatan yang sebenarnya. Dan karena kita menggunakan faktaysaya menjadi satu vektor panas, karenanya, turunan parsial CE(θ)θsayaj=0,jk, diberikan ysayak=1 Apakah saya membuat kesalahan dalam diferensiasi?
Shubhanshu Mishra
1
Terima kasih atas masukan Anda @ neil-g, saya dapat mengoreksi derivasi gradasi saya.
Shubhanshu Mishra
15

Berikut ini adalah konten yang sama dengan hasil edit, tetapi dalam (untuk saya) format langkah-demi-langkah yang sedikit lebih jelas:

Kami berusaha membuktikan bahwa:

CEθ=y^-y

diberikan

CE(θ)=-sayaysayalHaig(y^saya)

dan

y^saya=exhal(θsaya)jexhal(θj)

Kami tahu itu yj=0 untuk jk dan yk=1jadi:

CE(θ)=- lHaig(y^k)

=- lHaig(exhal(θk)jexhal(θj))

=- θk+lHaig(jexhal(θj))

CEθ=-θkθ+θlHaig(jexhal(θj))

Gunakan fakta itu θkθk=1 dan θkθq=0 untuk qk, untuk menunjukkan itu.

θkθ=y

Untuk bagian kedua kami menulis turunan untuk setiap elemen individu θ dan gunakan aturan rantai untuk mendapatkan:

θsayalHaig(jexhal(θj))=exhal(θsaya)jexhal(θj)=y^saya

Karenanya,

CEθ=θlHaig(jexhal(θj))-θkθ=y^ - y

Maarten
sumber