Pelatihan softmax
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Halaman sebelumnya menjelaskan cara menggabungkan lapisan softmax ke dalam
neural untuk sistem rekomendasi. Halaman ini membahas lebih lanjut
data pelatihan untuk sistem ini.
Data pelatihan
Data pelatihan softmax terdiri dari fitur kueri \(x\) dan
vektor item yang berinteraksi dengan pengguna (diwakili sebagai
distribusi probabilitas \(p\)). Hal ini ditandai
dengan warna biru pada
gambar berikut. Variabel model adalah bobot
di lapisan-lapisan yang berbeda. Warna ini ditandai sebagai oranye dalam
gambar ini. Model ini biasanya dilatih menggunakan varian
penurunan gradien stokastik.
Sampling negatif
Karena fungsi kerugian membandingkan dua vektor probabilitas
\(p, \hat p(x) \in \mathbb R^n\) (kebenaran dasar dan
output model, masing-masing), menghitung
gradien kerugian (untuk satu kueri \(x\)) dapat
sangat mahal jika ukuran korpus \(n\) terlalu besar.
Anda dapat menyiapkan sistem untuk menghitung gradien hanya pada item positif
(item yang aktif di vektor kebenaran dasar). Namun, jika sistem
hanya dilatih dengan pasangan positif, model mungkin mengalami
yang dijelaskan di bawah ini.

