La section précédente vous a montré comment utiliser la factorisation matricielle pour pour apprendre les représentations vectorielles continues. Voici quelques limites de la factorisation matricielle:
- La difficulté d'utiliser les fonctionnalités secondaires (c'est-à-dire toute fonctionnalité au-delà l'ID de la requête/l'ID de l'article). Par conséquent, le modèle ne peut être interrogé d'un utilisateur ou d'un élément présent dans l'ensemble d'entraînement.
- Pertinence des recommandations. Comme vous l'avez vu dans Colab les articles populaires ont tendance à être recommandés pour tout le monde, surtout le produit scalaire comme mesure de similarité. Il est préférable de capturer des données spécifiques centres d'intérêt des utilisateurs.
Les modèles de réseau de neurones profond (DNN) peuvent relever ces limites de la matrice la factorisation. Les DNN peuvent facilement intégrer des caractéristiques de requête et d'élément (en raison de la flexibilité de la couche d'entrée du réseau), ce qui peut aider de capter les centres d'intérêt spécifiques d'un utilisateur et d'améliorer recommandations.
Softmax DNN pour la recommandation
Un modèle de DNN possible est softmax, qui traite le problème comme un problème de prédiction multiclasse dans lequel:
- L'entrée correspond à la requête utilisateur.
- La sortie est un vecteur de probabilité dont la taille est égale au nombre de éléments du corpus, ce qui représente la probabilité d'interaction avec chaque élément ; Par exemple, la probabilité de cliquer ou de regarder Vidéo YouTube.
Entrée
L'entrée d'un DNN peut inclure les éléments suivants:
- caractéristiques denses (par exemple, durée de visionnage et durée depuis la dernière lecture)
- Caractéristiques creuses (par exemple, l'historique des vidéos regardées et le pays)
Contrairement à l'approche de factorisation matricielle, vous pouvez ajouter des caractéristiques secondaires telles que son âge ou son pays. Nous désignerons le vecteur d'entrée par x.
Architecture du modèle
L'architecture du modèle détermine sa complexité et son expressivité. En ajoutant des couches cachées et des fonctions d'activation non linéaires (par exemple, ReLU), le modèle peut capturer des relations plus complexes dans les données. Toutefois, l'augmentation du nombre de paramètres rend généralement le modèle plus difficile et plus coûteux à exécuter. Nous indiquerons la sortie du dernier calque de \(\psi (x) \in \mathbb R^d\).
Résultat softmax: distribution de probabilités prédites
Le modèle mappe la sortie de la dernière couche, \(\psi (x)\), via une fonction softmax à une distribution de probabilité \(\hat p = h(\psi(x) V^T)\), où:
- \(h : \mathbb R^n \to \mathbb R^n\) est la fonction softmax, fourni par \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\)
- \(V \in \mathbb R^{n \times d}\) est la matrice de pondérations softmax.
Le calque softmax mappe un vecteur de scores \(y \in \mathbb R^n\) (parfois appelée logits). à une distribution de probabilité.
Fonction de perte
Enfin, définissez une fonction de perte qui compare les éléments suivants:
- \(\hat p\), la sortie de la couche softmax (distribution de probabilités)
- \(p\), la vérité terrain, qui représente les éléments dont dispose l'utilisateur ont interagi (par exemple, les vidéos YouTube sur lesquelles l'utilisateur a cliqué ou qu'il a regardées). Cela peut être représenté par une distribution multi-hot normalisée vecteur de probabilité).
Par exemple, vous pouvez utiliser la perte d'entropie croisée puisque vous comparez deux distributions de probabilité.
Représentations vectorielles continues softmax
La probabilité de l'élément \(j\) est calculée comme suit : \(\hat p_j = \frac{\exp(\langle \psi(x), V_j\rangle)}{Z}\) où \(Z\) est une constante de normalisation qui ne dépend pas de \(j\).
Autrement dit, \(\log(\hat p_j) = \langle \psi(x), V_j\rangle - log(Z)\), Ainsi, la probabilité logarithmique d'un élément \(j\) est égale à (jusqu'à une constante additive) produit scalaire de vecteurs en deux \(d\)dimensions, que l'on interprétera comme : sous forme de représentations vectorielles continues de requêtes et d'éléments:
- \(\psi(x) \in \mathbb R^d\) est la sortie de la dernière couche cachée. C'est ce que nous appelons la représentation vectorielle continue de la requête \(x\).
- \(V_j \in \mathbb R^d\) est le vecteur de pondérations reliant la dernière couche cachée à la sortie j. C'est ce que nous appelons l'intégration de l'élément \(j\).
DNN et factorisation matricielle
Dans le modèle softmax et le modèle de factorisation matricielle, le système apprend un vecteur de représentation vectorielle continue \(V_j\) par article \(j\). Ce que nous avons appelé le matrice de représentation vectorielle continue d'éléments \(V \in \mathbb R^{n \times d}\) dans "matrice" la factorisation est la matrice de pondérations de la couche softmax.
En revanche, les représentations vectorielles continues des requêtes sont différentes. Au lieu d'apprendre une représentation vectorielle continue \(U_i\) par requête \(i\), le système apprend un mappage de la fonctionnalité de requête \(x\) à une représentation vectorielle continue \(\psi(x) \in \mathbb R^d\). Vous pouvez donc considérer ce modèle DNN comme une généralisation de la matrice factorisation, dans laquelle vous remplacez le côté requête par une valeur fonction \(\psi(\cdot)\).
Pouvez-vous utiliser les caractéristiques de l'article ?
Pouvez-vous appliquer la même idée côté article ? Autrement dit, au lieu d’apprendre une représentation vectorielle continue par élément, le modèle peut-il apprendre une fonction non linéaire d'élément à une représentation vectorielle continue ? Oui. Pour ce faire, utilisez une réseau de neurones, qui se compose de deux réseaux de neurones:
- L'un des réseaux de neurones mappe les caractéristiques d'une requête \(x_{\text{query}}\) pour interroger l'intégration \(\psi(x_{\text{query}}) \in \mathbb R^d\)
- Un réseau de neurones mappe les caractéristiques d'un élément \(x_{\text{item}}\) à l'intégration des éléments \(\phi(x_{\text{item}}) \in \mathbb R^d\)
La sortie du modèle peut être définie comme le produit scalaire de \(\langle \psi(x_{\text{query}}), \phi(x_{\text{item}}) \rangle\) Notez qu'il ne s'agit plus d'un modèle softmax. Le nouveau modèle prédit une valeur par paire \((x_{\text{query}}, x_{\text{item}})\) au lieu d'un vecteur de probabilité pour chaque requête \(x_{\text{query}}\).