Lensa ML

Cara Kerja Embedding

Langkah 1 dari 6: Kata sebagai Angka?

Bagaimana mengubah 'cat' menjadi sesuatu yang bisa dibaca network?

"cat"kata?NetworkOne-hot vector1cat0dog0car0kitten0truck

One-hot vector menaruh angka 1 di indeks kata itu dan 0 di tempat lain. Dengan kosakata sungguhan, vector ini menjadi sangat panjang, dan jarak antara setiap pasang kata selalu sama.

Klik setiap kata, dari "cat" sampai "truck", dan lihat angka 1 yang hanya satu itu berpindah di sepanjang vector 5 slot. Dengan kosakata sungguhan sebesar 50.000 kata, setiap vector one-hot punya 50.000 elemen dan hanya satu yang bukan nol. Dot product dua vector one-hot yang berbeda selalu 0, jadi kode ini tidak menyimpan konsep kemiripan: cat · kitten = cat · truck = 0. ID kata biasa (cat = 1, dog = 2) gagal dengan cara sebaliknya, karena menciptakan urutan dan jarak yang tidak bermakna. Embedding menggantikan keduanya dengan vector pendek yang geometrinya dipelajari.

Langkah 2 dari 6: Embedding Layer

Mempelajari dense vector untuk setiap kata

Lookup table embedding (matriks weight)catkittendogcartruck0.82d10.21d20.65d30.11d40.44d5Dense embedding 5 dimensi

Embedding layer adalah lookup table: setiap kata dipetakan ke dense vector pendek berisi angka hasil belajar. Tabel ini adalah matriks weight, yang dilatih bersama bagian network lainnya. Klik kata yang berbeda untuk membandingkan embedding-nya.

Klik kelima kata dan bandingkan batang pada setiap vector 5 dimensi. Mengalikan vector one-hot dengan matriks V × d hanya memilih satu baris, jadi embedding layer adalah perkalian itu yang dijalankan sebagai lookup. Ukurannya adalah kosakata kali dimensi: GPT-2 punya 50.257 token dengan 768 dimensi, sekitar 38,6 juta weight. Embedding sungguhan memakai 100 sampai beberapa ribu dimensi, dan satu dimensi jarang punya makna sendiri. Maknanya ada pada jarak dan arah antar-vector, itu sebabnya dimensinya tidak diberi nama.

Langkah 3 dari 6: Kemiripan di Embedding Space

Kata yang mirip berada berdekatan

HewanKendaraanKerajaancatkittendogcartruckkingqueen

Di embedding space, kata yang mirip saling berkumpul: "cat" dan "kitten" berdekatan, sedangkan "car" dan "truck" membentuk cluster sendiri. Pada model sungguhan, posisi ini dipelajari dari data, bukan ditempatkan dengan tangan.

Arahkan kursor ke setiap kata untuk menyorotnya di peta 2D. Kedekatan antar-embedding biasanya diukur dengan cosine similarity, cos θ = (a · b) / (‖a‖ ‖b‖), yang mengabaikan panjang vector. Dengan vector 5 dimensi dari langkah sebelumnya, "cat" dan "kitten" punya nilai cosine sekitar 0,998, sedangkan "cat" dan "car" berada di dekat 0,38. Embedding sungguhan punya ratusan dimensi, jadi peta seperti ini dibuat dengan memproyeksikannya ke dimensi rendah memakai metode seperti PCA atau t-SNE. Proyeksi itu selalu mengubah sebagian jarak.

Langkah 4 dari 6: Word2Vec: CBOW

Memprediksi kata tengah dari konteksnya

CBOW: memprediksi kata tengahThe___satonthematembedembedRata-rata embedding

Word2Vec CBOW memprediksi kata tengah yang hilang dari kata konteks-nya. Di sini, konteksnya satu kata di setiap sisi bagian yang kosong.

Klik Kalimat 1, 2, dan 3, lalu lihat kata konteks masuk ke prediksi. CBOW merata-ratakan embedding konteks dan meneruskan hasilnya ke softmax atas seluruh kosakata untuk memberi skor pada setiap kandidat kata tengah. Skip-gram membalik tugasnya dan memprediksi tiap kata konteks dari kata tengah, yang cenderung lebih baik untuk kata yang jarang muncul. Softmax atas sejuta kata itu mahal, jadi word2vec memakai negative sampling: skor kata yang benar dibandingkan dengan beberapa kata acak saja. CBOW versi asli memakai empat kata di setiap sisi.

Langkah 5 dari 6: Aritmetika Vector

king - man + woman ≈ queen

king - man + woman ≈ queenmankingwomanqueenselisih samaselisih samaking - man + woman ≈ queen
king - man + woman ≈ queen

Pada analogi kata, arah di embedding space menyimpan hubungan. Panah dari kata pertama ke kata kedua, kalau ditambahkan ke kata ketiga, mendarat di dekat kata keempat.

Geser slider Pilih analogi di antara kedua analogi dan perhatikan panah yang sejajar. Jawabannya didapat dengan menghitung v = king − man + woman, lalu mencari kata terdekat berdasarkan cosine similarity. Dengan vector 5 dimensi di demo ini, "queen" mendapat skor 1,000, tetapi "king" sendiri mendapat 0,998, jadi kata input harus dikeluarkan dari pencarian, seperti yang dilakukan benchmark analogi. Analogi juga menyerap bias dari teks training: aritmetika yang sama menghasilkan pasangan seperti man : computer programmer :: woman : homemaker (Bolukbasi et al., 2016).

Langkah 6 dari 6: Embedding di Mana-mana

Bukan cuma kata: item, pengguna, graph, dan lainnya

