Embedding

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.
Gambar 1. Pengambilan sampel item makanan yang disertakan dalam {i>dataset<i} makanan.

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.
Gambar 2. Encoding one-hot borscht, hot dog, dan shawarma. Setiap vektor encoding one-hot memiliki panjang 5.000 (satu entri untuk setiap dalam set data). Tanda kurung tutup pada diagram menunjukkan 4.995 entri yang tidak ditampilkan.

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.