Entraînement softmax

La page précédente vous a expliqué comment intégrer une couche softmax dans un réseau de neurones profond pour un système de recommandation. Cette page examine de plus près les données d'entraînement pour ce système.

les données d'entraînement

Les données d'entraînement softmax consistent en les caractéristiques de requête \(x\) et un vecteur d'éléments avec lesquels l'utilisateur a interagi (représenté par une distribution de probabilité \(p\)). Ils sont marqués en bleu dans la figure suivante. Les variables du modèle sont les pondérations des différentes couches. Ils sont marqués en orange dans la figure suivante. Le modèle est généralement entraîné à l'aide de n'importe quelle variante de la descente de gradient stochastique.

Image montrant l'entraînement d'un réseau de neurones profond softmax

Échantillonnage négatif

Étant donné que 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, respectivement), le calcul du gradient de la perte (pour une seule requête \(x\)) peut être très coûteux si la taille du corpus \(n\) est trop grande.

Vous pouvez configurer un système pour ne calculer les gradients que pour 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 souffrir du pliage, comme expliqué ci-dessous.

Pliage
Image d'un avion plié en deux et présentant trois groupes de carrés représentant des requêtes, et des cercles représentant des éléments. Chaque groupe a une couleur différente et les requêtes n'interagissent qu'avec les éléments du même groupe. Dans la figure suivante, supposons que chaque couleur représente une catégorie différente de requêtes et d'éléments. Chaque requête (représentée par un carré) n'interagit principalement qu'avec les éléments (représentés par un cercle) de même couleur. Par exemple, considérez chaque catégorie comme une langue différente sur YouTube. Un utilisateur type interagit généralement avec les vidéos d'une langue donnée.

Le modèle peut apprendre à placer les représentations vectorielles continues de requête/d'article d'une couleur donnée les unes par rapport aux autres (ce qui permet de capturer correctement la similarité dans cette couleur). Toutefois, les représentations vectorielles continues de différentes couleurs peuvent se retrouver dans la même région de l'espace de représentation vectorielle, par hasard. Ce phénomène, appelé pliage, peut donner lieu à de fausses recommandations: au moment de la requête, le modèle peut prédire à tort un score élevé pour un élément d'un autre groupe.

Les exemples négatifs sont des éléments libellés "non pertinents" pour une requête donnée. L'affichage d'exemples négatifs pendant l'entraînement apprend au modèle que 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 (ce qui peut être trop cher) ou uniquement les éléments positifs (ce qui rend le modèle sujet au pliage), vous pouvez utiliser un échantillonnage négatif. Plus précisément, vous calculez un gradient approximatif à l'aide des éléments suivants:

  • Tous les éléments positifs (ceux qui apparaissent dans le libellé cible)
  • Échantillon d'éléments à exclure (\(j\) dans \({1, …, n}\))

Il existe différentes stratégies d'échantillonnage des éléments à exclure:

  • Vous pouvez effectuer un échantillonnage de manière uniforme.
  • Vous pouvez attribuer une probabilité plus élevée aux éléments j dont le score est plus élevé \(\psi(x) . V_j\). Intuitivement, ce sont les exemples qui contribuent le plus au gradient. Il s'agit souvent de négatifs négatifs.

Sur la factorisation matricielle par rapport à Softmax

Les modèles de DNN répondent à de nombreuses limites de la factorisation matricielle, mais sont généralement plus coûteux à entraîner et à interroger. Le tableau ci-dessous récapitule certaines des différences importantes entre les deux modèles.

Factorisation matricielle DNN avec Softmax
Fonctionnalités des requêtes Ce n'est pas facile à inclure. Peut être inclus.
Démarrage à froid Ne gère pas facilement les requêtes ou les éléments hors vocabulaire. Vous pouvez utiliser une méthode heuristique (par exemple, pour une nouvelle requête, les représentations vectorielles continues moyennes de requêtes similaires). Gérez facilement les nouvelles requêtes.
Pliage Vous pouvez facilement réduire le pli en ajustant le poids non observé dans la méthode WALS. Pliable. Vous avez besoin de techniques telles que l'échantillonnage négatif ou la gravité.
Évolutivité de l'entraînement Scaling facile à de très grands corpus (peut-être des centaines de millions d'éléments ou plus), mais uniquement si la matrice d'entrée est creuses. Plus difficiles à adapter pour les très grands corpus. Certaines techniques peuvent être utilisées, telles que le hachage, l'échantillonnage négatif, etc.
Évolutivité de la diffusion 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 des éléments V sont statiques et peuvent être stockées.

L'intégration de requêtes doit généralement être calculée au moment de la requête, ce qui rend le modèle plus coûteux à diffuser.

En résumé :

  • La factorisation matricielle est généralement préférable pour les grands corpus. Il est plus facile à faire évoluer, moins coûteux à interroger et moins sujet au pliage.
  • Les modèles de DNN peuvent mieux capturer les préférences personnalisées, mais sont plus difficiles à entraîner et plus coûteux à interroger. Les modèles de DNN sont préférables à la factorisation matricielle pour la notation, car ils peuvent utiliser plus de caractéristiques pour mieux capturer la pertinence. De plus, il est généralement possible de plier des modèles de DNN, car vous souhaitez principalement classer un ensemble de candidats préfiltrés considérés comme pertinents.