Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
La page précédente a expliqué comment incorporer une couche softmax dans un
de neurones pour un système de recommandation. Cette page examine de plus près
les données d'entraînement de ce système.
Données d'entraînement
Les données d'entraînement softmax sont constituées des caractéristiques de requête \(x\) et
un vecteur d'éléments avec lesquels l'utilisateur a interagi (représenté sous la forme
distribution de probabilités \(p\)). Elles sont indiquées en bleu dans
comme illustré ci-dessous. Les variables du modèle sont les pondérations
dans les différentes couches. Ils sont marqués en orange dans les cas suivants :
du chiffre. Le modèle est généralement entraîné à l'aide de n'importe quelle variante
la descente de gradient stochastique.
Échantillonnage négatif
Puisque la fonction de perte compare deux vecteurs de probabilité
\(p, \hat p(x) \in \mathbb R^n\) (la vérité terrain et
la sortie du modèle), en calculant la
le gradient de perte (pour une seule requête \(x\)) peut être égal à
beaucoup plus cher si le corpus \(n\) est trop volumineux.
Vous pouvez configurer un système pour calculer les gradients uniquement sur les éléments positifs
(éléments actifs dans le vecteur de vérité terrain). Toutefois, si le système
ne s'entraîne que sur des paires positives, le modèle peut être plié, car
expliqué ci-dessous.
Pliage
Dans la figure suivante, supposons que chaque couleur représente un
une catégorie de requêtes et d'éléments. Chaque requête (représentée par un carré) uniquement
interagit principalement avec les éléments (représentés par un cercle) de la même couleur.
Par exemple, considérez chaque catégorie comme une langue différente dans YouTube.
Un utilisateur type interagit principalement avec des vidéos dans une langue donnée.
Le modèle peut apprendre à placer les représentations vectorielles continues requête/élément d'un objet
couleurs les unes par rapport aux autres (en capturant correctement la similarité au sein de
couleur), mais les représentations vectorielles continues de couleurs différentes peuvent se retrouver dans la même région
de l'espace de représentation vectorielle, par hasard. Ce phénomène, connu
comme pliée, peut donner lieu à de fausses recommandations: au moment de la requête,
le modèle peut prédire de manière incorrecte un score élevé pour un élément à partir d'une
un autre groupe.
Les exemples négatifs sont les éléments libellés "non pertinents". à une requête donnée.
En montrant les exemples négatifs du modèle pendant l'entraînement,
les représentations vectorielles continues de différents groupes
doivent être écartées les unes des autres.
Au lieu d'utiliser tous les éléments pour calculer le gradient (qui peut être trop important
cher) ou n'utiliser que des éléments positifs (ce qui rend le modèle
pliage), vous pouvez utiliser l'échantillonnage négatif. Plus précisément, vous calculez
gradient approximatif, à l'aide des éléments suivants:
Tous les éléments à inclure (ceux qui figurent dans le libellé cible)
Un échantillon d'éléments négatifs (\(j\) dans \({1, …, n}\))
Il existe différentes stratégies pour échantillonner les mots clés à exclure:
Vous pouvez effectuer un échantillonnage uniforme.
Vous pouvez définir une probabilité plus élevée pour les éléments j dont
score \(\psi(x) . V_j\). Intuitivement, ce
sont des exemples
qui contribuent le plus au gradient) ; ces exemples sont souvent
appelés "mots clés négatifs".
Comparaison entre la factorisation matricielle et softmax
Les modèles de DNN résolvent de nombreuses limites de la factorisation matricielle, mais sont généralement
plus coûteux à entraîner et à interroger. Le tableau ci-dessous résume certains des
les différences importantes entre les deux modèles.
Factorisation matricielle
Softmax DNN
Fonctionnalités de requête
Difficile à inclure.
Peut être incluse.
Démarrage à froid
Gestion difficile du vocabulaire
des requêtes ou des éléments. Certaines méthodes heuristiques peuvent être utilisées (par exemple, pour un
nouvelle requête, représentations vectorielles continues moyennes de requêtes similaires).
Gère facilement les nouvelles requêtes.
Pliage
Vous pouvez facilement réduire le risque de pliage
en ajustant la pondération non observée dans la méthode WALS.
Facile à plier. Nécessaire
telles que l'échantillonnage négatif ou la gravité.
Évolutivité de l'entraînement
Évolutivité facile à très grande échelle
(peut-être des centaines de millions d'articles ou plus), mais seulement si
la matrice d'entrée est creuse.
Plus difficiles à faire évoluer vers les très grands volumes
et des corpus. Certaines techniques peuvent être utilisées, telles que le hachage,
échantillonnage négatif, etc.
Évolutivité de l'inférence
Les représentations vectorielles continues U et V sont statiques
et un ensemble de candidats
peut être précalculé et stocké.
Les représentations vectorielles continues d'éléments V sont statiques
et peuvent être stockées.
La représentation vectorielle continue de la requête
doit être calculé au moment de la requête, ce qui rend le modèle plus onéreux
sont diffusées.
En résumé :
La factorisation matricielle est généralement la meilleure option pour les grands corpus.
Il est plus facile à faire évoluer, moins coûteux à interroger et moins sujet aux pliages.
Les modèles de DNN peuvent mieux capturer les préférences personnalisées,
plus difficiles à entraîner et plus coûteux à interroger. Il est préférable d'utiliser des modèles DNN
à la factorisation matricielle pour l'évaluation, car les modèles DNN peuvent utiliser
plus de fonctionnalités pour mieux capturer la pertinence. De plus, il est généralement
acceptable pour le pliage des modèles DNN, car vous vous intéressez principalement
classer un ensemble pré-filtré de candidats qui sont considérés comme pertinents
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/07/26 (UTC).
[null,null,["Dernière mise à jour le 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."]]