Session-based Recommendation with Graph Neural Networks & GNN
最近参加了实验室的组会分享了对图神经网络(GNN)的理解,并就发表于AAAI2019的一篇论文中提出的门控图神经网络在推荐系统中的应用进行了深入交流。特此将此次汇报内容整理如下:其中包含了一些相关博主的博客链接,在参考文献中均已注明出处,请有关人员核实并提出修改意见
1. “A Comprehensive Survey on Graph Neural Networks”
1.1 引言
这篇论文是从网络的角度对于图神经网络进行的综述性描述
与刘知远老师他们团队写的那篇图神经网络综述有所区别
本文从网络视角深入探讨了图神经网络的相关理论与应用并试图与现有综述性研究形成区别
注:改写后的文本仅做同义词替换和句式调整并未添加任何额外内容或解释

图1. 卷积算子计算示意图
但是已有诸多领域实证显示CNN、RNN等模型确实具有显著性能优势,并因此在将深度学习模型迁移到图数据这一领域时提出了多种基于图结构的神经网络模型。其主要动因在于将传统的2D卷积操作(如上图左侧所示)扩展至适用于非欧几里得结构的数据(如上图右侧所示)。值得注意的是,在图像处理中,默认情况下每个像素节点周围的邻居数量及连接方式通常由一个n×n的滤波器矩阵来定义。然而,在图像处理中,默认情况下每个像素节点选择其邻居的方式通常基于固定的大小和顺序,并且这种选择会带来一定的约束性。值得注意的是,在图形数据中这种约束性并不存在——相反地,在图形数据中的每个节点邻居的选择往往呈现出高度动态性和无序性特征。
1.2 背景知识及分类
1.2.1 GNN vs. Network Embedding
GNN是一种深度学习模型,在解决图相关任务时采用端到端的方式,并最大限度地提取深层次表示信息;而网络嵌入则主要是在低维向量空间中进行管理与操作,并同时保留网络的拓扑结构和节点内容信息;这些低维表示不仅可以用于多种 downstream任务(如图分类、节点聚类等),还体现了二阶段式的算法设计特点;根据图2所示([1]),目前已有系统性的工作对现有方法进行了全面梳理:左边是基于范畴化的分类方法总结(Categorization-based),右边则是从文献研究的角度进行了系统综述(Research-oriented)。目前主流的研究工作主要聚焦于无监督的学习框架:即矩阵分解、随机游走以及自编码器这三大类方法构成了当前研究的主要内容;其中基于深度学习的方法——生成对抗网络(Generative Adversarial Network)属于这一领域的主要代表技术


图2.网络嵌入和GNN的分类
1.2.2 GNN之GCN
GCN 最初应用于一篇题为《Spectral networks and locally connected networks on graphs》的论文中。该论文提出了一种基于谱图神经网络的模型。然而真正推动GCN走向学术研究领域的是2016年发表的一篇名为《semi-supervised classification with graph convolutional network》的论文,在该文中作者提出了基于图卷积神经网络进行图节点分类的方法(如图3所示)。在该GCN架构中通过聚合节点及其邻居的信息来表示当前节点从而实现节点级别的分类功能。进一步在此基础上作者设计了一个POOLING操作以实现图级分类(如图3所示)[2]。每个POOLING层的作用是根据节点向量生成一个更为粗化的子图(称为聚类图)使得节点能够表示更深层次的图特征最后经过一个softmax线性层输出每个图对应的标签类别。(参考文献[2]或上一篇博客[3])


图3.节点分类GCN和图分类GCN
1.2.3 GNN之GAN (GAT)
GAN和GCN在很多方面有相似之处,它们都主要致力于通过某种聚合函数结合图中相邻节点的信息来生成或表示节点特征。然而,在实现细节上存在显著差异:GAN(如GAT)主要通过端到端的神经网络模型(通常依赖于注意力机制)来识别对当前节点提取具有重要性的一条边,并赋予其更高的权重;而GCN则主要通过随机游走采样或者根据节点的度数机制来选择相邻节点进行融合。


图4. GCN和GAN(GAT)的节点选择机制的区别
1.2.4 GNN之GGNN
GGNN采用了门控型神经网络来处理图数据,在许多应用场景中具有显著优势。如图5所示,在GGNN架构中所采用的邻接矩阵呈现出显著的不同特征。其输入包括网络结构及其邻接矩阵,在这种设计下,默认情况下不仅沿显式连接传播信息,在反向连接方向上也会同步进行信息传递。相比于传统的GCN框架,在节点信息融合过程中,默认仅沿显式连接方向传播信息可能会导致某些节点信息被忽视。为此,在GGNN架构中,默认情况下不仅沿显式连接传播信息,在反向连接方向上也会同步进行信息传递。

