Lensa ML

CBOW

Langkah 1 dari 6: Context Window

Memilih kata input

Ukuran context window2
CBOW: prediksi kata pusat dari konteksthecat[?]onthematwindow = ±2prediksi: satKata konteks → Rata-ratakan embedding → Prediksi kata pusatthecatonthesat
Window
±2
Konteks
4 kata
Target
sat

Window ±2: CBOW merata-ratakan 4 embedding konteks menjadi satu vector, lalu memprediksi kata pusat "sat". Perata-rataan inilah arti "bag" pada CBOW: urutan konteks tidak berpengaruh.

Geser Ukuran context window dari 1 ke 4 dan lihat kata mana di sekitar "sat" yang masuk ke prediksi. Kalimat ini hanya punya enam kata, jadi pada ±3 dan ±4 window-nya sudah mencakup seluruh kalimat dan konteksnya tetap 5 kata. Namanya menjelaskan rancangannya: "bag" karena urutan konteks diabaikan, "continuous" karena konteksnya berupa dense vector, bukan count vector yang sparse. Eksperimen asli tahun 2013 memakai empat kata di setiap sisi target, dan input layer-nya dipakai bersama oleh semua posisi.

Langkah 2 dari 6: Merata-ratakan Embedding

Dari banyak vector menjadi satu

Periksa kata konteks0
Kalimat: prediksi kata pusat dari konteksthecatsat▲ targetonthematEmbedding konteks → Rata-rata → Hidden statethecatontheembed("the")d0-0.285d1-0.483d2-0.112d3-0.183d4-0.289d5-0.260Σ/nRata-rata (hidden)-0.280-0.203+0.034-0.147-0.158+0.016avg = ("the" + "cat" + "on" + "the") / 4
Target
sat
Diperiksa
the
Dim emb
6
Ukuran konteks
4

Embedding untuk "the" adalah vector berdimensi 6. Setiap kata konteks dihitung setara dalam rata-rata. Geser untuk memeriksa satu per satu.

Geser Periksa kata konteks dari 0 ke 3 untuk menelusuri the, cat, on, dan the, yaitu empat kata di sekitar "sat". Hidden vector-nya adalah h = (v_the + v_cat + v_on + v_the) / 4, jadi "the" dihitung dua kali karena muncul dua kali. Perata-rataan adalah pilihan desain utama CBOW. Biayanya hampir nol dan model mendapat input berukuran tetap berapa pun ukuran window-nya, tetapi informasi posisi tiap kata terhapus. Beberapa varian yang lebih baru memberi weight pada posisi konteks atau menyambung vector-nya, dengan mengorbankan kecepatan demi informasi urutan.

Langkah 3 dari 6: Projection Layer

Dari hidden state ke skor kosakata

Dimensi embedding4
Hidden vector × W_output → Logit untuk seluruh kosakataavg (4d)-0.28-0.200.03-0.15×W_out (12×4)+6 baris=logit (12)Skor logit per kata kosakatathe+0.31a+1.11cat-0.34dog-0.84sat+0.95ran+0.40on+0.15in+0.02down-0.47mat+1.01bed-1.55big-0.08
Dim emb
4
Kosakata
12
Parameter
96
Logit target
0.95

4 dimensi: context vector hasil rata-rata dikalikan dengan matriks output weight 12×4 untuk menghasilkan satu logit per kata kosakata. Target "sat" punya logit 0,95. Berikutnya, softmax mengubah skor ini menjadi probabilitas.

Geser Dimensi embedding dari 2 ke 6 dan lihat logit-nya bergeser. Model ini punya dua matriks berukuran 12 × d: W_input menyediakan context vector, dan baris-baris W_output memberi skor pada setiap calon kata pusat. Pada d = 6, totalnya 144 parameter. Pada skala sungguhan, susunan yang sama berukuran besar: kosakata 100.000 kata dengan 300 dimensi butuh 30 juta weight per matriks. Word2Vec hanya menyimpan W_input sebagai word vector. GloVe, metode yang berkaitan, justru menjumlahkan kedua matriksnya.

Langkah 4 dari 6: Prediksi Softmax

Mengubah skor menjadi probabilitas

