Vektorisasi Rugi Entropi Silang


9

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

CE(θ)=−∑iyi∗log(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=−yik−y^ik

Mengambil dari sana untuk masing-masing i gradien parsial individu akan ∂CE(θ)∂θi=(yi1−y^i1yi2−y^i2yi3−y^i3yi4−y^i4yi5−y^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=(000yi4−y^i40)

Dan karenanya gradien untuk semua i seharusnya ∂CE(θ)∂θ=(000yi4−y^i4000yi3−y^i300...0yi2−y^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(θ)=−∑iyi∗log(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 parsial∂CE(θ)∂θi=−yk−y^k

Mengambil dari sana untuk masing-masing i gradien parsial individu akan ∂CE(θ)∂θ=(y1−y^1y2−y^2y3−y^3y4−y^4y5−y^5)

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

∂CE(θ)∂θi=−(∂θk∂θi−softmax(θi))

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

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.


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,∀j≠k, 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(θ)=-∑sayaysaya∗lHaig(y^saya)

dan

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

Kami tahu itu yj=0 untuk j≠k 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 q≠k, 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

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.