Lensa ML

Word2Vec & Embedding

Langkah 1 dari 6: Hipotesis Distribusional

Kata dikenali dari kata-kata di sekitarnya

Ukuran context window2
"You shall know a word by the company it keeps" (Firth, 1957)thekingsatonthegoldenthroneandthequeenwatchedwindow = ±2Kata konteks untuk "king" (window=2):thesatonKata yang muncul dalam konteks serupa mendapat embedding yang serupa.
Pusat
king
Window
±2
Konteks
3 kata

Window ±2: 'the', 'sat', dan 'on' menjadi kata konteks. Di korpus besar, 'queen' muncul di dekat jenis kata yang sama dengan 'king', sehingga embedding keduanya berdekatan.

Geser Ukuran context window dari 1 ke 4 dan lihat kumpulan konteks di sekitar "king" bertambah. Kutipan di bagian atas menyatakan hipotesis distribusional, yang dikemukakan Zellig Harris pada 1954 dan dipopulerkan J. R. Firth pada 1957. Word2Vec mengubahnya menjadi sinyal training. Setiap pasangan (pusat, konteks) di dalam window adalah satu contoh training, jadi window ±5 pada korpus semiliar kata menghasilkan sekitar 10 miliar contoh. Window bawaan di alat aslinya adalah 5, dan alat itu mengambil sampel window yang lebih kecil untuk setiap kata, sehingga tetangga dekat lebih sering dihitung.

Langkah 2 dari 6: Arsitektur Skip-Gram

Prediksi kata konteks dari kata pusat

kingInput (pusat)thronecrownroyalqueen→ Prediksi kata konteksW_embed (king) → hidden → W_context → P(context|king)
Pusat
king
Konteks
4
Tujuan
Skip-Gram

Skip-Gram: dari "king", prediksi kata konteksnya [throne, crown, royal, queen]. Setiap prediksi yang benar menarik "king" mendekati kata seperti "throne". Setelah training, baris-baris W_embed menjadi word vector.

Klik king, queen, dog, dan car untuk melihat target konteks setiap kata pusat. Network ini tidak punya non-linearitas tersembunyi. Hidden layer-nya hanya baris W_embed milik kata pusat, dan matriks kedua memberi skor pada setiap kata kosakata sebagai calon tetangga. Word2Vec punya dua arsitektur. Skip-gram, yang ditampilkan di sini, memprediksi konteks dari kata pusat, sedangkan CBOW sebaliknya, memprediksi kata pusat dari rata-rata konteksnya. Keduanya sengaja dibuat dangkal: makalah 2013 berargumen bahwa model sederhana yang dilatih dengan teks jauh lebih banyak mengalahkan model lebih dalam yang dilatih dengan teks lebih sedikit.

Langkah 3 dari 6: Tujuan Training

Lihat embedding berkumpul seiring training berjalan

Langkah training0
kingqueenmanwomanprinceprincessdogcatpuppykittencartruckRuang embedding 2Dkerajaangenderhewankendaraan
Langkah
0
Progres
0%

Sebelum training: kata-kata berada di posisi acak. Belum ada struktur, jadi 'king' tidak lebih dekat ke 'queen' daripada ke 'dog'.

Geser Langkah training dari 0 ke 20 untuk melihat posisi awal yang acak menetap menjadi cluster. Demo ini melakukan interpolasi menuju tata letak akhir, sedangkan training sungguhan menggerakkan vector dengan stochastic gradient descent, satu pasangan kata setiap kali. Softmax penuh pada kosakata 100.000 kata terlalu lambat untuk setiap update, jadi makalah lanjutannya memperkenalkan negative sampling. Untuk setiap pasangan yang benar, model juga memberi skor pada beberapa kata "negatif" acak (5 sampai 20 pada dataset kecil) dan belajar memisahkannya dengan sigmoid. Kata yang sering muncul seperti "the" dilewati secara acak, sehingga training lebih cepat.

Langkah 4 dari 6: Aritmetika Vector

king - man + woman ≈ queen

princeprincessdogcatpuppykittencartruckkingmanwomanqueenking−man+woman
king
(2, 2.5)
− man
(2.2, 0.8)
+ woman
(1.2, 0.6)
≈ Hasil
queen

king−man+woman: vector dari "man" ke "king" (garis putus-putus merah muda) menangkap sebuah hubungan. Menambahkan selisih yang sama ke "woman" (garis putus-putus hijau kebiruan) mendarat di dekat "queen". Hubungan itu tersimpan sebagai arah di dalam ruang.

Klik king−man+woman, prince−man+woman, dan puppy−dog+cat untuk membandingkan tiga analogi. Pada demo 2D ini hasilnya mendarat tepat di target. Pada vector sungguhan berdimensi 300, hasilnya mendarat di dekat target, dan jawabannya adalah kata terdekat setelah ketiga kata input dikecualikan. Tanpa pengecualian itu, vector terdekat dari king − man + woman sering kali king sendiri. Kumpulan uji analogi aslinya berisi sekitar 19.500 pertanyaan, dan model terbaik di makalah pertama pun salah menjawab sekitar sepertiganya.

Langkah 5 dari 6: Cosine Similarity

Mengukur keterkaitan kata dari sudut antar-vector

Sudut query vector (°)30
1woman2prince3manprincesskingqueencartruckpuppykittencatdog1woman1.002prince0.993man0.98query
#1 terdekat
woman
Kemiripan
0.998
#2
prince
#3
man

Pada 30°, tetangga terdekatnya "woman" (cosine similarity = 0.998). Hanya arah yang berpengaruh: kata yang jauh dari titik asal mendapat skor yang sama dengan kata yang dekat pada sinar yang sama.

