联合对比学习的图神经网络会话推荐

2024-03-08 03:31孙英娟邢晶淇车志敏
长春师范大学学报 2024年2期
关键词:会话注意力向量

刘 乾,孙英娟,邢晶淇,车志敏

(1.长春师范大学计算机科学与技术学院,吉林 长春 130032; 2.长春市第一○三中学,吉林 长春 130041)

0 引言

基于会话的推荐是现代推荐系统的一个关键方面,它旨在通过关注用户当前的意图来预测用户的下一个兴趣。由于用户通过在各种平台(如电子商务网站[1]、音乐流媒体服务[2]和社交媒体[3])上的互动产生的数据越来越多,基于会话的推荐已成为一个重要的研究领域。

大多数现有的会话推荐研究都将会话视为严格有序的序列[4]。在会话推荐研究之初,已经提出了许多基于循环神经网络(RNN)的模型,例如,GRU4Rec[5]通过对用户交互的序列信息建模来捕获用户潜在的兴趣。近年来,研究者提出了许多基于图神经网络(GNN)的会话推荐模型[6-7],将会话建模为一个有向图,并着重于用节点的成对关系对相邻交互建模。这些算法有效地捕获了序列信息,通过交叉熵损失函数来优化参数,从而取得很大的性能提升。

然而这些算法忽略了项目嵌入空间的优化。图注意力机制在节点信息聚合上有很大优势,通过在每个源节点和目标节点之间分配权重,使节点能够在聚合来自本地邻居的消息时决定哪个邻居节点更重要,而不是以相同的权重聚合来自所有邻居的信息。对比学习通常作为优化项目表示的一种有效方法,其核心是通过计算样本表示之间的距离,拉近正样本,拉远负样本。本文使用图注意力神经网络作为基础模型,引入一种自我对比学习[8]辅助训练,改进项目嵌入空间,在项目嵌入空间中实现了更好的均匀性,从而提高了模型性能。

1 本文算法

首先将会话数据构建成有向图数据,再在相邻节点间使用注意力机制聚合数据,然后生成会话嵌入,根据会话嵌入和候选项目生成推荐,同时使用对比学习辅助训练。算法流程如图1所示。

图1 算法流程

1.1 构造会话图

每个会话序列S可以建模为一个有向图GS=(VS,ES)。其中,GS表示所有会话序列有向图的集合,VS表示图中节点集合,ES表示边的集合,Vi,S表示会话S中的第i个节点(物品),(Vi-1,S,Vi,S)∈ES在图上显示为Vi-1,S指向Vi,S的有向边,(Vi-1,S,Vi,S)对应边的值为1,两物品之间无交互记为0。

1.2 在图上学习项目嵌入

Vi表示源节点,Vj表示Vi的邻居节点,邻居信息的聚合如下所示:

首先根据Vi和Vj求得权重系数αij。

(1)

其中,LR(·)表示激活函数LeakRelu。q1∈Rd。Vi,Vj∈Rd。⊙表示哈达玛乘积,指对应矩阵元素相乘。

然后对权重系数使用Softmax进行归一化。

(2)

其中,Ni表示节点i的邻居结点的集合。

最后根据归一化的权重系数聚合邻居信息。

(3)

对节点的出度邻居和入度邻居使用相同的上述操作,最后合并出度和入度信息。

(4)

1.3 图信息更新

将更新后的图的节点和原来的节点做一个合并。

Vl=LR(W1[Vl-1‖Vl]),

(5)

其中,Vl-1,Vl∈Rd,Vl-1表示l-1层图节点,Vl表示l层图节点,本算法只进行一层图更新。‖表示连接操作。W1∈Rd×2d,将拼接后的向量转换到d维。

1.4 生成会话嵌入

将得到的局部节点嵌入输入到软注意力机制中,用来捕获全局会话嵌入,使用会话中最后一个项目嵌入作为查询向量,注意力权重计算公式如下:

(6)

(7)

其中,q2∈Rd,W2,W3∈Rd×d是项目嵌入向量的参数矩阵,c∈Rd是偏置向量。

将会话嵌入和最后一个项目的嵌入合并:

S=W4[Vn,l‖Sg],

(8)

其中,W4∈Rd×2d,将拼接后的向量转换到d维。

1.5 生成推荐

(9)

损失函数定义为预测结果的交叉熵:

(10)

其中,yi为真值项的one-hot向量。

