Lensa ML

Skip-gram

Langkah 1 dari 6: Pusat → Konteks

Memprediksi tetangga

Posisi kata pusat2
Skip-gram: prediksi konteks dari kata pusat (window ±2)thecatsatonthematPasangan training yang dihasilkan:sat→thesat→catsat→onsat→thePosisi 2 menghasilkan 4 pasangan. Kalimat utuh sepanjang 6 dengan window ±2menghasilkan total ~18 pasangan training.
Pusat
sat
Pasangan
4
Window
±2

"sat" di posisi 2 menghasilkan 4 pasangan training. Setiap pasangan adalah contoh tersendiri: dari "sat", prediksi satu kata konteks itu. Tidak ada yang dirata-ratakan.

Geser Posisi kata pusat dari 0 ke 5 untuk memindahkan kata pusat di sepanjang "the cat sat on the mat". Dengan window ±2, kalimat enam kata ini menghasilkan 18 pasangan training: 2, 3, 4, 4, 3, dan 2 dari kiri ke kanan. Fungsi tujuannya memaksimalkan rata-rata log P(konteks | pusat) atas semua pasangan. Setiap kata punya dua vector: input vector v yang dipakai saat kata itu menjadi pusat, dan output vector u yang dipakai saat kata itu menjadi konteks. Maka P(o | c) = exp(u_o · v_c) / Σ_w exp(u_w · v_c).

Langkah 2 dari 6: Bottleneck pada Softmax

Kenapa softmax penuh terlalu mahal

Ukuran kosakata12
P(context | center) = exp(score) / Σ exp(all scores)Penyebut: jumlah atas SEMUA 12 katatheacatdogsatranonindowmatbedbigBiaya komputasi:144 ops/pasanganBiaya = O(V × d) per pasangan training, V=12, d=6Word2Vec sungguhan: V = 100.000+. Artinya 1.200.000 ops × jutaan pasangan!→ Karena itulah negative sampling diciptakan.
Ukuran kosakata
12
Ops/pasangan
144
Bottleneck
Parah

Pada 12 kata, biayanya 144 operasi per pasangan training. Pada V = 100.000, angka itu menjadi 1.200.000 ops per pasangan, dikali miliaran pasangan. Penyebut softmax mendominasi biaya.

Geser Ukuran kosakata dari 3 ke 12 dan lihat jumlah operasi tumbuh mengikuti garis lurus. Biayanya ada di penyebut Σ_w exp(u_w · v_c), yang menyentuh setiap kata kosakata. Makalah 2013 menawarkan dua perbaikan. Hierarchical softmax menyusun kosakata sebagai binary Huffman tree, sehingga kata yang sering muncul mendapat jalur pendek dan satu prediksi hanya butuh sekitar log₂ V keputusan sigmoid, bukan V. Negative sampling, di langkah berikutnya, membuang distribusi ternormalisasi sepenuhnya. Model bahasa masih menghitung softmax penuh di output-nya, tetapi di GPU, sebagai satu perkalian matriks.

Langkah 3 dari 6: Negative Sampling

Binary classification sebagai pengganti softmax

Negative sample (k)5
Negative Sampling: binary classification sebagai pengganti softmax✓ Pasangan positif (konteks asli):sat→catσ=0.542target ≈ 1✗ Negative sample (diambil ∝ frekuensi^0.75): k = 5sat→inσ=0.521target ≈ 0sat→onσ=0.494target ≈ 0sat→theσ=0.567target ≈ 0sat→ranσ=0.490target ≈ 0sat→dogσ=0.523target ≈ 0Tujuan: log σ(pos) + Σ log σ(−neg) = -4.281Biaya: O(k × d) per pasangan, hanya 6 dot product, bukan 12 (softmax penuh)
k
5
σ(pos)
0.542
Tujuan
-4.28
Percepatan
2×

k=5: training mendorong σ(positif) ke 1 dan setiap σ(negatif) ke 0. Setiap langkah hanya butuh 6 dot product, bukan 12.

