Bagian ini membahas beberapa metode untuk memperoleh embedding, serta cara mentransformasi embedding statis menjadi embedding kontekstual.
Teknik pengurangan dimensi
Ada banyak teknik matematika yang dapat menangkap struktur penting dari ruang berdimensi tinggi dalam ruang berdimensi rendah. Secara teori, salah satu dari teknik ini dapat digunakan untuk membuat embedding bagi sistem machine learning.
Misalnya, analisis komponen utama (PCA) telah digunakan untuk membuat embedding kata. Dengan adanya sekumpulan instance seperti vektor kantong data, PCA berupaya menemukan dimensi berkorelasi tinggi yang dapat diciutkan menjadi satu dimensi.
Melatih embedding sebagai bagian dari jaringan neural
Anda dapat membuat embedding saat melatih jaringan neural untuk tugas target Anda. Pendekatan ini menghasilkan embedding yang sangat sesuai dengan sistem tertentu milik Anda, tetapi prosesnya mungkin lebih lama dibandingkan melatih embedding secara terpisah.
Secara umum, Anda dapat membuat lapisan tersembunyi berukuran d di jaringan neural Anda yang ditetapkan sebagai lapisan embedding, dengan d yang merepresentasikan jumlah node dalam lapisan tersembunyi serta jumlah dimensi dalam ruang sematan. Lapisan embedding ini dapat digabungkan dengan lapisan tersembunyi dan fitur lainnya. Seperti di jaringan neural dalam pada umumnya, parameter akan dioptimalkan selama pelatihan untuk meminimalkan kerugian pada node di lapisan output jaringan.
Mengacu kembali pada contoh rekomendasi makanan, sasaran kita adalah memprediksi hidangan baru yang akan disukai pengguna berdasarkan hidangan favorit mereka saat ini. Pertama, kita dapat mengompilasi data tambahan mengenai lima makanan terfavorit pengguna kita. Kemudian, kita dapat membuat model tugas ini sebagai masalah supervised learning. Kita tetapkan empat dari lima makanan terfavorit ini sebagai data fitur, lalu kita sisihkan makanan kelima secara acak sebagai label positif yang menjadi target prediksi model kita, dengan mengoptimalkan prediksi model menggunakan kerugian softmax.
Selama pelatihan, model jaringan neural akan mempelajari bobot optimal untuk node di lapisan tersembunyi pertama, yang berfungsi sebagai lapisan embedding. Misalnya, jika model berisi tiga node dalam lapisan tersembunyi pertama, model tersebut mungkin menetapkan bahwa tiga dimensi yang paling relevan dari item makanan adalah tingkat kemiripan karakteristiknya dengan roti lapis, hidangan penutup, dan cairan. Gambar 12 menunjukkan nilai input yang dienkode one-hot untuk "hot dog" yang ditransformasikan menjadi vektor tiga dimensi.
![Gambar 12. Jaringan neural untuk enkode one-hot pada hot dog. Lapisan pertama berupa
lapisan input dengan 5 node, dan setiap node diberi anotasi dengan ikon makanan yang
direpresentasikannya (borscht, hot dog, salad, ..., dan shawarma). Node ini masing-masing memiliki
nilai [0, 1, 0, ..., 0], yang merepresentasikan
enkode one-hot pada 'hot dog'. Lapisan input terhubung ke lapisan
embedding 3 node, yang masing-masing nodenya memiliki nilai 2,98, -0,75, dan 0. Lapisan
embedding terhubung ke lapisan tersembunyi 5 node, yang kemudian
terhubung ke lapisan output 5 node.](https://developers.google.com/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?authuser=5&hl=id)
hot dog
yang disediakan sebagai input ke jaringan neural dalam. Lapisan embedding menerjemahkan
enkode one-hot menjadi vektor embedding tiga dimensi
[2.98, -0.75, 0]
.
Selama pelatihan, bobot lapisan embedding akan dioptimalkan sehingga vektor embedding untuk contoh yang mirip menjadi lebih dekat satu sama lain. Sebagaimana disebutkan sebelumnya, dimensi yang dipilih oleh model sebenarnya untuk embedding-nya kemungkinan besar tidak akan seintuitif atau semudah itu untuk dipahami seperti dalam contoh ini.
Embedding kontekstual
Salah satu keterbatasan vektor embedding statis word2vec
adalah potensi ambiguitas kata
dalam konteks yang berbeda. "Ya" maknanya jelas jika berdiri sendiri,
tetapi dalam frasa "Ya, juga sih" maknanya akan menjadi berbeda. Contoh lainnya yaitu "cabang". Kata ini dapat berarti "ranting pohon", "bagian dari organisasi atau perusahaan", "jalan kecil yang menuju ke jalan besar", dll.
Namun, dengan embedding statis, setiap kata direpresentasikan oleh satu titik
dalam ruang vektor, meskipun kata tersebut mungkin memiliki berbagai makna.
Dalam latihan terakhir,
Anda menemukan adanya keterbatasan pada embedding statis untuk kata
orange, yang dapat berarti warna (oranye) atau jenis buah (jeruk). Dengan satu
embedding statis saja, orange akan selalu lebih dekat maknanya dengan warna lain dibandingkan dengan
jus saat dilatih di set data word2vec
.
Embedding kontekstual dikembangkan untuk menangani keterbatasan ini. Dengan embedding kontekstual, satu kata dapat direpresentasikan oleh beberapa embedding yang menggabungkan informasi tentang kata-kata di sekitarnya serta kata itu sendiri. Orange akan memiliki embedding yang berbeda untuk setiap kalimat unik yang berisi kata tersebut dalam set data.
Beberapa metode untuk membuat embedding kontekstual, seperti
ELMo, menggunakan embedding
statis dari suatu contoh, seperti vektor word2vec
untuk sebuah kata dalam kalimat,
lalu mentransformasinya dengan sebuah fungsi yang menggabungkan informasi tentang kata-kata
di sekitarnya. Proses ini menghasilkan embedding kontekstual.
Klik di sini untuk mengetahui detail terkait embedding kontekstual
- Khusus untuk model ELMo, embedding statis digabungkan dengan embedding yang diambil dari lapisan lain, yang mengenkode pembacaan kalimat dari depan ke belakang dan dari belakang ke depan.
- Model BERT menyamarkan bagian urutan yang menjadi inputnya.
- Model transformer menggunakan lapisan self-attention untuk membandingkan tingkat relevansi kata lain dalam sebuah urutan dengan setiap kata tertentu. Model ini juga menambahkan kolom yang relevan dari matriks embedding posisi (lihat encoding posisi) ke setiap embedding token yang telah dipelajari sebelumnya, elemen demi elemen, untuk menghasilkan embedding input yang kemudian digunakan oleh bagian model lainnya untuk inferensi. Embedding input yang unik untuk setiap urutan tekstual yang berbeda inilah yang disebut embedding kontekstual.
Meskipun model-model yang dijelaskan di atas adalah model bahasa, embedding kontekstual juga berguna dalam tugas generatif lainnya, seperti gambar. Dibandingkan hanya menggunakan embedding statis asli dari nilai RGB saja, embedding nilai RGB piksel dalam foto seekor kuda dapat menyediakan lebih banyak informasi bagi model jika dikombinasikan dengan matriks posisi yang merepresentasikan setiap piksel dan sejumlah encoding piksel di sekitarnya, sehingga membentuk embedding kontekstual.