【序列推荐、图神经网络】SR-GNN:Session-based Recommendation with Graph Neural Networks

SR-GNN是一种用于会话推荐的模型,通过构建SessionGraph并利用GNN提取特征,解决了传统方法在用户行为序列有限时的准确性问题。模型首先将用户行为序列转化为图结构,然后通过多层GNN迭代学习物品的向量表示,最后通过注意力机制生成用户向量表征,用于预测用户可能的下一次交互。该模型在捕捉用户兴趣和物品转移模式上有优势。

#论文题目:【序列推荐】SR-GNN: Session-based Recommendation with Graph Neural Networks(SR-GNN:基于会话的图神经网络推荐)
#论文地址:https://arxiv.org/abs/1811.00855
#论文源码开源地址: https://github.com/CRIPAC-DIG/SR-GNN
#论文所属会议:AAAI 2019
#论文所属单位:中科院
在这里插入图片描述

1.导读

SR-GNN是中科院提出的一种基于会话序列建模的推荐系统,这里所谓的会话是指用户的交互过(每个会话表示一次用户行为和对应的服务,所以每个用户记录都会构建成一张图),这里说的会话序列应该是专门表示一个用户过往一段时间的交互序列。 基于会话的推荐是现在比较常用的一种推荐方式,比较常用的会话推荐包括 循环神经网络、马尔科夫链。但是这些常用的会话推荐方式有以下的两个缺点

  • 当一个会话中用户的行为数量十分有限时【就是比较少时】,这种方法较难捕获用户的行为表示。比如使用RNN神经网络进行会话方式的推荐建模时,如果前面时序的动作项较少,会导致最后一个输出产生推荐项时,推荐的结果并不会怎么准确。
  • 根据以往的工作发现,物品之前的转移模式在会话推荐中是十分重要的特征,但RNN和马尔科夫过程只对相邻的两个物品的单项转移向量进行 建模,而忽略了会话中其他的物品。【意思是RNN那种方式缺乏整体大局观,只构建了单项的转移向量,对信息的表达能力不够强】

首先在解读论文的时候,需要明白序列召回的输入和输出是什么,一般来说序列召回输入的是用户的行为序列(用户交互过的item id的列表),需要预测的是用户下一个时刻可能点击的top-k个item。那在实际操作的过程中,我们通常把用户的行为序列抽取成一个用户的表征向量,然后和Item的向量通过一些ANN的方法来进行快速的检索,从而筛选出和用户表征向量最相似的top-k个Item。我们下面介绍的SR-GNN就是完成了上述的两个流程

1.1 模型结构

这里我们可以看到,我们对输入的用户的行为序列提取出用户的向量表征进行了如下的处理:

  • 1.将用户的行为序列构造成 Session Graph
  • 2.我们通过GNN来对所得的 Session Graph进行特征提取,得到每一个Item的向量表征
  • 3.在经过GNN提取Session Graph之后,我们需要对所有的Item的向量表征进行融合,以此得到User的向量表征
    在得到了用户的向量表征之后,我们就可以按照序列召回的思路来进行模型训练/模型验证了,下面我们来探讨这三个点如何展开

1.2 构建Session Graph

这里首先需要根据用户的行为序列来进行构图,这里是针对每一条用户的行为序列都需要构建一张图,构图的方法也非常简单,我们这里将其视作是有向图,如果 v 2 v_2 v2 v 1 v_1 v1在用户的行为序列里面是相邻的,并且 v 2 v_2 v2 v 1 v_1 v1之后,则我们连出一条从 v 2 v_2 v2 v 1 v_1 v1的边,按照这个规则我们可以构建出一张图。(下面是论文中给的样例图)

这里为什么将每个用户的行为都包装成一个图,是因为如果将所有用户对商品的交互关系都放在一张图中,会导致对用户独特兴趣捕捉上的混乱,所以需要单独构建,而且这样构建的优势是后续训练时候,每一行样本都可以构建成一张图,还是比较方便的。

在完成构图之后,我们需要使用变量来存储这张图,这里用 A s A_s As来表示构图的结果,这个矩阵是一个 ( d , 2 d ) (d,2d) (d,2d)的矩阵 ,其分为一个 ( d , d ) (d,d) (d,d)的Outing矩阵和一个 ( d , d ) (d,d) (d,d)的Incoming矩阵对于Outing矩阵,直接去数节点向外伸出去的边的条数,如果节点向外伸出的节点数大于1,则进行归一化操作(例如节点 v 2 v_2 v2向外伸出了两个节点 v 3 , v 4 v_3,v_4 v3,v4,则节点 v 2 v_2 v2到节点 v 3 , v 4 v_3,v_4 v3,v4的值都为0.5)。Incoming矩阵同理

1.3 通过GNN学习Item的向量表征

这一部分我们主要关注如何从图中学习到Item的向量表征,这里设 v i t v_{i}^{t} vit表示在第t次GNN迭代后的item i的向量表征, A s , i ∈ R 1 × 2 n A_{s,i} \in R^{1 \times 2n} As,iR1×2n表示 A s A_{s} As矩阵中的第 i i i行,即代表着第 i i i个item的相关邻居信息。则我们这里通过公式(1)来对其邻居信息进行聚合,这里主要通过矩阵 A s , i A_{s,i} As,i和用户的序列 [ v 1 t − 1 , . . . , v n t − 1 ] T ∈ R n × d [v_{1}^{t-1},...,v_{n}^{t-1}]^{T} \in R^{n \times d} [v

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值