Embedding ada di mana-manaProdukPenggunaGraph
Produk yang mirip (ponsel, laptop) saling berkumpul, dan inilah dasar rekomendasi.
Ide yang sama: mempelajari representasi dari konteks

Produk, pengguna, dan graph node semuanya bisa dibuat embedding-nya. Masing-masing mendapat dense vector yang dipelajari dari konteks, sehingga hal-hal yang mirip berakhir berdekatan.

Klik Produk, Pengguna, dan Graph untuk membandingkan ketiga cluster. Setiap kasus mengganti "kata yang muncul bersama" dengan jenis kemunculan bersama yang lain: item yang dibeli dalam sesi yang sama, pengguna yang menonton acara yang sama, atau node yang muncul pada random walk yang sama di sebuah graph, seperti pada node2vec. Sistem rekomendasi menyimpan satu vector per pengguna dan per item, lalu mengurutkan item berdasarkan dot product. CLIP (2021) menaruh gambar dan keterangannya dalam satu ruang embedding yang sama, sehingga kueri teks bisa menemukan foto yang cocok.

Apa itu embedding dalam machine learning?

Embedding adalah vector berisi angka hasil belajar yang mewakili satu item diskret, seperti kata, produk, atau pengguna, sehingga item yang mirip mendapat vector yang mirip. Alih-alih kode one-hot yang sparse dengan satu slot per item, setiap item mendapat dense vector pendek, biasanya dengan beberapa ratus dimensi. Jarak dan arah antar-vector ini membawa makna yang dipelajari model dari data.

Embedding adalah input layer di hampir semua model bahasa: setiap token diubah menjadi vector lewat lookup sebelum proses lainnya berjalan. Embedding juga menggerakkan semantic search dan retrieval-augmented generation, sistem rekomendasi yang mencocokkan pengguna dengan produk, serta pencarian gambar yang membandingkan foto dengan teks. Word2vec (2013) membuat word embedding banyak dipakai, dan ide yang sama kini berlaku untuk kalimat, gambar, kode, dan graph node.

Ide utama

  • Embedding memetakan setiap item diskret, seperti kata, ke dense vector pendek berisi angka hasil belajar.
  • Vector one-hot bersifat sparse dan memperlakukan setiap pasang kata sebagai sama-sama tidak berhubungan.
  • Embedding layer adalah matriks weight, dan mengambil satu barisnya sama dengan mengalikan dengan vector one-hot.
  • Kata yang dipakai dalam konteks yang mirip mendapat vector yang mirip, jadi cosine similarity mengikuti keterkaitan makna.
  • Arah di dalam ruang ini bisa menyimpan hubungan, seperti pada king − man + woman ≈ queen.
  • Ide yang sama bisa membuat embedding untuk produk, pengguna, graph node, kalimat, dan gambar.

Pertanyaan umum

Apa bedanya embedding word2vec dan Transformer?

Word2vec memberi setiap kata satu vector tetap, jadi "bank" punya embedding yang sama di "river bank" dan "bank account". Transformer mulai dari token embedding yang tetap, lalu mencampurkan kata-kata di sekitarnya, sehingga vector output-nya kontekstual. Model seperti BERT memberi setiap kemunculan kata vector-nya sendiri.

Berapa dimensi yang sebaiknya dimiliki embedding?

Word vector klasik memakai 100 sampai 300 dimensi. Model bahasa memakai 768 sampai beberapa ribu, dan model sentence embedding umumnya menghasilkan 384 sampai 3.072. Dimensi yang lebih banyak bisa menyimpan perbedaan yang lebih halus, tetapi memakan memori dan butuh lebih banyak data agar training-nya bagus.

Sebaiknya embedding dilatih dari nol atau memakai yang pretrained?

Kalau datanya sedikit, memulai dari vector pretrained seperti GloVe atau model bahasa pretrained biasanya lebih baik. Embedding itu kemudian bisa di-freeze atau di-fine-tune bersama bagian network lainnya. Melatih dari nol masuk akal untuk item yang tidak punya vector pretrained, seperti ID produk di sistem rekomendasi.

Apa itu embedding model?

Embedding model adalah network yang dilatih untuk mengubah seluruh input, seperti kalimat atau gambar, menjadi satu vector untuk dibandingkan. Vector ini disimpan di vector database untuk semantic search dan retrieval-augmented generation. Model ini biasanya dilatih dengan contrastive learning, yang mendekatkan pasangan yang cocok dan menjauhkan pasangan yang tidak berhubungan.

Penjelasan terkait

  • Word2Vec & Word Embedding · Mempelajari representasi dense vector, dengan kata yang mirip saling berdekatan di dalam ruang
  • CBOW (Continuous Bag of Words) · Memprediksi kata pusat dari konteksnya: arsitektur perata-rataan di balik Word2Vec
  • Skip-gram · Memprediksi kata konteks dari kata pusat: arsitektur Word2Vec yang dilatih dengan negative sampling
  • Norm dan Metrik Jarak · L1, L2, cosine similarity: cara mengukur kedekatan di ruang vector
  • Retrieval-Augmented Generation · Mendasarkan output model bahasa pada dokumen yang diambil untuk mengurangi halusinasi
  • Tokenization & BPE · Cara teks menjadi angka, dari karakter sampai subword token lewat byte-pair encoding

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"
  3. Pennington, Socher & Manning (2014), "GloVe: Global Vectors for Word Representation", EMNLP
  4. Grover & Leskovec (2016), "node2vec: Scalable Feature Learning for Networks"
  5. Bolukbasi et al. (2016), "Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings"

Terakhir diperbarui