1.6 联合对比学习

LIU等[8]首先提出了自我对比学习,是一种通过引入额外的损失函数来提高项目嵌入空间均匀性的直接解决方案,损失函数通过直接惩罚同一个批次内项目嵌入的接近性实现,该方案基于假设每个物品的嵌入应该远离所有其他物品的嵌入。

将自我对比学习作为额外的损失函数:

(11)

其中,xi表示正样本,是一个批次的任一项目嵌入;xj表示负样本,是一个批次内的全部项目;n表示一个批次内所有项目的总数。

(12)

其中,sim表示余弦相似性,τ表示温度系数。

最后推荐损失和对比学习损失共同产生效果,δ是对比学习损失函数的权重系数,作为可学习的参数。

(13)

2 实验与结果分析

2.1 数据集

使用两个基准数据集Diginetica和Yoochoose。其中,Diginetica来自2016年CIKM Cup挑战赛的电子商务数据集;Yoochoose来自2015年RecSys挑战赛的电子商务数据集。对两个数据集进行预处理。首先过滤掉长度为1的会话和出现次数少于5次的项目。然后对于Diginetica将最新一周的会话作为测试数据,剩余的历史数据用于训练。对于Yoochoose将最新一天的会话作为测试数据,剩余的历史数据用于训练,由于Yoochoose数据集比较大,取训练集中最新数据的1/64作为Yoochoose1/64数据集。最后对两个数据集进行数据扩充,对于一个会话S=(v1,v2,…,vn),通过序列分裂预处理生成序列和相应的标签,即([v1],v2), ([v1,v2],v3),…,([v1,v2,…,vn-1],vn)。数据集经过预处理后的统计结果如表1所示。

表1 数据集信息

2.2 评价指标

采用两个广泛使用的基于排名的指标:HR@K和MRR@K。HR@K是衡量召回率的指标,表示推荐列表能正确推荐的比例。MRR@K指标用于度量会话推荐算法的排序质量,即正确推荐项目在推荐列表中的位置的倒数。

2.3 基线算法

(1)Item-KNN[9]:一种基于项目的最近邻(KNN)推荐算法,通过计算会话向量之间的余弦相似度进行推荐。

(2)FPMC[10]:一种基于马尔科夫链的传统推荐算法,通过建模相邻点击项目之间的顺序行为预测用户下一次可能点击的项目。

(3)GRU4Rec[5]:首个有效的基于深度学习的会话推荐算法,使用循环神经网络(RNN)对基于会话的用户序列建模,通过堆叠多层门控循环单元(GRU)进行训练。

(4)SR-GNN[11]:首个有效的基于图神经网络(GNN)的会话推荐算法,通过将历史会话序列构建成网络图形式,通过GNN模块编码会话中项目之间的复杂转移关系,采用软注意力机制提取用户的全局和当前偏好,进一步输出推荐结果。

(5)TAGNN[12]:一种 SR-GNN的改进算法,在原有算法的软注意力模块中引入目标注意力单元,使算法能够自适应地激活不同的用户偏好,从而提高算法的表达能力。

2.4 参数设置

将向量维度设置为100,mini-batch大小设置为100。经过多次实验,将温度系数τ设定为0.1。选择训练集的随机10%子集作为验证集。使用Adam优化器,初始学习率为0.01,每3个epoch后衰减0.1,L2惩罚设置为10-5。

2.5 实验结果与分析

5个基线算法和本文算法在两个真实数据集的实验结果见表2,其中每列的最佳结果以加粗体字突出显示。可以观察到,CLGNN在两个数据集上的两个指标一致地达到了最佳性能,这确定了本文提出的方法的有效性。

表2 实验结果

3 结语

本文提出了联合对比学习的图神经网络推荐算法,使用图注意力机制获得项目嵌入,通过软注意力机制聚合会话内的项目生成会话嵌入,同时使用自我对比学习来优化项目嵌入空间。在Diginetica和Yoochoose1/64两个真实数据集上取得了较好的推荐结果。

猜你喜欢
会话注意力向量
向量的分解
让注意力“飞”回来
聚焦“向量与三角”创新题
“扬眼”APP:让注意力“变现”
有意冒犯性言语的会话含义分析
汉语教材中的会话结构特征及其语用功能呈现——基于85个会话片段的个案研究
A Beautiful Way Of Looking At Things
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
冲突语的会话分析研究