11.Session-based Recommendation with Graph Neural Networks论文详解

一、前言

在某些序列推荐系统中,一个用户-项目交互序列包括多个子序列(也称为会话)。在这种情况下,除了当前子序列中先前的交互作用外,历史子序列还可能影响当前子序列中预测的下一个用户-项目交互作用。

基于会话的推荐问题旨在基于会话预测用户的行为,以前的相关方法将会话建模为序列,并通过对用户表示进行学习来完成推荐。这些方法虽然取得了令人满意的结果,但它们不足以在会话中获得准确的用户表示,并忽略了复杂的物品表示转换。为了获得准确的物品嵌入和考虑物品表示的复杂转换,本文提出了一种基于会话的GNN网络模型。在 SR-GNN 中,会话序列被建模成图结构数据,基于会话图,GNN可以捕获复杂的物品间的复杂联系。具体来说通过一个全局和局部的注意力网络完成任务。

Session-based Recommendation意为短序列推荐,或者是会话序列推荐。短序列推荐的意思是在一个时间窗口内连续的点击行为,比如,一位用户在登陆淘宝的这段时间里连续点击了10个商品,那么这10个商品就是一个短序列,着重点出了序列中最后一次点击的商品对于接下来需要预测商品的重要性。

论文链接:https://export.arxiv.org/pdf/1811.00855
github:https://github.com/CRIPAC-DIG/SR-GNN

二、现有算法的局限性

目前有很多研究都在解决这个问题,本文也是从不同的实验方法中选择了几类代表性的算法(其中与深度学习最相关的模型是将RNN引入到推荐任务中)。在这些方法中存在的局限有:

(1)当一个会话中的用户行为数量十分有限时,RNN就很难捕获用户的行为表示。因为使用RNN建模时,如果前面时序的动作项较少,最后一个输出产生推荐项时的准确性就比较低。

(2)会话过程中item之间的转移模式在会话推荐中是十分重要的,但是RNN和马尔科夫过程只对相邻物品的单向转移进行了建模,而忽略了会话中的其他item信息。

本文针对以上的两点局限性设计了名为SR-GNN的推荐框架,用于会话序列推荐。SR-GNN框架主要包括四个部分,下面将从总体框架和每一个部分进行介绍。

三、SR-GNN模型架构

本文提出的 SR-GNN 主要用于探究物品之间复杂联系和生成准确的物品特征嵌入。对于基于会话的推荐,SR-GNN 首先从历史会话序列构造有向图。基于会话图,GNN 能够捕获物品的转换,并相应地生成准确的项目嵌入向量,这是传统顺序方法如基于 mc 和基于 RNN 的方法难以实现的。基于精确的物品嵌入向量,SR-GNN 构建了更可靠的会话表示,可以推断下一个点击物品的概率。

SR-GNN 的框架如图所示
11.Session-based Recommendation with Graph Neural Networks论文详解_第1张图片
SR-GNN框架主要由四个部分构成。第一部分是构图。出现在一个会话中的item根据点击的先后顺序被构建成有向图,然后将所有的session序列建模到一起形成item图。这个有向图体现了item的先后顺序关系。第二部分是item向量表示。所有的item都是有唯一标识的,它们在session有向图中是能够彼此区别的。然后使用GGNN对每个item进行Embedding,然后得到每个item的向量表示。但是在一个序列中,一个item可能重复出现多次,为此论文作者提出了一种新的矩阵构造方式来解决这个问题。第三个部分是session向量表示。Session向量可以作为当前会话序列中所有item的偏好或者兴趣,可以理解为一种商品的类别。作者通过两个线性层分别得到session的局部表示和全局表示,然后通过一个线性变换将局部表示和全局表示整合到一起,形成session的表示。第四个部分是预测模块,它使用交叉熵损失函数训练模型,对向量进行softmax操作,得到预测结果。

       (1)最左侧是我们应该输入的数据,每一行表示一个用户进行 物品点击的记录【每个会话表示了不止一行?但是感觉并不合理,但是如果只是一个用户的信息,好像又缺少什么一样】,v表示物品,对于每一行数据可以表示为一个会话 ,我们的目的是根据这样的用户点击序列,来预测用户下一个要点击的物品。

       (2)基于每个session去构建一个子图,注意是每个用户的历史情况都会构建成一个图。

       (3)使用GNN网络对图进行信息的抽取挖掘,训练好GNN后,我们可以获取session图中每个点击物品的embedding_1向量化表示 [v1,v2,...,vn],其中每个Vi都是一个向量,对应下图红框中的结果。

       (4)对于获得的每个物品的 向量化表示,实际上只有最后一个时刻物品是比较重要的【最后一次最能体现当前时间用户的兴趣】,我们单独将其取出为s1,而其他的信息,我们也会加以利用,但是是使用一种注意力分配的机制,添加了attention策略,根据前面几个物品跟最后一次点击的相似度,来进行注意力权值的附加,然后将这些最后一次之间的信息附加权重后加在一起,成为向量sg。

       (5)最后一步是先对s1和sg进行横向拼接,并进行线性变换,得到结果sh,最后将sh与每个物品的embedding进行内积计算【这里的embedding和经过GNN网络获取到的embedding_1是有所不同的,是每个物品初始的embedding,在经过GNN处理前已经决定了,是GNN网络的初始输入】,并通过softmax包装获取得到对应不同物品的点击概率,根据概率的大小绝对最后的推荐物品。

3.1 构图(Constructing Session Graphs)