Temperature1.00
softmax(logits / T) → P(kata | konteks), T = 1.00.19ran0.16a0.13mat0.12on0.12sat0.08the0.05in0.05big0.03dog0.03cat0.03down0.01bedTarget: "sat", P = 0.1153
Temperature
1.0
P(sat)
0.115
Top-1
ran
Entropy
3.26

Temperature 1,0: mendekati softmax biasa (T = 1) yang dipakai CBOW saat training. "sat" punya probabilitas 0,115. Dengan weight yang belum dilatih, "ran" unggul, dan training harus memindahkan probabilitas ke "sat".

Geser Temperature dari 0,1 ke 3,0 dan lihat distribusinya menajam dan mendatar. Weight di sini belum dilatih, jadi "ran" mengungguli "sat" pada setiap temperature; hanya training yang bisa memindahkan probabilitas ke kata yang benar. CBOW sendiri selalu dilatih pada T = 1. Masalah yang lebih besar adalah biaya: softmax penuh melakukan normalisasi atas seluruh kosakata, artinya 100.000 dot product per contoh training pada skala sungguhan. Word2Vec menghindarinya dengan hierarchical softmax, pohon biner yang butuh sekitar log₂ V ≈ 17 keputusan per kata, atau dengan negative sampling.

Langkah 5 dari 6: Training dengan Cross-Entropy

Belajar dari kesalahan

Langkah training0
Ruang embedding 2D (ilustrasi)theacatdogsatranonindownmatbedbigKurva lossP("sat" | konteks)
Langkah
0
Loss
2.16
P(sat)
0.115

Sebelum training: weight-nya acak, P("sat") sebesar 0,12 dan "ran" mendapat skor lebih tinggi. Loss cross-entropy, −log P("sat"), bernilai 2,16.

Klik Putar atau geser slider Langkah training dari 0 ke 30 untuk mengikuti kurva loss dan probabilitas. Training meminimalkan cross-entropy, L = −log P(pusat | konteks), jadi P = 0.115 di awal berbiaya sekitar 2,16 dan P = 0.75 di akhir berbiaya sekitar 0,29. Gradient mengalir balik melewati rata-rata, sehingga setiap context vector mendapat update yang sama, dibagi jumlah kata konteks. Kurvanya berasal dari 30 langkah gradient descent pada satu window ini, sedangkan scatter plot 2D hanya sketsa. Training sungguhan menyapu miliaran window dengan stochastic gradient descent dan learning rate yang turun secara linear menuju nol.

Langkah 6 dari 6: CBOW vs. Skip-gram

Dua sisi dari satu mata uang

CBOW: Banyak → SatuthecatontheRata-ratahiddensatPrediksi
CBOW
Skip-gram
Arah
Konteks → Pusat
Pusat → Konteks
Kecepatan
Lebih cepat (1 update/window)
Lebih lambat (2C update/window)
Kata langka
Terlarut dalam rata-rata
Masing-masing mendapat gradient sendiri
Kata yang sering muncul
Tertangani dengan baik
Perlu subsampling
Cocok untuk
Kata yang sering muncul, sintaksis
Kata langka, semantik
Model
CBOW
Pasangan training
1/window
Cocok untuk
Kata sering

CBOW merata-ratakan semua embedding konteks menjadi satu vector dan memprediksi kata pusat, jadi setiap window menghasilkan satu update. Karena itu CBOW cepat dan bagus untuk kata yang sering muncul. Sinyal kata langka terlarut oleh tetangga yang dirata-ratakan bersamanya.

Klik CBOW dan Skip-gram untuk membandingkan kedua arsitektur. Di makalah aslinya, CBOW lebih cepat dilatih daripada skip-gram dan skornya lebih tinggi pada analogi sintaksis, sedangkan skip-gram jauh lebih baik pada analogi semantik. Kecepatannya berasal dari semua kata konteks yang berbagi satu prediksi. Aturan praktisnya: CBOW cocok untuk korpus sangat besar ketika waktu training penting, dan skip-gram cocok untuk korpus lebih kecil atau tugas yang mementingkan kata langka. Keduanya menghasilkan vector dengan bentuk yang sama, jadi keduanya bisa dipakai model lanjutan yang sama.

Apa itu CBOW (continuous bag of words)?