Pada gambar berikut, asumsikan bahwa setiap warna mewakili
kategori kueri dan item. Hanya setiap kueri (diwakili sebagai persegi)
kebanyakan berinteraksi dengan item (diwakili sebagai lingkaran) dari warna yang sama.
Misalnya, pertimbangkan setiap kategori sebagai bahasa yang berbeda di YouTube.
Pengguna umumnya akan berinteraksi dengan video dalam satu bahasa tertentu.
Model ini bisa mempelajari cara menempatkan
kueri/item embedding dari
warna relatif satu sama lain (dengan benar menangkap kesamaan di dalamnya
warna), tetapi embedding dari warna yang berbeda bisa saja berakhir di region yang sama
dari ruang embedding, secara kebetulan. Fenomena ini, dikenal
sebagai folding, dapat menyebabkan rekomendasi palsu: pada waktu kueri,
model mungkin salah memprediksi skor tinggi untuk item dari
kelompok yang berbeda.
Contoh negatif adalah item berlabel "tidak relevan" pada kueri tertentu.
Menampilkan contoh negatif model selama pelatihan mengajarkan model yang
embedding dari grup yang berbeda
harus didorong dari satu sama lain.
Alih-alih menggunakan semua item untuk
menghitung gradien (yang bisa terlalu
mahal) atau hanya menggunakan item positif (yang membuat model rentan terhadap
lipat), Anda dapat menggunakan sampling negatif. Lebih tepatnya, Anda menghitung
perkiraan gradien, menggunakan item berikut:
- Semua item positif (item yang muncul di label target)
- Contoh item negatif (\(j\) dalam \({1, …, n}\))
Ada beberapa strategi yang berbeda untuk negatif sampel:
- Anda dapat mengambil sampel secara seragam.
- Anda dapat memberikan probabilitas yang lebih tinggi untuk item j dengan
skor \(\psi(x) . V_j\). Secara intuitif, ini adalah contoh-contoh
yang paling berkontribusi pada gradien); contoh-contoh ini sering
yang disebut {i>hard negative<i}.
Tentang faktorisasi matriks versus softmax
Model DNN memecahkan banyak
batasan Faktorisasi Matriks, tetapi biasanya
biaya untuk melatih dan menjalankan kueri. Tabel di bawah ini merangkum beberapa
perbedaan penting antara kedua model.
|
Faktorisasi Matriks |
DNN Softmax |
Fitur kueri |
Tidak mudah disertakan. |
Dapat disertakan. |
Cold start |
Tidak mudah menangani kosakata yang salah
kueri atau item. Beberapa heuristik dapat digunakan (misalnya, untuk
kueri baru, rata-rata embedding kueri serupa). |
Menangani kueri baru dengan mudah. |
Layanan melipat |
Perangkat foldable dapat dikurangi dengan mudah
dengan menyesuaikan bobot yang tidak diamati di WALS. |
Ringan untuk dilipat. Perlu menggunakan
seperti sampling negatif atau gravitasi. |
Melatih skalabilitas |
Mudah diskalakan ke sangat besar
corpora (mungkin ratusan juta item atau lebih), tetapi hanya jika
matriks input renggang. |
Lebih sulit untuk diskalakan ke sangat besar
korpora. Beberapa teknik dapat digunakan, seperti {i>hashing<i},
sampling negatif, dll. |
Skalabilitas penayangan |
Embedding U dan V statis,
dan serangkaian kandidat dapat dihitung
sebelumnya dan disimpan. |
Penyematan item V bersifat statis
dan dapat disimpan.
Penyematan kueri biasanya
perlu dihitung pada waktu kueri, sehingga model menjadi lebih mahal untuk
yang diperlukan. |
Rangkuman:
- Faktorisasi matriks biasanya merupakan pilihan yang lebih baik untuk korpora besar.
Lebih mudah diskalakan, lebih murah untuk membuat kueri, dan tidak terlalu rentan terhadap lipatan.
- Model DNN dapat menangkap preferensi yang dipersonalisasi dengan lebih baik, tetapi
lebih sulit untuk dilatih dan
lebih mahal untuk membuat kueri. Model DNN lebih disukai
ke faktorisasi matriks untuk penskoran, karena model DNN dapat menggunakan
lebih banyak fitur untuk menangkap relevansi dengan lebih baik. Selain itu, biasanya
masih dapat diterima oleh model DNN untuk dilipat, karena Anda
sangat memperhatikan
memeringkatkan kumpulan kandidat yang telah
difilter dan diasumsikan relevan.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2024-07-26 UTC.
[null,null,["Terakhir diperbarui pada 2024-07-26 UTC."],[[["\u003cp\u003eThis page focuses on the training data and process for a softmax deep neural network recommendation system.\u003c/p\u003e\n"],["\u003cp\u003eNegative sampling is crucial to avoid "folding," where embeddings from different categories are incorrectly grouped together.\u003c/p\u003e\n"],["\u003cp\u003eNegative sampling involves training the model on both positive (relevant) and negative (irrelevant) examples.\u003c/p\u003e\n"],["\u003cp\u003eCompared to Matrix Factorization, softmax DNNs are more flexible but computationally expensive and susceptible to folding.\u003c/p\u003e\n"],["\u003cp\u003eWhile Matrix Factorization is better for large-scale applications, DNNs excel at capturing personalized preferences for recommendation tasks.\u003c/p\u003e\n"]]],[],null,["# Softmax training\n\nThe previous page explained how to incorporate a softmax layer into a deep\nneural network for a recommendation system. This page takes a closer look at the\ntraining data for this system.\n\nTraining data\n-------------\n\nThe softmax training data consists of the query features \\\\(x\\\\) and\na vector of items the user interacted with (represented as a\nprobability distribution \\\\(p\\\\)). These are marked in blue in\nthe following figure. The variables of the model are the weights\nin the different layers. These are marked as orange in the following\nfigure. The model is typically trained using any variant of\nstochastic gradient descent.\n\n### Negative sampling\n\nSince the loss function compares two probability vectors\n\\\\(p, \\\\hat p(x) \\\\in \\\\mathbb R\\^n\\\\) (the ground truth and\nthe output of the model, respectively), computing the\ngradient of the loss (for a single query \\\\(x\\\\)) can be\nprohibitively expensive if the corpus size \\\\(n\\\\) is too big.\n\nYou could set up a system to compute gradients only on the positive items\n(items that are active in the ground truth vector). However, if the system\nonly trains on positive pairs, the model may suffer from folding, as\nexplained below. \nFolding \nIn the following figure, assume that each color represents a different category of queries and items. Each query (represented as a square) only mostly interacts with the items (represented as a circle) of the same color. For example, consider each category to be a different language in YouTube. A typical user will mostly interact with videos of one given language.\n\nThe model may learn how to place the query/item embeddings of a given\ncolor relative to each other (correctly capturing similarity within that\ncolor), but embeddings from different colors may end up in the same region\nof the embedding space, by chance. This phenomenon, known\nas **folding**, can lead to spurious recommendations: at query time,\nthe model may incorrectly predict a high score for an item from a\ndifferent group.\n\n**Negative examples** are items labeled \"irrelevant\" to a given query.\nShowing the model negative examples during training teaches the model that\nembeddings of different groups should be pushed away from each other.\n\nInstead of using all items to compute the gradient (which can be too\nexpensive) or using only positive items (which makes the model prone to\nfolding), you can use negative sampling. More precisely, you compute an\napproximate gradient, using the following items:\n\n- All positive items (the ones that appear in the target label)\n- A sample of negative items (\\\\(j\\\\) in \\\\({1, ..., n}\\\\))\n\nThere are different strategies for sampling negatives:\n\n- You can sample uniformly.\n- You can give higher probability to items j with higher score \\\\(\\\\psi(x) . V_j\\\\). Intuitively, these are examples that contribute the most to the gradient); these examples are often called hard negatives.\n\n| **Extra resources:**\n|\n| - For a more comprehensive account of the technology, architecture, and models used in YouTube, see [Deep Neural Networks\n| for YouTube Recommendations](https://research.google.com/pubs/pub45530.html).\n| - See [Xin et al., Folding:\n| Why Good Models Sometimes Make Spurious Recommendations](https://dl.acm.org/citation.cfm?id=3109911) for more details on folding.\n| - To learn more about negative sampling, see [Bengio and Senecal,\n| Adaptive Importance Sampling to Accelerate Training of a Neural\n| Probabilistic Language Model.](https://ieeexplore.ieee.org/document/4443871/)\n\nOn matrix factorization versus softmax\n--------------------------------------\n\nDNN models solve many limitations of Matrix Factorization, but are typically\nmore expensive to train and query. The table below summarizes some of the\nimportant differences between the two models.\n\n| | Matrix Factorization | Softmax DNN |\n|----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Query features | Not easy to include. | Can be included. |\n| Cold start | Does not easily handle out-of vocab queries or items. Some heuristics can be used (for example, for a new query, average embeddings of similar queries). | Easily handles new queries. |\n| Folding | Folding can be easily reduced by adjusting the unobserved weight in WALS. | Prone to folding. Need to use techniques such as negative sampling or gravity. |\n| Training scalability | Easily scalable to very large corpora (perhaps hundreds of millions items or more), but only if the input matrix is sparse. | Harder to scale to very large corpora. Some techniques can be used, such as hashing, negative sampling, etc. |\n| Serving scalability | Embeddings U, V are static, and a set of candidates can be pre-computed and stored. | Item embeddings V are static and can be stored. The query embedding usually needs to be computed at query time, making the model more expensive to serve. |\n\nIn summary:\n\n- Matrix factorization is usually the better choice for large corpora. It is easier to scale, cheaper to query, and less prone to folding.\n- DNN models can better capture personalized preferences, but are harder to train and more expensive to query. DNN models are preferable to matrix factorization for scoring because DNN models can use more features to better capture relevance. Also, it is usually acceptable for DNN models to fold, since you mostly care about ranking a pre-filtered set of candidates assumed to be relevant."]]