Geser Negative sample (k) dari 1 ke 6 dan lihat fungsi tujuannya berubah. Untuk satu pasangan yang benar, loss-nya adalah −log σ(u_o · v_c) − Σ_n log σ(−u_n · v_c), dijumlahkan atas k sampel negatif. Makalahnya menyarankan k = 5 sampai 20 untuk dataset kecil dan 2 sampai 5 untuk dataset besar. Sampel negatif sungguhan diambil dari frekuensi kata yang dipangkatkan 3/4, sehingga kata langka lebih sering terpilih daripada kalau memakai frekuensi mentah. Demo ini juga mengambil sampel dengan cara itu, jadi kata yang sering muncul seperti "in", "on", dan "the" keluar lebih dulu. Levy dan Goldberg kemudian menunjukkan bahwa fungsi tujuan ini secara implisit memfaktorkan matriks shifted PMI dari co-occurrence kata.

Langkah 4 dari 6: Subsampling Kata yang Sering Muncul

Membuang 'the' agar belajar lebih baik

Subsampling threshold t = 1.0e-3-3.00
P(discard) = 1 − √(t / f(w))frekuensi lebih tinggi → lebih mungkin dibuangthef=0.282 P(drop)=0.94af=0.200 P(drop)=0.93onf=0.141 P(drop)=0.92inf=0.106 P(drop)=0.90catf=0.059 P(drop)=0.87dogf=0.052 P(drop)=0.86satf=0.042 P(drop)=0.85ranf=0.035 P(drop)=0.83matf=0.028 P(drop)=0.81bigf=0.023 P(drop)=0.79downf=0.019 P(drop)=0.77bedf=0.014 P(drop)=0.73Disimpan: 12/12 kata; kata yang sering muncul dibuang, kata langka disimpan
Threshold
1.0e-3
Disimpan
12/12
Dibuang
0

t=1.0e-3: "the" dan "a" biasanya dibuang ("the": 94%), sehingga kata bermakna seperti "cat" dan "dog" mengisi porsi pasangan training yang lebih besar.

Geser slider Subsampling threshold t dari 10⁻⁵ ke 10⁻¹ dan lihat kata umum berguguran. Setiap kemunculan kata w dibuang dengan probabilitas 1 − √(t / f(w)), dengan f(w) sebagai porsi kata itu di korpus. Makalahnya menyarankan t sekitar 10⁻⁵ untuk korpus miliaran kata. Korpus contoh ini hanya punya 426 token, jadi porsi katanya sangat besar dan t = 0.1 pun masih membuang sebagian "the". Membuang kata yang sering muncul juga melebarkan window efektif, karena kata yang tersisa jadi lebih berdekatan.

Langkah 5 dari 6: Dinamika Training

Melihat embedding berkumpul

Langkah training0
Learning rate0.10
Ruang embeddingtheacatdogsatranonindownmatbedbigLoss (lr=0.10)kata fungsihewankata kerjakata depanlainnya
Langkah
0
Loss
3.20
LR
0.10

Sebelum training: kata-kata tersebar acak, tanpa struktur. Training akan menarik kata yang sering muncul bersama agar berdekatan dan mendorong negative sample agar menjauh.

Klik Putar atau geser Langkah training dari 0 ke 30, lalu ubah Learning rate antara 0,01 dan 0,50 dan putar ulang. Kurvanya adalah simulasi dari efek kualitatif. Alat aslinya memulai skip-gram dengan learning rate 0,025 (0,05 untuk CBOW) dan menurunkannya secara linear sampai hampir nol, jadi update awal menggerakkan vector jauh dan update akhir menyetelnya lebih halus. Banyak thread CPU memperbarui vector bersama secara serentak tanpa lock. Ini bisa berjalan karena setiap update hanya menyentuh beberapa baris dari kedua matriks.

Langkah 6 dari 6: Kualitas Embedding

Uji analogi dan tetangga terdekat

Kata query2
Tetangga terdekat menurut cosine similaritythea (0.35)catdog (1.00)sat (0.09)ran (-0.04)onindownmatbed (-0.10)big
Query
cat
#1 terdekat
dog
Kemiripan
0.998
#2
a

"cat" paling dekat dengan "dog" (sim=1.00): keduanya hewan. "cat" dan "dog" mengisi posisi yang sama ("the ___ sat", "a ___ ran"), jadi embedding-nya berkumpul.

