Factorisation matricielle

La factorisation matricielle est un modèle de représentation vectorielle simple. Compte tenu de la matrice de commentaires A \(\in R^{m \times n}\), où \(m\) est le nombre d'utilisateurs (ou de requêtes) et \(n\) le nombre d'éléments, le modèle apprend:

  • Une matrice de représentation vectorielle continue \(U \in \mathbb R^{m \times d}\), où la ligne i correspond à la représentation vectorielle continue de l'utilisateur i
  • Une matrice de représentation vectorielle continue d'éléments \(V \in \mathbb R^{n \times d}\), où la ligne j correspond à la représentation vectorielle continue de l'élément j.

Illustration de la factorisation matricielle à l'aide d'un exemple de film récurrent.

Les représentations vectorielles continues sont apprises de sorte que le produit \(U V^T\) se rapproche de la matrice de rétroaction A. Notez que l'\((i, j)\) entrée \(U . V^T\) est simplement le produit scalaire\(\langle U_i, V_j\rangle\) des représentations vectorielles continues de l'utilisateur \(i\)et de l'élément \(j\), qui doivent être proches de \(A_{i, j}\).

Choisir la fonction objectif

La distance au carré est une fonction d'objectif intuitive. Pour ce faire, réduisez la somme des carrés des erreurs sur toutes les paires d'entrées observées:

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2.\]

Dans cette fonction d'objectif, vous n'additionnez que les paires observées (i, j), c'est-à-dire des valeurs non nulles dans la matrice de rétroaction. Toutefois, faire la somme des valeurs de l'une n'est pas une bonne idée. Une matrice de toutes les valeurs aura une perte minimale et générera un modèle qui ne pourra pas formuler de recommandations efficaces et se prêtera mal à la généralisation.

Illustration de trois matrices: seulement la factorisation matricielle, la factorisation pondérée et la décomposition de la valeur singulière.

Vous pouvez peut-être considérer les valeurs non observées comme égales à zéro et additionner toutes les entrées de la matrice. Cela correspond à réduire la distance au carré de Frobenius située entre \(A\) et son approximation \(U V^T\):

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \|A - U V^T\|_F^2.\]

Vous pouvez résoudre ce problème quadratique grâce à la décomposition en valeurs singulières (SVD) de la matrice. Cependant, ce type de solution n'est pas non plus une solution idéale, car dans les applications réelles, la matrice \(A\) peut être très creuse. Par exemple, comparez toutes les vidéos YouTube à celles qu'un utilisateur donné a regardées. La solution \(UV^T\) (qui correspond à l'approximation de la matrice d'entrée du modèle) sera probablement proche de zéro, ce qui entraînera de mauvaises performances de généralisation.

En revanche, la factorisation matricielle pondérée décompose l'objectif en deux sommes:

  • Somme des entrées observées.
  • Somme sur les entrées non observées (traitées comme des zéros).

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 + w_0 \sum_{(i, j) \not \in \text{obs}} (\langle U_i, V_j\rangle)^2.\]

Ici, \(w_0\) est un hyperparamètre qui pondère les deux termes de sorte que l'objectif ne soit pas dominé par l'un ou l'autre. Le réglage de cet hyperparamètre est très important.

\[\sum_{(i, j) \in \text{obs}} w_{i, j} (A_{i, j} - \langle U_i, V_j \rangle)^2 + w_0 \sum_{i, j \not \in \text{obs}} \langle U_i, V_j \rangle^2\]

où \(w_{i, j}\) est la fonction de la fréquence de la requête i et de l'élément j.

Réduire la fonction objectif

Voici quelques algorithmes courants permettant de minimiser la fonction d'objectif:

  • La descente de gradient stochastique (SGD) est une méthode générique permettant de minimiser les fonctions de perte.

  • Les moindres carrés alternés pondérés (WALS) sont spécialisés dans cet objectif particulier.

L'objectif est quadratique dans chacune des deux matrices U et V. (Notez toutefois que le problème n'est pas conjointement convexe.) La méthode WALS fonctionne en initialisant les représentations vectorielles continues de manière aléatoire, puis en alternant entre:

  • Résoudre \(U\) et résoudre le problème \(V\)
  • Résoudre \(V\) et résoudre le problème \(U\)

Chaque étape peut être résolue exactement (via la solution d'un système linéaire) et distribuée. La convergence de cette technique est garantie, car chaque étape diminue la perte.

SGD et WALS

La SGD et la WALS présentent des avantages et des inconvénients. Consultez les informations ci-dessous pour les comparer:

SGD

Très flexible, vous pouvez utiliser d'autres fonctions de perte.

Peut être mis en parallèle.

Plus lent : la convergence n'est pas aussi rapide.

Il est plus difficile de traiter les entrées non observées (nécessite un échantillonnage négatif ou par gravité).

WALS

Uniquement sur les carrés de perte.

Peut être mis en parallèle.

Converge plus rapidement que SGD

Gérez plus facilement les entrées non observées.