图5.GGNN的输入矩阵和和门控机制
下文对门控机制的公式推理进行了详细说明,请参考如图6所示的内容。其中:
- 式(1)表示节点的初始状态:该D维向量具有明确的意义。
- 在式(2)中:具体而言,在该矩阵A中选取与节点v相关的边信息。
- 其中,在t-1时刻所有节点特征的拼接向量为:将各节点特征按时间序列顺序依次排列。
- 式(3)至(6)展示了GRU模型的信息传递过程:
- z_v^t用于控制遗忘程度
- r_v^t用于控制新信息引入的程度

图6.GGNN的公式推导
1.2.5 GNN之其他
GAE被广泛应用于无监督学习领域,并被视为一种重要的图自编码器技术。该模型通过编码器捕获节点间的潜在关系并生成低维特征表示,在解码过程中通常用于重构节点间的连接关系(即通常用于重建邻接矩阵)。研究发现GAE不仅能够处理仅具备节点信息的无属性图(即仅具备节点信息),还能有效处理包含节点特征信息的带属性图(即包含节点特征信息)。这种方法在多种实际应用场景中展现出良好的性能表现
2、STGNN 是一种时空域内融合的图神经网络模型,在分析复杂动态系统时展现出独特优势。该模型旨在从多维时空数据中自动提取高阶特征表示,并通过深度学习机制捕捉非线性空间-temporal关系。其核心创新点在于构建了一个以时间为维度的高度可扩展的空间-时序感知架构,在保证计算效率的同时实现了对多粒度空间-时序粒度信息的有效聚合与传播。
基于前述GNN的相关知识介绍,本文介绍一篇将GGNN应用于推荐系统的研究工作。该研究发表于AAAI2019,并聚焦于会话序列的个性化推荐方法。通过与当前主流的推荐算法进行对比实验,研究验证了该方法在序列推荐任务中的有效性及其创新性特点。
2. Session-based Recommendation with Graph Neural Networks
2.1 引言
2.1.1 任务描述
推荐系统是为了帮助用户解决信息过载的问题。
Session-based Recommendation意为短序列推荐或者是会话序列推荐,在一个特定的时间窗口内连续的行为被视为一个短序列;其核心关注点在于最后一个点击的商品在后续预测该商品时所起的影响程度
2.1.2 现有算法的局限性
当前已有诸多研究致力于解决这一问题,在现有研究的基础上本文主要从不同实验手段中筛选出若干具有代表性的算法,并特别关注与深度学习领域联系最为紧密的是将RNN模型应用于推荐系统的研究工作
当对话中的用户行为数量相对较少时,在使用RNN建模这类场景时会遇到一定的局限性
(2)在对话过程中items之间的转移模式对于对话推荐机制而言是不可或缺的关键因素;然而现有的基于RNN和马尔科夫链的方法仅专注于相邻items之间的单向转移关系建模,在一定程度上忽视了对话整体中的其他items信息。
为了解决上述两类局限性问题,我们提出了一种名为SR-GNN的推荐框架。该框架主要由四个主要模块构成,并专注于实现会话序列的个性化推荐。其中大部分内容来源于作者对相关博客[4]和[5]内容的学习与总结。
2.2 SR-GNN算法框架

图7.SR-GNN框架图
SR-GNN框架主要包含四个核心组件。第一部分是构建有向图的过程,在同一个对话中出现的items根据点击顺序被系统整合成一个有向图结构;随后将所有session序列整合到一起构建item图结构。这种有向图不仅反映了items之间的先后关系还体现了其相互关联性。第二部分是生成item向量表示的方法,在这种架构下所有的items都被赋予了独特的标识并能够在session有向图中实现区分性识别;接着采用GGNN算法对每个item进行嵌入运算从而获得其对应的向量表示结果;然而在一个session序列中同一items可能会多次出现为此论文作者提出了一种创新性的矩阵构造方法来解决这一问题。第三部分是关于session向量表示的设计机制;通过线性变换将当前session序列中的items偏好或兴趣特征转化为一种抽象的商品类别表征;作者分别利用两个线性层提取出session的局部特征信息以及全局语义信息;然后通过一次线性变换将这两者融合生成具有综合表征能力的session特征向量;第四部分是模型预测模块的设计与实现过程;该模块基于交叉熵损失函数对模型参数进行优化并通过softmax激活函数得到各分类项的概率分布结果从而实现最终的商品推荐目标
2.2.1 构图
每个session序列中的item都基于其点击时间被建模为有向图,在这种模型中,每个节点代表一个特定的item,并且每条边反映了用户的行为模式。这意味着不同session中出现的同一个item同样可以在这种结构中得到体现。然而,在一个有向图中同一个节点(即同一个item)可能会多次出现以反映其在不同session中的活动情况。为此提出了新的矩阵构建方法来解决这一问题,并在下文中给出代码示例