CBOW, atau continuous bag of words, adalah arsitektur Word2Vec yang memprediksi sebuah kata dari kata-kata di sekitarnya. CBOW mengambil embedding setiap kata konteks, merata-ratakannya menjadi satu vector, lalu memakai vector itu untuk memberi skor pada setiap kata kosakata sebagai calon kata pusat yang hilang. Training menyesuaikan embedding sampai kata yang benar mendapat skor tinggi.

CBOW adalah yang lebih cepat dari dua arsitektur Word2Vec, sehingga sering dipilih untuk melatih word vector pada korpus yang sangat besar. CBOW adalah mode bawaan di alat seperti Word2Vec milik gensim, dan ide perata-rataannya muncul lagi di classifier teks fastText, yang merata-ratakan vector kata dan n-gram untuk memberi label pada dokumen. Tugas mengisi bagian tengah yang dipakainya juga merupakan bentuk awal dari prediksi kata tersembunyi (masked word prediction) yang kemudian dibawa BERT ke skala lebih besar.

Ide utama

  • CBOW memprediksi kata pusat dari rata-rata embedding kata konteksnya.
  • Perata-rataan membuat konteks menjadi bag: urutan kata di dalam window diabaikan.
  • Skor untuk setiap kata kosakata berasal dari satu perkalian matriks dengan vector rata-rata.
  • Training meminimalkan cross-entropy pada kata pusat yang benar.
  • Hierarchical softmax atau negative sampling menghindari normalisasi atas seluruh kosakata.
  • CBOW lebih cepat dilatih daripada skip-gram, tetapi vector untuk kata langkanya lebih lemah.

Pertanyaan umum

Apakah CBOW termasuk supervised atau unsupervised?

CBOW termasuk self-supervised. Labelnya berasal dari teks itu sendiri: setiap posisi di korpus menyediakan konteks dan kata yang seharusnya ada di tengah, jadi tidak perlu anotasi manusia. Tugas prediksinya hanya alat untuk mencapai tujuan, karena hasil yang berguna adalah matriks embedding.

Bagaimana cara melatih model CBOW di Python?

Di gensim, Word2Vec(sentences, sg=0) melatih CBOW, dan sg=0 adalah nilai bawaannya. Pengaturan utamanya adalah vector_size (dimensi), window (ukuran konteks di tiap sisi), min_count (membuang kata langka), dan negative (jumlah negative sample). Opsi cbow_mean memilih antara merata-ratakan dan menjumlahkan context vector.

Apakah CBOW bisa dipakai sebagai model bahasa?

Tidak secara langsung. CBOW memprediksi kata yang hilang dari kata di kedua sisinya, jadi tidak bisa membuat teks dari kiri ke kanan, dan urutan di dalam window diabaikan. CBOW adalah trik training untuk embedding, bukan model probabilitas kalimat.

Apa bedanya CBOW dan bag-of-words?

Bag-of-words merepresentasikan seluruh dokumen sebagai jumlah kata yang sparse dan tidak melibatkan proses belajar. CBOW mempelajari dense vector untuk setiap kata dengan memprediksinya dari window kecil berisi tetangganya. Keduanya mengabaikan urutan, tetapi hanya CBOW yang menempatkan kata-kata terkait saling berdekatan.

Penjelasan terkait

  • Word2Vec & Word Embedding · Mempelajari representasi dense vector, dengan kata yang mirip saling berdekatan di dalam ruang
  • Skip-gram · Memprediksi kata konteks dari kata pusat: arsitektur Word2Vec yang dilatih dengan negative sampling
  • Softmax, Logit, dan Temperature · Mengubah skor mentah menjadi probabilitas
  • Embedding · Mengubah kata dan kategori menjadi vector
  • Bag of Words · Mengubah teks menjadi angka: hitung kemunculan kata untuk membuat representasi dokumen paling sederhana di NLP
  • Loss Function · Cara network mengukur kesalahannya

Referensi

  1. Mikolov et al. (2013), "Efficient Estimation of Word Representations in Vector Space"
  2. Mikolov et al. (2013), "Distributed Representations of Words and Phrases and their Compositionality", NeurIPS
  3. Rong (2014), "word2vec Parameter Learning Explained"
  4. Joulin et al. (2016), "Bag of Tricks for Efficient Text Classification"

Terakhir diperbarui