Turunan dari cross entropy loss di word2vec

10

Saya mencoba untuk bekerja dengan cara saya melalui set masalah pertama dari materi kursus stanford kelas cs224d online dan saya mengalami beberapa masalah dengan masalah 3A: Ketika menggunakan model skip gram word2vec dengan fungsi prediksi softmax dan fungsi kehilangan entropi silang, kami ingin menghitung gradien sehubungan dengan vektor kata yang diprediksi. Jadi diberikan fungsi softmax:

wi^=Pr(wordir^,w)=exp(wiTr^)j|V|exp(wjTr^)

dan fungsi lintas entropi:

CE(w,w^)=kwklog(wk^)

kita perlu menghitung CEr^

Langkah-langkah saya adalah sebagai berikut:

CE(w,w^)=k|V|wklog(exp(wkTr^)j|V|exp(wjTr^))

=k|V|wklog(exp(wkTr^)wklog(j|V|exp(wjTr^))

sekarang diberikan wk adalah satu vektor panas dan saya adalah kelas yang benar:

CE(w,w^)=wiTr^+log(j|V|exp(wjTr^))

CEr^=wi+1j|V|exp(wjTr^)j|V|exp(wjTr^)wj

Apakah ini benar atau dapatkah itu disederhanakan lebih lanjut? Saya ingin memastikan bahwa saya berada di jalur yang benar karena solusi masalah tidak diposting secara online. Plus mendapatkan tugas tertulis yang benar adalah penting untuk dapat melakukan tugas pemrograman dengan benar.

slushi
sumber
Silakan tambahkan tanda belajar mandiri ke pertanyaan
Dawny33
Tanda minus 2 di identitas log pertama harus menjadi nilai tambah. Mencoba memperbaikinya untuk Anda, tetapi pengeditan harus setidaknya 6 karakter: \
FatalMojo

Jawaban:

7

CEr^=wi+1j|V|exp(wjTr^)j|V|exp(wjTr^)wj
dapat ditulis ulang sebagai perhatikan, jumlah keduanya diindeks oleh j tetapi harus benar-benar 2 variabel yang berbeda. Ini akan lebih tepat yang diterjemahkan menjadi
CEr^=wi+j|V|(exp(wjr^)j|V|exp(wjTr^)wj)
CEr^=wi+x|V|(exp(wxr^)j|V|exp(wjTr^)wx)
CEr^=wi+x|V|Pr(wordxr^,w)wx
FatalMojo
sumber
1
Relevan, ia membahas derivasi itu secara detail di kuliah 2 @
38:00
Mengapa jumlah harus diindeks oleh variabel yang berbeda?
Yamaneko
1
Hanya untuk menghindari kebingungan. Secara matematis artinya sama, tetapi praktik yang baik untuk mengubah label indeks saat menambahkan jumlah baru.
FatalMojo