首先说下把 用户的 的历史交互记录,转换成一个有向图,比如用户的点击序列是 v1->v2->v3->v2->v4,则其对应的图可以转化成如下的形式。这里为什么将每个用户的行为都包装成一个图,是因为如果将所有用户对商品的交互关系都放在一张图中,会导致对用户独特兴趣捕捉上的混乱,所以需要单独构建,而且这样构建的优势是后续训练时候,每一行样本都可以构建成一张图,还是比较方便的。

11.Session-based Recommendation with Graph Neural Networks论文详解_第2张图片

每一个session序列中的item都根据它点击时间被建模成有向图,其中每个节点表示一个item,每条边表示用户的点击行为。这样,出现在不同session中的item都可以被建模成有向图。当然,正如前面所讲,在一个有向图中,同一个节点(item)是可能重复出现的。为此,作者提出了一种新的矩阵构造方式来解决这个问题,如下代码所示:

11.Session-based Recommendation with Graph Neural Networks论文详解_第3张图片
在实际实现中,我使用邻接矩阵进行图的存储,为每个图都构建一个出度矩阵、入度矩阵,并为了便于输入到神经网络,对度值进行了归一化处理,如下是对 v1->v2->v3->v2->v4序列的邻接矩阵存储形式,左边矩阵表示出度,右边矩阵表示入度,同时构建出度矩阵和入度矩阵的原因是为了让模型可以学到 丰富的双向关系,而不是简单的单向转移关系。

11.Session-based Recommendation with Graph Neural Networks论文详解_第4张图片

3.2 item向量表示(Learning Item Embeddings on Session Graphs)

通过上面构造图的方法可知会话图的几种特点:有向,边加权,多个会话序列子图。此篇文章中作者所采用的 GNN 方法主要是基于门控图神经网络实现的,实现过程如下:

11.Session-based Recommendation with Graph Neural Networks论文详解_第5张图片
使用GNN针对邻接矩阵 来学习 物品的嵌入向量的过程【其实就是传播过程中,达到一次收敛的过程,协调收敛】, 我们这里使用GNN网络是 门控图神经网络GGS-NN(Gated GNN),通过将所有的会话图送入到GGNN网络,就能够得到所有节点的嵌入向量,对于从GGNN通过GRU得到嵌入向量的过程,可以对照上面的公式,参考下面的描述,这里也是对GRU不断从前到后不断到收敛的过程,相当于传播过程,那之后的 生成会话嵌入向量和推荐决策 就对应于GNN中的输出过程。

11.Session-based Recommendation with Graph Neural Networks论文详解_第6张图片

3.3 session向量表示(Generating Session Embeddings)

在得到每个item向量之后,利用这些item向量形成session向量用于基于会话的推荐。之前的研究都是假设每个session都会有一个不同的潜在用户表示,但是本文并没有基于这种假设,而是从已有的向量中获得这个向量。

对于整体的图,我们分为局部向量和全局向量进行考虑,从局部和全局角度进行表达来获得更有效的 图向量表达,其中,定义局部嵌入向量为会话中最后点击的物品s1=us,定义全局变量是结合所有节点嵌入向量 添加不同注意力优先级后,得到的向量表示。 这里使用了注意力机制,首先得到不同结点的注意力权重ai,之后对不同节点添加不同的注意力获取得到全局的向量嵌入结果,其中W1和W2都是注意力机制中可训练的权重,之后使将会话的局部嵌入向量和全局嵌入向量相结合得到融合的嵌入向量 sh=W3【s1,sg】,这里也是有权重的融合。
11.Session-based Recommendation with Graph Neural Networks论文详解_第7张图片
在这里插入图片描述

3.4 预测模块(Making Recommendation and Model Training)
11.Session-based Recommendation with Graph Neural Networks论文详解_第8张图片

四、数据集

论文使用了两个数据集,Yoochoose是取自RecSys challenge 2015, 它包含了一串用户点击;Diginitica 取自CIKM Cup 2016只使用了它的transactional数据。为了公平比较,作者对数据进行了清洗,过滤掉了长度为1的session和出现次数小于5的item,这样形成了如表1所示的数据集规模。
11.Session-based Recommendation with Graph Neural Networks论文详解_第9张图片

五、对比实验和实验结果

5.1 对比实验

POP-SPOP(传统方法):推荐训练集中的TopN(点击率)和推荐session序列中的TopN。

Item-KNN:推荐与当前点击的item最相近的其他item,相似性的度量方式是cosine相似度。

BPR-MF:通过优化一个pairwise ranking目标函数进行item推荐(贝叶斯)

FPMC:基于马尔科夫链的序列预测问题

GRU4REC:这是推荐任务中的典型baseline,引入了RNN和attention 机制来捕获用户的主要目的。

STAMP:获取当前session中用户的一般兴趣和最后一次点击的当前兴趣。

5.2 实验结果

与各种baseline方法相比,SR-GNN在P@20和MRR@20可以达到目前最好的效果。其中Yoochoose 1/64是只选取Yoochoose中session出现时间最近的1/64个session作为训练集,Yoochoose 1/4是只选取Yoochoose中session出现时间最近的1/4作为训练集。实验结果表明,在这两种不同处理中,SR-GNN可以更好的学习到不同的出现时间的session特征。

11.Session-based Recommendation with Graph Neural Networks论文详解_第10张图片
5.3 其他实验结果

11.Session-based Recommendation with Graph Neural Networks论文详解_第11张图片
11.Session-based Recommendation with Graph Neural Networks论文详解_第12张图片
11.Session-based Recommendation with Graph Neural Networks论文详解_第13张图片

你可能感兴趣的:(推荐系统,推荐系统,SR-GNN,session,图神经网络,GGNN)