Session-based Recommendation with Graph Neural Networks
AAA I 2019
论文地址:https://arxiv.org/abs/1811.00855
源码地址:https://github.com/CRIPAC-DIG/SR-GNN
摘要
基于会话的推荐问题旨在基于匿名会话预测用户行为,以前的方法将会话建模为序列,并估计除项目表示之外的用户表示以提出建议
- 存在的不足:不能够获得准确的用户向量并忽略项目的复杂转换
因此,提出使用图神经网络的基于会话的推荐SR-GNN,将会话序列被建模为图形结构化数据,GNN 可以捕获项目的复杂转换,然后使用注意力网络将每个会话表示为全局偏好和该会话当前兴趣的组合
基本介绍
-
大多数现有的推荐系统都假设用户资料和过去的活动被不断记录。
-
然而,在许多服务中,用户标识可能是未知的,并且只有正在进行的会话期间的用户行为历史可用
-
因此在一个会话中对有限的行为进行建模并相应地生成推荐是非常重要的,但在这种情况下,依赖于充分的用户-项目交互的传统推荐方法在产生准确结果方面存在问题
-
相关的论文
- 基于马尔可夫链:在强独立假设下,过去分量的独立组合限制了预测精度
- 基于RNN:提出了一种循环神经网络方法,然后通过数据增强和考虑用户行为的时间变化来增强模型
- NARM:设计了一个全局和局部 RNN 推荐器来同时捕捉用户的顺序行为和主要目的
- STAMP:也通过使用简单的 MLP 网络和注意力网络来捕捉用户的一般兴趣和当前兴趣
-
以上研究存在的局限性:
- 在一个会话中没有足够的用户行为,这些方法难以估计用户表示,
- 会话大多是匿名的且数量众多,并且会话点击中涉及的用户行为通常是有限的。
- 因此很难从每个会话中准确估计每个用户的表示
- 项目转换的模式很重要,可以用作基于会话的推荐中的局部因素
- 但这些方法总是对连续项目之间的单向转换和忽略上下文之间的转换,即会话中的其他项目。
- 因此,这些方法经常忽略远距离项目之间的复杂转换。
- 在一个会话中没有足够的用户行为,这些方法难以估计用户表示,
-
为了克服以上局限性,提出SR-GNN,以探索项目之间的丰富转换并生成准确的项目潜在向量。
-
GNN被广泛应用于为自然语言处理和计算机视觉应用建模图结构依赖关系,如脚本事件预测、情景识别和图像分类
-
SR-GNN的工作流程
- 首先,所有会话序列都被建模为有向会话图,其中每个会话序列都可以视为一个子图
- 然后,每个会话图依次进行,通过门控图神经网络获得每个图中涉及的所有节点的潜在向量表示embedding(v1,v2,v4,v3)
- 之后,我们将每个会话表示为全局偏好和该会话中用户当前兴趣的组合,其中这些全局和局部会话嵌入向量都由节点的潜在向量组成。
- 根据embedding经过一个attention,得到session的embedding(分成全局sessionEmbedding和local session embedding,将最后一个item直接作为local embedding)
- 再将两个session embedding 聚合成session的总的 embedding
- 最后,对于每个会话,我们预测每个项目成为下一次点击的概率
- 将session总的embedding与节点的embedding相乘得到最终的结果,再进行筛选得分最高的几个输出
-
模型的贡献
- 将分离的会话序列建模为图结构化数据,并使用图神经网络来捕获复杂的项目转换
- 不依赖用户表示,而是使用会话embedding,它可以仅基于每个单独会话中涉及的项目的潜在向量来获得基于会话的推荐
领域相关工作
- 常规推荐方法
- 矩阵分解:基本目标是将用户-项目评分矩阵分解为两个低秩矩阵,每个矩阵代表用户或项目的潜在因素
- 缺点:用户偏好仅由一些积极的点击提供,不太适合基于会话的推荐
- 基于项目的邻域方法:项目相似性是根据同一会话中的共现来计算的
- 缺点:难以考虑项目的顺序,并且仅基于最后一次点击生成预测
- 基于马尔科夫链的顺序方法:将推荐生成视为一个顺序优化问题,采用马尔可夫决策过程 (MDP) 来解决问题
- 通过对用户的个性化概率转移矩阵进行分解
- 缺点:独立地组合了过去的组件。这种独立性假设太强,从而限制了预测的准确性。
- FPMC : 对每两次相邻点击之间的序列行为进行建模,并为每个序列提供更准确的预测
- 矩阵分解:基本目标是将用户-项目评分矩阵分解为两个低秩矩阵,每个矩阵代表用户或项目的潜在因素
- 基于深度学习的方法
- RNN:扩展到具有并行 RNN 的架构 ,该架构可以基于点击次数和特征对会话进行建模点击的项目
- RNN的一些相关变体应用于会话推荐
- 通过使用适当的数据增强技术并考虑用户行为的时间变化来提高循环模型的性能
- 将循环方法和基于邻域的方法结合在一起,以混合顺序模式和共现信号
- 将会话点击与项目描述和项目类别等内容特征相结合,通过使用 3 维卷积神经网络生成推荐
- A list-wise deep neural network: 对每个会话中有限的用户行为进行建模,并使用 list-wise 排名模型为每个会话生成推荐
- 具有编码器-解码器架构的神经注意力推荐机NARM:采用 RNN上的注意力机制来捕获用户的顺序行为特征和主要目的。
- 一种使用简单 MLP 网络和注意力网络的短期注意力优先模型 (STAMP) :以有效地捕捉用户的一般兴趣和当前兴趣。
- RNN的一些相关变体应用于会话推荐
- RNN:扩展到具有并行 RNN 的架构 ,该架构可以基于点击次数和特征对会话进行建模点击的项目
- 图神经网络相关发展
- 扩展word2vec,无监督算法 DeepWalk:旨在基于随机游走来学习图节点的表示
- 继 DeepWalk 之后,无监督网络embedding算法 LINE 和 node2vec
- 另外,CNN 和 RNN 也部署在图结构数据上,
- 如GCN:通过谱图卷积的局部近似来选择卷积架构,但只在无向图上实现
- 门控 GNN (Li et al. 2015) 使用门控循环单元并采用反向传播 (BPTT) 来计算梯度
方法论
-
公式中的符号意义
- V = { v 1 , v 2 , . . . , v m v_1, v_2, . . . , v_m v1,v2,...,vm } 表示由所有会话中涉及的所有唯一项组成的集合
- 匿名会话序列 s 可以表示为列表 s = [ v s , 1 , v s , 2 , . . . , v s , n v_{s,1}, v_{s,2}, ... , v_{s,n} vs,1,vs,2,...,vs,n ]
- 按时间戳排序,其中 v s , i ∈ V v_{s,i} ∈ V vs,i∈V 表示用户在会话 s 中点击的项目
- 基于会话的推荐的目标是预测下一次点击,即会话 s 的序列标签 v s , n + 1 v_{s,n+1} vs,n+1
- 对于会话 s,我们输出所有可能项目的概率 y ^ \hat y y^ ,其中向量 y ^ \hat y y^ 的元素值是相应项目的推荐分数
- y ^ \hat y y^ 具有top-K值的项目将成为推荐的候选项目。
-
构建会话图
- 每个会话序列 s 可以建模为有向图 G s = ( V s , E s ) G_s = (V_s, E_s) Gs=(Vs,Es)
- 每个节点代表一个项目 v s , i ∈ V v_{s,i} ∈ V vs,i∈V。
- 每条边 ( v s , i − 1 , v s , i ) ∈ E s (v_{s,i−1}, v_{s,i}) ∈ E_s (vs,i−1,vs,i)∈Es 意味着用户在会话 s 中的 v s , i − 1 v_{s,i−1} vs,i−1 之后点击了项目 v s , i v_{s,i} vs,i
- 由于多个项目可能重复出现在序列中,为每条边分配一个归一化的加权,计算为:边的出现除以该边
- 每个会话序列 s 可以建模为有向图 G s = ( V s , E s ) G_s = (V_s, E_s) Gs=(Vs,Es)