Embedding

Bayangkan Anda sedang mengembangkan aplikasi rekomendasi makanan. Di aplikasi tersebut, pengguna dapat memasukkan makanan favorit mereka, lalu aplikasi ini akan menyarankan makanan serupa yang mungkin mereka sukai. Anda ingin mengembangkan model machine learning (ML) yang dapat memprediksi kemiripan makanan, sehingga aplikasi Anda dapat memberikan rekomendasi berkualitas tinggi ("Karena Anda suka panekuk, kami merekomendasikan krep").

Untuk melatih model tersebut, Anda menyeleksi sebuah set data berisi 5.000 item makanan populer, termasuk borscht, hot dog, salad, pizza, dan shawarma.

Gambar 1. Sekumpulan ilustrasi yang menampilkan lima item makanan. Searah jarum jam dari
       kiri atas: borscht, hot dog, salad, pizza, shawarma.
Gambar 1. Sampel item makanan yang termasuk dalam set data makanan.

Anda membuat fitur meal yang berisi representasi setiap item makanan yang dienkode one-hot dalam set data. Encoding mengacu pada proses memilih representasi numerik awal dari data untuk melatih model.

Gambar 2. Atas: visualisasi enkode one-hot untuk borscht.
       Vektor [1, 0, 0, 0, ..., 0] ditampilkan di atas enam kotak,
       masing-masing disejajarkan dari kiri
       ke kanan dengan salah satu nomor vektor. Dari kiri ke kanan, kotak tersebut
       berisi gambar berikut: borscht, hot dog, salad, pizza, [kosong],
       shawarma. Tengah: visualisasi enkode one-hot untuk hot dog.
       Vektor [0, 1, 0, 0, ..., 0] ditampilkan di atas enam kotak, masing-masing
       disejajarkan dari kiri ke kanan dengan salah satu nomor vektor. Kotak tersebut berisi
       gambar yang sama dari kiri ke kanan seperti visualisasi
       borscht di atas. Bawah: visualisasi enkode one-hot untuk shawarma. Vektor
       [0, 0, 0, 0, ..., 1] ditampilkan di atas enam kotak, masing-masing disejajarkan
       dari kiri ke kanan dengan salah satu nomor vektor. Kotak tersebut berisi
       gambar yang sama dari kiri ke kanan seperti visualisasi borscht dan
       hot dog.
Gambar 2. Enkode one-hot pada borscht, hot dog, dan shawarma. Setiap vektor enkode one-hot memiliki panjang 5.000 entri (satu entri untuk setiap item menu dalam set data). Elipsis pada diagram merepresentasikan 4.995 entri yang tidak ditampilkan.

Potensi masalah dalam representasi data sparse

Setelah meninjau enkode one-hot ini, Anda menyadari beberapa masalah terkait representasi data tersebut.

  • Jumlah bobot. Jika vektor input sangat banyak, jaringan neural akan memiliki jumlah bobot yang sangat besar. Jika M adalah jumlah entri dalam enkode one-hot Anda, dan N adalah jumlah node pada lapisan pertama jaringan setelah input, artinya model harus melatih bobot sebesar MxN untuk lapisan tersebut.
  • Jumlah titik data. Makin besar bobot dalam model Anda, makin banyak data yang perlu dilatih secara efektif.
  • Jumlah komputasi. Makin besar bobotnya, makin banyak komputasi yang diperlukan untuk melatih dan menggunakan model. Tanpa disadari, Anda bisa saja melampaui kemampuan hardware Anda.
  • Jumlah memori. Makin besar bobot dalam model Anda, makin banyak memori yang dibutuhkan pada akselerator yang melatih dan menayangkannya. Dalam hal ini, peningkatan skala secara efisien sangatlah sulit.
  • Sulitnya mendukung machine learning di perangkat (ODML). Jika Anda berencana menjalankan model ML di perangkat lokal (alih-alih menayangkannya), Anda harus fokus untuk memperkecil model Anda, dan sebaiknya kurangi juga jumlah bobotnya.

Dalam modul ini, Anda akan mempelajari cara membuat embedding, yakni representasi data sparse berdimensi lebih rendah, yang menangani masalah ini.