Bayangkan Anda sedang mengembangkan aplikasi rekomendasi makanan, di mana pengguna memasukkan makanan favorit mereka, dan aplikasi menyarankan makanan serupa yang mungkin mereka sukai. Anda ingin mengembangkan model machine learning (ML) yang dapat memprediksi kesamaan makanan, sehingga aplikasi Anda dapat membuat rekomendasi ("Karena Anda suka pancake, kami sarankan crepes").
Untuk melatih model, Anda menyeleksi {i>dataset<i} yang berisi 5.000 kumpulan data jenis makanan, termasuk borscht, hot dog, salad, pizza, dan shawarma.
![Gambar 1. Serangkaian ilustrasi dari lima item makanan. Searah jarum jam dari
kiri atas: borscht, hot dog, salad, pizza, shawarma.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images.png?authuser=9&hl=id)
Anda membuat fitur meal
yang berisi
enkode one-hot
representasi dari setiap item makanan dalam {i>dataset <i}itu.
![Gambar 2. Atas: visualisasi encoding one-hot untuk borscht.
Vektor [1, 0, 0, 0, ..., 0] ditampilkan di atas enam kotak,
masing-masing rata dari kiri
di sebelah kanan dengan salah satu angka vektor. Kotak, dari kiri ke kanan
berisi gambar berikut: borscht, hot dog, salad, pizza, [kosong],
dengan perintah {i>shawarma<i}. Tengah: visualisasi encoding one-hot untuk hot dog.
Vektor [0, 1, 0, 0, ..., 0] ditampilkan di atas enam kotak, masing-masing
sejajar dari kiri ke kanan dengan salah satu angka vektor. Kotak-kotak itu memiliki
gambar yang sama dari kiri ke kanan seperti
untuk visualisasi borscht
di atas. Bawah: visualisasi encoding one-hot untuk shawarma. Tujuan
vektor [0, 0, 0, 0, ..., 1] ditampilkan di atas enam kotak, masing-masing
dari kiri ke kanan dengan salah satu angka vektor. Kotak-kotak itu memiliki
gambar yang sama dari kiri ke kanan, seperti
untuk borscht dan hot dog
visualisasi.](/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png)
Perangkap representasi data renggang
Meninjau enkode one-hot ini, Anda melihat dua masalah utama dengan representasi atau representasi dari data.
- Jumlah bobot. Vektor input yang besar berarti sejumlah besar
bobot
untuk jaringan neural.
Dengan entri M dalam encoding one-hot, dan N
di lapisan pertama jaringan setelah input, model harus melatih
Bobot MxN untuk lapisan tersebut. Jumlah bobot yang besar menyebabkan masalah lebih lanjut:
- Jumlah titik data. Semakin banyak bobot dalam model, semakin banyak data yang perlu berlatih secara efektif.
- Jumlah komputasi. Semakin besar bobot, semakin banyak komputasi yang diperlukan untuk melatih dan menggunakan model. Sangat mudah untuk melampaui kemampuan perangkat keras.
- Jumlah memori. Semakin banyak bobot dalam model Anda, semakin banyak memori yang diperlukan pada akselerator yang melatih dan menyajikannya. Meningkatkan skala ini secara efisien sangat sulit.
- Kesulitan dalam memberikan dukungan machine learning di perangkat (ODML). Jika Anda ingin menjalankan model ML Anda di perangkat lokal (bukan menyajikan Anda harus fokus untuk membuat model yang lebih kecil, dan sebaiknya Anda untuk mengurangi jumlah bobot.
- Kurangnya hubungan yang bermakna antarvektor. Nilai vektor dalam formula pengkodean one-hot untuk makanan tidak memberikan informasi apa pun yang berarti tentang kesamaan bahan makanan. Secara matematis, indeks 1 ("hot dog") adalah lebih dekat ke indeks 2 ("salad") daripada indeks 4999 ("shawarma"), meskipun kondisi lebih mirip dengan shawarma (keduanya mengandung daging dan roti) daripada salad.
Dalam modul ini, Anda akan mempelajari cara membuat embeddings, yang memiliki dimensi lebih rendah representasi dari data sparse, yang mengatasi kedua masalah ini.