Les deux modèles de recommandation basée sur la session comparent NARM, STAMP

introduire

Aujourd'hui, de nombreux endroits ont besoin de systèmes de recommandation, tels que les plateformes d'achat en ligne, les plateformes de musique, les plateformes de cinéma et de télévision, etc. Si une application peut pousser le contenu avec plus de précision, les utilisateurs seront naturellement plus collants et plus compétitifs.
Mais maintenant, il y a un problème. Une partie du travail que nous avons effectué dans le passé est basée sur l'historique des utilisateurs. Maintenant, en raison de problèmes de politique de confidentialité, nous ne pouvons parfois pas obtenir le long historique des utilisateurs. Nous ne pouvons obtenir que l'historique actuel de l'utilisateur. page Web. Le comportement dans /app, ce bref historique que nous appelons session.
Par exemple, lorsque vous téléchargez le logiciel de Taobao et recherchez ce que vous voulez sans vous connecter, Taobao ne sait rien de vous pour le moment. Vous cliquez d'abord sur un haut Adidas, puis sur un pantalon Nike, puis sur un haut Li Ning, ces trois clics forment votre session en cours. Ce que nous devons faire, c'est prédire sur quoi vous voulez cliquer ensuite en fonction de ces trois clics.À travers ce modèle, nous pouvons vous recommander des vêtements Anta, ou une autre version de vêtements Adidas.
Dans l'ensemble, cette méthode basée sur les sessions peut toujours faire des recommandations avec une certaine qualité sans violer la vie privée des utilisateurs, et elle est digne de nos recherches.

Présentation du modèle

En général, la recommandation basée sur la session comporte deux branches : la première consiste à considérer la session comme une séquence, à utiliser le modèle RNN tel que le traitement des données de flux pour obtenir le vecteur de couche cachée et à créer un modèle de prédiction basé sur celui-ci.

L'autre est une méthode basée sur le réseau de neurones de graphe GNN.En construisant un graphe orienté, la méthode GNN est utilisée pour apprendre le vecteur d'expression, et des prédictions sont faites sur cette base.

Les deux modèles présentés aujourd'hui appartiennent à la première catégorie

NARM

Chaque produit peut en fait être identifié par un identifiant, ce qui revient à convertir chaque mot en identifiant dans la tâche NLP. De la même manière, nous pouvons également avoir l'intégration de chaque produit et alimenter les données dans le RNN en fonction de cela.

Ce modèle est en fait très simple et l'encodage est divisé en deux parties, l'encodeur global et l'encodeur local.

encodeur global

Grâce aux similitudes avec les tâches NLP que nous avons mentionnées ci-dessus, nous pouvons considérer cette session comme l'équivalent d'une phrase pour la commodité de la compréhension. Nous convertissons d'abord les produits en identifiants via word2id, obtenons leurs intégrations, puis les envoyons dans le RNN.

Dans cet article, l'auteur utilise GRU.

En parlant de fantaisie, mais la première partie de l'encodage obtenu par cet encodeur global est en fait le dernier vecteur de couche cachée de RNN.
ctg = ht c_t^g=h_tctg=ht

encodeur local

Cet endroit utilise l'attention.

Pour chaque élément de la session, son poids d'attention est :
α tj = v T σ ( A 1 ht + A 2 hj ) \alpha_{tj} = v^T\sigma(A_1h_t + A_2h_j)unt j=vT σ(UNE1ht+UN2hje)
CeciriA1 , A 2 , v A_1,A_2,vUN1,UN2,v sont des paramètres,ht h_thtReprésente la dernière couche cachée, qui est en fait ce que l'encodeur global vient de mentionner, et hj h_jhjeC'est le vecteur de couche cachée obtenu par le GRU local du jème produit.

La représentation vectorielle finale de cet encodeur :
ctl = ∑ j = 1 t α tjhj c_t^l=\sum_{j=1}^t \alpha_{tj}h_jctje=j = 1tunt jhje

modèle final

La représentation vectorielle finale consiste à mettre ensemble les vecteurs obtenus par les deux encodeurs,
ct = [ ctg ; ctl ] c_t = [c_t^g ; c_t^l]ct=[ ctg;ctje]
Pour la session en cours, on peut obtenir directement leur matrice d'intégration :
E ∈ R n × embedding size E \in \mathbb{R}^{n \times embed \;size}ERn × e mb e d
Le vecteur de score final de s i ze
est calculé comme suit : S = EB ct , B ∈ R embed × hidden ∗ 2 S = EBc_t, \ ; B \in \mathbb{R}^{embed\times hidden*2}S=EB ct,BRe mb e d × hi dd e n 2
où B est le paramètre

