何进成, 王 浩, 刘其刚, 孙 刚
(阜阳师范大学计算机与信息工程学院,安徽 阜阳 236037)
推荐系统已广泛应用于社交媒体、在线购物和搜索引擎等领域,是缓解信息过载、提升用户体验的重要工具。协同过滤(Collaborative Filtering,CF)是一种常用的推荐算法[1],通过对用户和项目的历史交互进行建模,预测用户未来可能的交互。随着推荐算法的不断进步,通过对用户和项目的交互进行二分图建模,He等人[2]提出的LightGCN模型简化了NGCF[3]的设计,只包含GCN中用于协同过滤最基本的组件:邻域聚集。但负采样工作在很大程度上尚未被探索,同时堆叠多层的消息传递会阻碍GCN模型在协同过滤任务上的收敛。为了解决上述问题,提出了SNGCN模型,改进了LightGCN模型显式消息传递和负采样的过程。具体来说,为以下两个方面:第一,不执行显式的消息传递,通过约束损失逼近多层图卷积的极限,达到近似收敛的状态,使模型得到简化。第二,通过正例融合和样本融合的策略合成硬负样本。在数据集上的实验结果表明,以上改进对LightGCN模型的推荐性能有所提升。其Recall和NDCG指标均比对比算法有所提高。
CF建模的核心是基于用户的行为数据挖掘用户对项目的偏好,用户的数据包含用户集U={u},项目集I={i}及交互集Y={yui}。通过交互数据预测用户u与项目i未来产生交互的可能性[4]。MF[5]是将用户和项目的ID作为嵌入向量,如NCF模型即采用这种思想,这种方式将每个用户-项目对视为孤立的数据,而没有考虑它们在嵌入函数中的关系。
负采样(Negative Sampling)是一种解决推荐系统中负样本数量过多问题的方法。现有的负采样方法大致分为以下四类:一,静态负采样[6],该方法中应用最广泛的是随机负采样,随机从负例候选集选择样本作为负样本。二,硬负采样通过当前推荐器自适应地选择最强的负候选项,这些负例一般为预测得分更高的负例,对改进模型更有利。三,基于GAN负采样[7]是一种基于生成对抗网络的对抗性采样器。四,基于图负采样,结合数据在图上的结构进行采样。Huang等人[8]提出的负采样策略,通过合成硬负样本,使用合成的硬负样本对推荐模型进行训练。
由于用户的交互数据可以建模为用户-项目二分图, Wang等人[3]提出的NGCF模型,在图上传播嵌入信息来挖掘用户-项目图的结构,通过特征变换、邻域聚集和非线性激活来细化嵌入信息,从而将协同信息以显式的方式注入到嵌入过程中,利用多级邻域信息,组合不同层上的表示。但该设计直接继承自GCN的思想,使用信息传递来聚集邻域信息,层上的消息传递定义为:
由于该设计较为繁重复杂,He等人在NGCF模型上进行消融实验,验证了继承自GCN的特征变换和非线性激活模块对模型未起明显作用,去除这两个模块对模型的准确性会有显著提高,从而提出LightGCN模型,该模型只包含GCN中最基本的邻域聚集组件,只保留用户和项目ID作为嵌入,此时,消息传递层可以表示为:
LightGCN去除了节点上的自连接,使用每层传播的嵌入加权和作为最终的输出表示,用户和项目的消息传递可重写为如下形式:
(3)
(4)
将介绍SNGCN模型的整体结构,如图1所示。通过正例混合将正向样本和负向样本混合生成增强的负向样本,再通过样本混合生成硬负样本。SNGCN对输入的用户和项目不执行显式的消息传递,再将用户、项目和生成的硬负样本用于模型训练,接下来将依次介绍模型中的组成部分。
图1 SNGCN模型结构
该负采样策略包含正例混合和样本混合两个步骤。将正向样本的信息注入到负向样本中,以污染原始的负向样本,生成增强的负向样本,再将增强的负向样本通过样本混合生成硬负样本。通过该负采样策略生成的硬负样本与原始数据中的正样本信息更加相似,与普通的负样本差距更大,使用生成的硬负样本训练模型,进一步提升模型对易误判样本的识别能力。
2.1.1 正例混合
在正例混合过程中,首先选择m个负向样本形成负向候选集M,其中M的数值小于数据集中的项目数,这些负向样本构成了数量为M×(L+1)的负向候选嵌入集,其中L源自GNN的思想,对于L层GNN中的每个项目, 其嵌入共为L+1。为了提高负向候选嵌入集的质量,在此引入了数据增强的理念,将正向样本注入到负向嵌入集E中,正例混合的操作形式为:
2.1.2 样本混合
理论上,LightGCN模型消息传递的层数越多可以捕获更多的高阶信息,但根据LightGCN的实验结果来看,其性能从第三层开始并没有变的更好。我们考虑是受到消息传递过度平滑问题的影响,执行多层消息传递时,将使得有相同度的节点的嵌入表现相同。根据相关理论[9],可以推导出无限次的消息传递后极限为:
其中,m和n分别表示图中边和节点的总数。由于公式(7)所表示的消息传递无穷次幂存在极限,考虑跳过无限层消息传递仍能近似达到收敛的效果。当执行多层消息传递后,收敛的条件表示为:
eu表示用户u的向量表示,由公式(8)可知,最后两层的用户向量表示保持不变,由邻域聚集生成的用户向量等于用户向量本身。此时,公式(3)可以被重写为:
其中du表示节点u的原始度,N(u)表示用户u的邻居节点集,将公式(9)进行简化后,得到其收敛状态为如下公式(10),当某个节点满足公式(10),则达到消息传递的收敛效果。
为了不执行显式的消息传递,直接近似达到收敛状态,我们可以最小化公式(10)两边的差,转化为向量的形式,将嵌入归一化为单位向量,问题转化为最大化两项的点积。为了便于在学习过程中进行优化,我们可以合并sigmoid激活函数和负对数似然,从而得到以下损失函数:
其中σ即为Sigmoid函数,LSC为约束损失,αu,i为约束系数。αu,i作为损失函数的约束系数,其值的大小与du和di的数值成反比,具体而言,当一个项目与多个用户交互,或一个用户与多个项目交互,此时项目或用户的该交互行为的影响就会被削弱,通过该系数给用户-项目图中的不同的边分配不同的权重,从而更好从用户-项目图中学习节点的表示。
但是,在训练过程中,LSC容易产生过平滑问题,使得用户和项目收敛到相似的嵌入向量。基于GCN的CF的模型中在处理过平滑问题的一般做法是固定消息传递的层数,这里可以通过在训练时执行负采样策略,从而缓解过平滑,而这里的负样本即为上述2.1节中介绍的负采样策略。考虑到负采样,则损失函数更新为以下形式:
其中,N+表示正样本,N-表示通过负采样得到的负样本,这里有效捕获了用户-项目图的高阶协同信息,并缓解了过平滑问题。
在GCN模型中,通常使用BPR损失或BCE损失来进行优化,这里使用BCE损失作为优化目标,与LS的形式类似:
其中,N+表示正样本,N-表示通过负采样得到的负样本。综合上述内容,故SNGCN的优化目标为:
L=LB+λLS
(14)
其中,λ是控制约束损失重要性的超参数。
将SNGCN在不同数据集上与常见的推荐模型进行对比,以验证SNGCN性能的优势,接下来通过调整模型中的相关参数,研究参数值的变化对模型性能的影响,再通过消融实验进行分析模型的不同模块对模型的影响。
3.1.1 数据集介绍
为了评估SNGCN的有效性,在四个公开数据集(包括Gowalla,Yelp2018,Amazon-Books,Movielens-1M)上进行实验,数据集中包含用户、项目及交互信息,表1记录了所有数据集的详细信息。
3.1.2 评价指标
为了与对比基线进行性能比较,选择推荐模型中常用的评价指标Recall@N和NDCG@N进行评价(N默认情况下为20)。
表1 数据集统计
3.1.3 对比基线:
为了验证SNGCN模型的有效性,选择了如下常见的推荐模型作为对比基线。
(1)MF:作者介绍了如何使用矩阵分解技术来解决推荐问题。
(2)NGCF:通过在用户-项目二分图上传播嵌入信息来挖掘用户和项目的高阶信息,模型将协同信息以显式的方式注入到嵌入过程中。
(3)DGCF:对用户-项目关系图根据用户意图更细粒度建模,引入了解耦的思想,通过对用户-项目交互的意图分布建模,从而学习到用户和项目之间的关系。
(4)LR-GCCF:将用户-项目交互行为建模为一个有向加权图,利用GCN学习用户和项目的嵌入表示,并利用这些表示计算用户和项目之间的相似度。
(5)LightGCN:在NGCF模型的基础上进行消融实验,验证了去除特征变换和非线性激活对推荐性能有一定的提升。
在表2中展示了SNGCN与所有对比模型的性能,SNGCN在四个数据集上其Recall@20和NDCG@20均表现出良好的性能,从数据中可以看出,其性能比对比基线中经典模型DGCF在性能上也有所提升。其性能与LightGCN相比较,可看出在Amazon-books上提升较大,总结了以下两点原因:第一,在用户-项目图中学习节点的最终表示,并引入用户-项目图边的权重αu,i,具体而言,对于不同的边,其根据交互情况给予不同的关注程度,这将更有利于更好地学习用户-项目关系。第二,改进的采样策略,相较于随机采样,更能捕获高质量负样本,使用高质量的负样本训练模型,从而提升模型的推荐效果。
表2 模型性能对比
主要分析采样范围L和候选集M的大小这两个参数对模型推荐性能的影响,下面将详细介绍通过设置不同的采样范围L和候选集M在数据集上的实验结果。
3.3.1 采样范围L的影响
(a) Gowalla (b) Movielens-1M
为了研究负采样正例混合步骤中,负向样本采样邻居范围L对实验结果的影响,将L依次设置为1,2,3在数据集上进行实验并绘制成如图2所示的变化趋势图,上图2(a)为在Gowalla数据集上的实验结果,观察可知,L从1递增到3时,可以提升推荐性能,这在逻辑上是合理的,因为当考虑更高阶的邻居范围时,可以将更多的负向样本采样到模型中,合成的硬负样本在模型训练时更有代表性。此时,我们考虑到继续将采样范围扩到到4层的效果,但从3层递增到4层时,模型性能没有明显提升,并且时间消耗变得较大,故在实际推荐时需综合考虑,将采样范围L设置为3较为合适。图2(b)为在Movielens-1M上的实验结果,与Gowalla上的结果类似,在L为1到3范围,增加负向样本的采样范围同样可以提高推荐性能。
3.3.2 候选集M的影响
为了研究采样时候选集M对实验结果的影响,选择Gowalla和Movielens-1M数据集,并将候选集M分别设置为8,16,32,64来观察实验结果,并在图3中对Gowalla上实验指标Recall@20和NDCG@20进行直观展示。观察可知:增加候选集的数量,可以提高推荐的准确率,在M=64时,取得最佳性能。分析可知,当采样的候选集较小时,采样到的样本不具有很强的代表性,其相关评价指标较低,提高候选集数量,可以充分挖掘数据集中有效信息,从而提高推荐性能。
(a) Recall(b) NDCG
从结果中得到的性能变化趋势,对调整模型参数有重要意义,故在本模型的其他实验中,我们将该参数设置为64,以取得更好地推荐性能。在Movielens-1M上同样当M为64时取得更好的效果。
将通过消融实验分析基于SNGCN改进不同模块对模型的影响,与文中SNGCN对比的有三个实验分别为:(1)SNGCN-s:在SNGCN的基础上使用LightGCN原始的显式消息传递策略,保留负采样部分。(2)SNGCN-n:在SNGCN的基础上去除负采样,使用LightGCN中的采样策略。(3)λ=0:去除SNGCN损失函数中LS,只保留BCE损失。在Gowalla和Movielens-1M数据集上的具体实验结果如下。
实验结果如图4所示,从实验结果可知,SNGCN-s会降低模型的推荐性能,说明改变LightGCN原始的显式消息传递形式有助于提升推荐性能,从Movielens-1M 数据集的Recall@20和NDCG@20两项指标来看,SNGCN与SNGCN-s有较大差距,表明SNGCN对LightGCN的不完善之处有一定的改进。
(a) Gowalla
(b) Movielens-1M
SNGCN-n是在SNGCN的基础上去除了负采样,说明相对于随机采样策略,文中的合成硬负样本的方式获取的负样本质量更高,从而对模型的性能有提升作用。λ=0表示去除了SNGCN中对用户-项目图学习的部分,只保留BCE损失,从Gowalla和Movielens-1M两个数据集的Recall@20和NDCG@20两项指标来看,去除对用户-项目图的学习对SNGCN推荐性能的削弱较大。
当前,图神经网络是推荐算法的一个重要研究方向,基于图神经网络提出SNGCN推荐模型,使用正例混合和样本混合两个步骤来合成硬负样本作为负采样策略,并跳过LightGCN的显式消息传递,通过约束损失逼近无限层图卷积的极限,大量的实验结果表明,提出的SNGCN模型的推荐性能上比LightGCN及其他常见的基于图神经网络模型均有提升。关注到最近的一些研究方向,如通过子图和社交网络图等辅助信息来完善推荐算法,在接下来的工作中,将继续研究图神经网络在推荐算法方面的应用。