Geser Sudut query vector (°) dari 0 ke 360 dan lihat tiga tetangga teratas berubah. Word vector dibandingkan dengan cosine, cos θ = a · b / (|a| |b|), bukan jarak Euclidean, antara lain karena panjang vector Word2Vec mengikuti seberapa sering katanya muncul. Pada 300 dimensi, kata yang tidak berkaitan mendapat skor mendekati 0 dan sinonim dekat sering di atas 0,6. Antonim seperti hot dan cold juga mendapat skor tinggi, karena muncul dalam konteks yang sama. Kemiripan distribusional mengukur keterkaitan, bukan kesamaan makna.

Langkah 6 dari 6: Setelah Word2Vec

Dari vector statis ke contextual embedding

Pencampuran konteks (α)0.00
"bank" (kedua makna)Word2Vec2013 · 300dGloVe2014 · 300dELMo2018 · 1024dBERT2018 · 768dGPT-22019 · 1600dStatic embedding: satu vector per kata
Pencampuran konteks
0.00
Jenis
Static
Jarak
0.00
cos(bank, bank)
1.00

Static embedding (Word2Vec, GloVe): setiap kata mendapat satu vector, apa pun konteksnya. 'Bank' (sungai) dan 'bank' (uang) berbagi titik yang sama, jadi cosine similarity-nya 1.

Geser Pencampuran konteks dari 0 ke 1 dan lihat dua titik "bank" berpisah sementara cosine similarity-nya turun dari 1,00 ke 0,17. Slider ini mencampur vector "bank" yang tetap dengan rata-rata tetangganya, sebagai versi sederhana dari cara kerja model kontekstual. Perbedaannya ada pada arsitektur, bukan ukuran: ELMo dan BERT menghitung setiap vector dari seluruh kalimat dengan deep network, sedangkan Word2Vec mengambil kata dari tabel yang tetap. Vector statis masih berguna. fastText memperluas Word2Vec dengan n-gram karakter sehingga bisa membuat vector untuk kata yang belum pernah dilihat, dan static embedding tetap menjadi pilihan murah untuk query expansion serta model di perangkat berdaya rendah.

Apa itu Word2Vec?

Word2Vec adalah keluarga model neural network dangkal yang mempelajari dense vector, atau embedding, untuk setiap kata dalam kosakata dari teks mentah. Training-nya memakai tugas prediksi yang sederhana: tebak sebuah kata dari tetangganya, atau tebak tetangganya dari kata itu. Setelah training, kata yang dipakai dalam konteks serupa mendapat vector yang serupa.

Word2Vec dirilis oleh Tomas Mikolov dan rekan-rekannya di Google pada 2013, dengan dua arsitektur, CBOW dan skip-gram, serta sejumlah trik training yang membuatnya cepat pada miliaran kata. Vector-nya menjadi input standar untuk classifier teks, named entity recognizer, dan sistem pencarian, dan hasil terkenal king − man + woman ≈ queen menunjukkan bahwa vector itu menyimpan hubungan antarkata. Ide yang sama, yaitu mempelajari embedding dari konteks, menjadi layer pertama setiap model bahasa modern.

Ide utama

  • Word2Vec mempelajari satu dense vector per kata dari kata-kata di sekitarnya.
  • Kata yang muncul dalam konteks serupa mendapat vector yang menunjuk ke arah serupa.
  • Skip-gram memprediksi konteks dari sebuah kata; CBOW memprediksi sebuah kata dari konteksnya.
  • Negative sampling mengganti softmax penuh yang mahal dengan beberapa keputusan biner per pasangan.
  • Selisih antar-vector menyimpan hubungan, sehingga king − man + woman mendarat di dekat queen.
  • Vector Word2Vec bersifat statis: setiap kata punya satu vector, di kalimat apa pun kata itu muncul.

Pertanyaan umum

Apa bedanya Word2Vec dan GloVe?

Word2Vec belajar dari window lokal dan memperbarui vector satu pasangan (kata, konteks) setiap kali. GloVe, dari Stanford pada 2014, lebih dulu menghitung seberapa sering setiap pasangan kata muncul bersama di seluruh korpus, lalu mencocokkan vector yang dot product-nya sesuai dengan log jumlah itu. Vector yang dihasilkan berperilaku mirip, dan mana yang lebih unggul bergantung pada tugas dan data training-nya.

Berapa dimensi vector Word2Vec?

Biasanya 100 sampai 300. Vector Google News yang banyak dipakai dan dirilis bersama makalahnya punya 300 dimensi untuk 3 juta kata dan frasa. Ukuran yang lebih besar hanya membantu kalau teks training-nya cukup banyak untuk mengisinya.

Apakah Word2Vec termasuk deep learning?

Tidak dalam arti yang biasa. Ini model linear dua layer: pencarian embedding diikuti output layer, tanpa non-linearitas tersembunyi. Kontribusinya adalah menunjukkan bahwa network yang sangat sederhana, jika dilatih dengan teks dalam jumlah besar, mempelajari representasi yang berguna.

Apakah word embedding mengandung bias?

Ya. Embedding mempelajari asosiasi apa pun yang ada di teks training-nya, termasuk stereotip. Bolukbasi dkk. (2016) menemukan bahwa vector Google News melengkapi "man is to computer programmer as woman is to" dengan "homemaker", dan mengusulkan metode untuk mengurangi arah gender semacam itu.

Penjelasan terkait

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. Pennington, Socher & Manning (2014), "GloVe: Global Vectors for Word Representation", EMNLP
  4. Bolukbasi et al. (2016), "Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings"
  5. Jurafsky & Martin, "Speech and Language Processing" (3rd ed. draft)

Terakhir diperbarui