L'auteur de ce score final n'a pas été envoyé à softmax pour la normalisation, mais a été envoyé directement à la perte d'entropie croisée pour calculer la perte.

TIMBRE

Ici, vous verrez beaucoup de choses similaires à NARM, mais elles sont appelées différemment, donc c'est compréhensible (rires). Mais dans ce modèle, RNN n'est pas utilisé pour calculer le vecteur de couche cachée, et tout se fait directement à partir de l'intégration.

mémoire à court terme

Cette mémoire à court terme est l'encodeur global ci-dessus, qui organise les intégrations de tous les produits de la session dans une matrice dans l'ordre d'apparition, et l'intégration du dernier produit est la mémoire à court terme.

memoire à long terme

Voici un autre vecteur :
ms = 1 t ∑ i = 1 txi m_s = \frac{1}{t}\sum_{i=1}^tx_ims=t1je = 1tXje
Ici xi x_iXjeReprésente l'intégration de chaque produit. En d'autres termes, ce vecteur est la valeur moyenne de toutes les intégrations de produits dans la session en cours.

Mémoire à court terme mt = xt mentionné ci-dessus m_t = x_t
mt=Xt
C'est l'encastrement du dernier produit.

Le poids de l'attention est ici calculé comme ceci :
α i = W 0 σ ( W 1 xi + W 2 xt + W 3 ms + b ) \alpha_i = W_0\sigma(W_1x_i + W_2x_t+W_3m_s+b)unje=O0s ( W1Xje+O2Xt+O3ms+b )

Par sommation pondérée on obtient le vecteur de représentation de cette partie :
ma = ∑ i = 1 t α ixi m_a = \sum_{i=1}^t\alpha_ix_imun=je = 1tunjeXje

modèle final

Mettez la mémoire à court terme et à long terme mt , ma m_t, m_amt,munEnvoyez-le respectivement à deux couches linéaires et obtenez le vecteur intermédiaire ht, hs h_t, h_sht,hs

Le score de prédiction final de chaque produit est :
zi ^ = σ ( < hs , ht , xi > ) , 1 ≤ i ≤ ∣ V ∣ \hat{z_i} = \sigma(<h_s, h_t, x_i>), 1 \ leq je \leq |V|zje^=σ ( <hs,ht,Xje>) ,1jeV ∣Le
symbole qui semble être le produit interne ici est défini par le texte lui-même, ce qui signifie multiplier chaque position des trois vecteurs, puis ajouter chaque position du vecteur après la multiplication. Exprimé dans les formules :
< a , b , c > = ∑ i = 1 daibici <a,b,c> = \sum_{i=1}^d a_ib_ic_i<un ,b ,c>=je = 1unjebjecje
La prédiction finale est d'envoyer ces scores à softmax pendant un certain temps.

Comparer

Ces deux modèles se ressemblent beaucoup : tous deux utilisent le vecteur de la dernière position comme représentation courante, utilisent la méthode de la moyenne pondérée par l'attention pour obtenir une représentation de l'ensemble, et enfin utilisent une méthode similaire au produit scalaire pour obtenir chaque bien. .

Cependant, ces deux modèles sont toujours fondamentalement différents.Le point le plus important est que STAMP n'a pas besoin d'utiliser RNN pour effectuer un traitement préliminaire sur l'intégration comme ces articles précédents, mais utilise directement des vecteurs d'intégration pour le traitement.

Ceci est très similaire à la signification de l'article L'attention est tout ce dont vous avez besoin Ce sont tous des modèles basés uniquement sur le mécanisme d'intégration et d'attention. La plus grande signification de ce genre d'article est qu'il montre que la méthode de traitement basée sur RNN a des limites, c'est-à-dire que le traitement du contenu de la session par RNN peut être complètement remplacé, voire supprimé. Je pense que c'est pourquoi les chercheurs ultérieurs se concentreront sur GNN.

おすすめ

転載: blog.csdn.net/Petersburg/article/details/128402171