Geser Kata query dari 0 ke 11 untuk melihat tetangga terdekat setiap kata. Embedding dinilai dengan dua cara. Uji intrinsik memeriksa geometrinya langsung, dengan soal analogi atau dengan mengorelasikan skor cosine dengan penilaian kemiripan dari manusia seperti WordSim-353 dan SimLex-999. Uji ekstrinsik memasang vector ke tugas nyata, seperti named entity recognition atau klasifikasi sentimen, lalu mengukur peningkatannya. Hasil keduanya tidak selalu sejalan, jadi tugas yang dituju adalah panduan yang lebih baik. Keunggulan utama skip-gram pada kedua uji ada di kata langka.

Apa itu model skip-gram?

Skip-gram adalah arsitektur Word2Vec yang memprediksi kata-kata di sekitar dari satu kata pusat. Setiap pasangan (pusat, konteks) di dalam sliding window adalah satu contoh training, dan model menyesuaikan vector kata pusat sampai tetangga aslinya mendapat skor tinggi. Dalam praktiknya, skip-gram dilatih dengan negative sampling, pengganti murah untuk softmax penuh.

Skip-gram dengan negative sampling (SGNS) adalah susunan Word2Vec yang paling banyak dipakai dan menghasilkan vector yang kuat untuk kata langka. Resep yang sama berlaku untuk urutan token apa pun: DeepWalk dan node2vec menerapkannya pada random walk di graf, dan recommender system menerapkannya pada urutan produk atau lagu untuk mempelajari item embedding. Trik training-nya, yaitu negative sampling dan subsampling kata yang sering muncul, muncul lagi di metode contrastive learning yang lebih baru.

Ide utama

  • Skip-gram memprediksi setiap kata konteks secara terpisah dari kata pusat.
  • Setiap kata punya input vector dan output vector; input vector yang disimpan sebagai embedding.
  • Softmax penuh butuh satu dot product per kata kosakata untuk setiap pasangan training.
  • Negative sampling mengubah setiap prediksi menjadi k + 1 keputusan logistik biner.
  • Subsampling membuang kata yang sering muncul dengan probabilitas 1 − √(t / f(w)).
  • Skip-gram lebih lambat daripada CBOW, tetapi mempelajari vector yang lebih baik untuk kata langka.

Pertanyaan umum

Kenapa disebut skip-gram?

Namanya berasal dari skip-gram dalam pemodelan bahasa, yaitu n-gram yang boleh punya celah, sehingga "the mat" dihitung sebagai pasangan dalam "the cat sat on the mat" walaupun ada kata di antaranya. Memasangkan kata pusat dengan setiap kata di window-nya, dekat atau jauh, adalah ide yang sama.

Apa arti SGNS?

SGNS adalah singkatan dari skip-gram with negative sampling, kombinasi yang dipakai secara bawaan oleh sebagian besar implementasi Word2Vec ketika skip-gram dipilih. Istilah ini umum di makalah riset yang membandingkan Word2Vec dengan metode berbasis hitungan.

Apakah skip-gram bisa mempelajari vector untuk frasa?

Bisa. Makalah kedua tahun 2013 lebih dulu mencari pasangan kata yang muncul bersama jauh lebih sering daripada peluang acaknya, seperti "New York" atau "Air Canada", lalu menggabungkannya menjadi satu token. Skip-gram kemudian mempelajari satu vector per frasa, yang membantu ketika makna frasa lebih dari sekadar gabungan bagian-bagiannya.

Apakah skip-gram dipakai di luar teks?

Ya. Data apa pun yang berbentuk urutan item diskret bisa dipakai. DeepWalk dan node2vec membuat random walk pada graf dan melatih skip-gram di atasnya untuk membuat embedding node, sedangkan sistem rekomendasi musik dan e-commerce melatihnya pada sesi mendengarkan atau menjelajah untuk membuat embedding lagu dan produk.

Penjelasan terkait

Referensi

  1. Mikolov et al. (2013), "Distributed Representations of Words and Phrases and their Compositionality", NeurIPS
  2. Mikolov et al. (2013), "Efficient Estimation of Word Representations in Vector Space"
  3. Goldberg & Levy (2014), "word2vec Explained: Deriving Mikolov et al.'s Negative-Sampling Word-Embedding Method"
  4. Rong (2014), "word2vec Parameter Learning Explained"

Terakhir diperbarui