Gradien untuk skipgram word2vec

9

Saya akan membahas masalah-masalah dalam tugas penugasan tertulis kelas pembelajaran mendalam di Stanford NLP http://cs224d.stanford.edu/assignment1/assignment1_soln

Saya mencoba memahami jawaban untuk 3a di mana mereka mencari turunan ke vektor untuk kata pusat.

Asumsikan Anda diberikan vektor kata yang diprediksi sesuai dengan kata tengah c untuk skipgram, dan prediksi kata dibuat dengan fungsi softmax yang ditemukan dalam model word2vec.vc

y^o=p(o|c)=exp(uoTvc)w=1Wexp(uwTvc)

Di mana w menunjukkan kata ke-w dan (w = 1, ..., W) adalah vektor kata “keluaran” untuk semua kata dalam kosakata. Asumsikan biaya entropi silang diterapkan untuk prediksi ini dan kata o adalah kata yang diharapkan.uw

Di mana adalah matriks dari semua vektor output, dan mari menjadi vektor kolom dari prediksi kata-kata softmax, dan y menjadi label satu-panas yang juga merupakan vektor kolom.U=[u1,u2,···,uW]y^

Di mana lintas entropi adalahCE(y,y^)=iyilog(y^i)

Jadi jawaban untuk gradien untuk vektor tengah adalahJvc=UT(y^y).

Bisakah seseorang menunjukkan kepada saya langkah-langkah untuk mencapai ini? Saya telah menggunakan pertanyaan ini sebagai referensi Derivatif dari kehilangan lintas entropi di word2vec tapi saya secara khusus ingin tahuperwakilan.UT(y^y).

Jake Fund
sumber

Jawaban:

15

Pertama, mari kita jelaskan apa yang kita dapatkan dan asumsi kita tentang bentuk vektor yang berbeda. Membiarkan,

  1. |W|menjadi jumlah kata dalam vocab
  2. y dan menjadi vektor bentuk kolomx 1y | W |y^|W|
  3. ui dan menjadi vektor kolom bentuk X 1 ( = dimensi embeddings)vjDD
  4. y menjadi vektor kolom disandikan satu-panas bentukx 1|W|
  5. y^ menjadi vektor kolom prediksi bentuk softmaxx 1|W|
  6. y^i=P(i|c)=exp(uiTvc)w=1Wexp(uwTvc)
  7. Kehilangan entropi silang:J=i=1Wyilog(yi^)
  8. U=[u1,u2,...,uk,...uW] menjadi matriks yang terdiri dari vektor kolom .uk

Sekarang, kita dapat menulis Menyederhanakan, Sekarang, kita tahu bahwa adalah satu-panas dikodekan, jadi semua elemennya adalah nol kecuali yang di, katakanlah, indeks . Yang berarti, hanya ada satu istilah non-nol dalam penjumlahan di atas yang sesuai dengan dan semua istilah lainnya dalam penjumlahan adalah nol. Jadi biayanya juga bisa ditulis sebagai: Catatan: di atas adalah 1.

J=i=1Wyilog(exp(uiTvc)w=1Wexp(uwTvc))
J=i=1Wyi[uiTvclog(w=1Wexp(uwTvc))]
ykthyk
J=yk[ukTvclog(w=1Wexp(uwTvc))]
yk

Mengatasi untuk : Jvc

Jvc=[ukw=1Wexp(uwTvc)uwx=1Wexp(uxTvc)]

Yang dapat diatur ulang sebagai: Menggunakan definisi (6), kita dapat menulis ulang persamaan di atas sebagai:

Jvc=w=1W(exp(uwTvc)x=1Wexp(uxTvc)uw)uk
Jvc=w=1W(y^wuw)uk

Sekarang mari kita lihat bagaimana ini dapat ditulis dalam notasi Matrix. Perhatikan bahwa:

  1. uk dapat ditulis sebagai perkalian vektor Matriks:U.y
  2. Dan adalah transformasi linear dari vektor di diskalakan oleh masing-masing dengan . Ini lagi dapat ditulis sebagaiw=1W(y^wuw)uwUy^wU.y^

Jadi semuanya dapat secara ringkas ditulis sebagai:

U[y^y]

Akhirnya, perhatikan bahwa kita mengasumsikan s menjadi kolom vektor. Jika kita mulai dengan vektor baris, kita akan mendapatkan , sama seperti yang Anda cari.uiUT[y^y]

Sachin Tyagi
sumber
1
Hanya ingin mengatakan bahwa ini adalah penjelasan yang bagus untuk derivasi! Ini sangat membantu bagi pengisap matematika seperti saya. Terima kasih!
Eric Kim
1
+1 untuk penjelasan yang Luar Biasa!
bragboy
Saya tidak mengerti mengapa derivasi ini:
BATB=A
Parth Tamane
@ParthTamane Silakan lihat ini - math.stackexchange.com/questions/3270789/…
Sachin Tyagi