图8.重构矩阵代码示意图
通过查看图8中的代码可知,在SR-GNN构建其邻接矩阵时,并非采用简单地将存在连接的道路设为1、不存在连接的道路则设为0的方式来构造邻接矩阵;相反的研究者采用了利用节点出度特征平衡权重的方法。研究者在构建该有向图的过程中对序列中的每一条连接关系进行了一次检查:若某条路径已经在当前session的方向上存在,则其权重会相应增加1次;最终计算每条路径出发点处出度的数量作为分母,并将所有路径权重相加后除以各路径起点对应的出度数。为了更好地理解这一过程,请参考图9的具体说明。

图9.SR-GNN构图部分邻接矩阵实例
图9展示了包含v1、v2、v3、v2和v4等元素的item序列,并通过构建相应的session有向图如图9上所示的方式进行了表示。根据该session所生成的邻接矩阵如图9下所示的信息进行分析,在计算过程中我们采用的方法是基于 session 节点间的连接关系进行定义。其中,在item序列中节点2出现了两次,则其出度值为 2;因此,在构建相应的邻接矩阵时,在对应位置处将节点 2 的出度矩阵与入度矩阵赋值为 1/ ₂。
2.2.2 item向量表示
SR-GNN中的向量表示模块主要基于GGNN实现。该模块其训练机制与前述方法一致,在数据输入方面则采用了作者自创的构造方法进行处理。

大致的训练过程是:
(1)我们从相邻节点中获取了潜在向量,并将它们用作图神经网络的输入。(初始向量为随机初始化的)。 (2)遗忘门与重置门负责决定是保留还是删除某些信息。(3)通过前一时刻的状态、当前的状态以及重置门生成候选状态。(4)每个节点的状态最终由前一时刻的状态与候选状态相结合构成。
2.2.3 session向量表示
在获取每一个item对应的向量后, 通过将这些item的向量整合成一个session的表示来实现基于会话的推荐系统. 以往的研究通常假设每个会话都有其独特的潜在用户特征, 但本文并未遵循这一假设, 而是通过现有的数据推导出相应的表示.
Session向量的获取分为两部分:局部表示与全局表示。其中局部表示具体而言,则是基于一个session中最后一次点击项的item向量进行表征描述;其数学表达式可写作:S_l = v_n 。而全局表示则通过注意力机制进行计算得到。

其中 q∈ R^d, W₁ 和 W₂ 分别表示两个可训练矩阵。全局向量则通过对其所对应的所有 item 向量进行加权求和的方式生成。在 session 序列预测任务中,在下一次 item 点击行为上的 session 向量预测过程通过融合全局与局部特征来实现。具体而言,
S_h = W₃ S_l; \quad S_g
2.2.4 预测模块
最后,通过如公示所示的交叉熵损失函数来训练模型。

其中


2.3 数据集
本文采用了两个数据集作为研究基础:Yoochoose源自RecSys challenge 2015,并包含了用户的点击序列;而Diginitica源自CIKM Cup 2016,则仅利用其交易相关的数据进行分析。为了保证对比的公平性,在实验过程中研究者对原始数据进行了预处理工作:去除了长度仅为1的会话记录以及出现频率低于5的项,并最终构建了如表1所示的数据集规模结构

2.3 对比实验
基于点击率的个性化排序算法(传统方法):在训练集中选取点击率最高的TopN个项目,在用户会话序列中选择表现最佳的TopN项。
Item-KNN作为一种协同过滤技术,在推荐系统中被广泛应用。该算法通过计算已点击商品与目标商品之间的余弦相似度来确定最佳匹配。
BPR-MF:通过优化一个pairwise ranking目标函数进行item推荐(贝叶斯)
FPMC:基于马尔科夫链的序列预测问题
GRU4REC:这是一个典型的推荐系统基准模型,在该领域具有重要的研究意义,并通过结合RNN架构与注意力机制来实现对用户的个性化内容推荐功能
STAMP:获取当前session中用户的一般兴趣和最后一次点击的当前兴趣。
2.4 实验结果
相较于多种基准方法而言,在P@20和MRR@20指标下展现了最佳水平的结果。具体而言,在实验设置中,默认使用Yoochoose 1/64数据集仅包含其会话中最早选取的1/64条记录;而Yoochoose 1/4则仅采用会话中最靠近当前时间戳的1/4条记录作为训练数据。研究结果表明,在这两种不同的策略下,该模型通过在两种不同的策略下展现出了更有效的特征提取能力。

3. 总结
以下是对图神经网络(GNN)的基本概述以及基于session序列的推荐机制(SR-GNN)的简要综述。如需获取更多细节,请参阅列出的研究论文及其参考文献。
参考文献
[1] <>.
[2] Ying Z, You J, Morris C et al. A hierarchical graph-based learning framework incorporating differentiable pooling mechanisms for effective network representation[C]//Advances in Neural Information Processing Systems. 2018: 4800-4810.
[3] <>.
[4] <>.
[5] <>.
