何婧媛,田 原,姜 宁,谢生龙
(延安大学数学与计算机科学学院,716000,陕西,延安)
基于会话的推荐(Session-based Recommendation,SR)是预测用户下一步会点击哪个项目,仅基于当前的序列会话数据,不需要用户标识[1]。SR在电子商务和搜索等推荐系统中扮演着重要的角色,因为它直接帮助用户缓解了许多Web应用程序中的信息过载问题。由于其在工业和学术上都具有很高的实用价值,目前已经提出了许多方法。经典的方法是马尔可夫链,它根据用户的前一个点击项目预测用户的下一个点击项目。在这种假设下,过去行为的独立组合限制了预测的准确性。最近,深度学习的发展促进了使用深度神经网络进行推荐[2-5]。然而,这些方法使用会话中相邻物品之间的单向转换对会话表示进行建模,而忽略了稀疏项目之间的复杂转换。
为了建模项目之间的复杂转换,图神经网络(Graph Neural Network,GNN)已经取得了先进性能,并在SR中显示出了优越性[6-7],这些方法得到了满意的输出,并被证明是有效的。然而,在现实的每个会话中,将输入和输出邻域矩阵连接起来可能会在没有交互的物品之间引入额外的关系,而将输入和输出邻域矩阵一起编码以生成当前项目的表示可能是不合理的。
全局偏好是由不同时间的局部偏好构成的,局部偏好围绕全局偏好波动,这表明2个偏好之间是相互依赖和相互影响的。此外,协同信息在会话表示建模中扮演着重要的角色,并已被研究多年。为了同时考虑偏好依赖和协同信息,本文在框架中引入了并行协同注意力机制。相关研究表明,在包含正在进行的会话及其相邻会话的会话块中,考虑全局和局部偏好之间的交互是有意义的。
现有的SR方法主要有以下3种:1)传统的SR方法。该类型方法主要基于项目对项目或项目在会话中同现的思想。Linden等[8]使用商品对商品的协同过滤进行推荐。Rendle[9]将矩阵分解和马尔可夫链(Markov Chain, MC)结合起来,为下一个推荐建立序列行为模型。Chen等[10]将歌单建模为MC,并使用逻辑马尔可夫嵌入来学习歌曲的表示,用于歌单预测。2)基于RNN的SR方法。循环神经网络(Recurrent Neural Network, RNN)因其对序列行为的建模能力而受到广泛关注。Hidasi等[2]第一个将RNN应用于SR的研究,他们将会话中的项目序列作为RNN的输入。Li等[3]设计了一个名为NARM的模型,该模型将最后一个项目的隐藏状态作为全局兴趣,应用项目级注意力机制来构建主要目的。Liu等[4]提出了一种名为STAMP的方法,该方法捕获稳定和动态兴趣,以产生全局兴趣和主要目的。Wang等[5]引入了一种混合框架CSRM,该框架使用正在进行的会话信息和协同相邻信息来提高推荐性能。Pan等[11]考虑了物品的重要性,即它们与用户提高推荐性能的主要意图的相关性。3)基于GNN的SR方法。近年来,GNN在各种任务中取得了巨大的成功,在SR中的应用也越来越广泛。Li等[12]提出了Disen-GNN,在考虑每个项目的因素级注意力的情况下捕获会话目的。Xu等[7]使用GNN和自注意力机制来学习所有项目的潜在向量和距离位置之间的全局依赖关系进行推荐。Yu等[13]设计了一个名为TAGNN的模型,该模型集成了图形结构数据和用于SR的目标感知注意模块。Xia等[14]提出了SHT,通过显式地探索全局协作关系来增强用户表示和推荐系统的鲁棒性。综上所述,现有方法都取得了一定成果,但仍存在一些缺陷。
针对SR的现有问题,本文基于会话的图神经网络推荐(Session-based Recommendation with Graph Neural Network, SR-GNN)[6]的启发,提出一种基于会话的输入邻域矩阵和输出邻域矩阵的偏好交互推荐(Session-based recommendation with preference interaction from separate incoming adjacent matrix and outcome adjacent matrix,SR-IOPI)框架。
SR的任务是在不访问稳定偏好文件的情况下,仅根据匿名的当前序列数据预测用户下一步可能点击的内容。这里给出模型中的符号。
SR中,V={v1,v2, … ,v|v|}表示所有会话中唯一项目的集合。给定一个块{s1,...,sj-1,sj,sj+1,...,sm}和一个匿名会话序列sj=[v1,v2,...,vn],vi表示sj中一个有序的点击项目,s1,...,sj-1,sj+1,...,sm为sj的邻域会话,由其他匿名用户生成。本文模型的目标是基于从sj及其邻域会话中提取的信息来预测sj的下一个点击项目vn+1。
本文提出的SR-IOPI基本思想是通过GNN和并行协同注意力机制(Parallel co-attention mechanism,PCM)独立使用输入关联数据和输出关联数据来提高推荐性能。图1中SR-IOPI的框架显示在左边,ISE和OSE的详细模块显示在右边。
图1 SR-IOPI方法框架及ISE和OSE的详细模块
如图1所示,SR-IOPI由3个主要组件组成:输入会话表示编码器(Incoming session representation en-coder,ISE)、输出会话表示编码器(Outcome session representation encoder,OSE)和推荐解码器。首先,将会话序列建模为会话图。对于ISE,通过门控GNN构建节点向量。基于节点向量,构建会话的输入局部偏好和输入全局偏好。然后,在块中会话的帮助下,通过并行协同注意力机制,2个偏好通过正在进行的会话本身和邻域会话的偏好交互更新。之后,将2个新的更新表示(输入全局感知的局部偏好和输入局部感知的全局偏好)连接起来,生成统一的输入会话表示。对于OSE,与ISE的过程类似,OSE生成统一的输出会话表示。最后,将ISE和OSE的输出输入推荐解码器,利用融合门控机制平衡来自ISE和OSE的信息进行推荐。输出的是每个候选项目的推荐概率。
给定一个输入会话sj=[v1,...,vi,...,vn],首先将该会话建模为一个有向图,其中每个项目vi表示为一个节点,每条边(vi,vi+1)表示该会话中项目vi的下一个项目vi+1被点击。因为多个项目可能在会话中重复出现,所以每条边的计算方法是:边的出现次数除以该边的起始节点的度。因此,可以根据连接边建立独立输入邻域矩阵Ain和输出邻域矩阵Aout。将每个项目vi嵌入到统一的嵌入空间vi∈Rd。然后,将sj和Ain中嵌入的所有项目[v1,v2,...,vn]输入到ICE中生成输入会话表示,将sj和Aout中嵌入的所有项目[v1,v2,...,vn]输入到OCE中生成输出会话表示。
对于一个会话,通过门控GNN[15]学习节点的潜在向量。由于门控GNN可以在考虑丰富节点连接的情况下提取会话图的特征,文献[6]提出利用门控GNN作为编码器来学习会话图中的节点向量。形式上,对于会话图和Ain中第i时刻嵌入的每个项目vi,不同节点之间的信息传播计算为:
(1)
(2)
由于会话直接由节点组成,本文计划从节点向量生成局部偏好和全局偏好。然后,采用局部偏好和全局偏好构建会话表示。具体所述如下。
(3)
(4)
(5)
具体来说,关联矩阵Cin中的元素表示每个全局偏好和每个局部偏好之间的相似性。
(6)
第j行Cin的每个元素表示第j个全局偏好与每个局部偏好的相似度,第j列Cin的每个元素表示第j个局部偏好与每个全局偏好的相似度。因此,本文通过Cin的一个跨行和列的softmax函数,得到每个局部偏好和每个全局偏好的注意力权重:
(7)
(8)
(9)
PCM在块中所有会话的帮助下更新会话的全局和局部偏好。即最终产生的输入会话表示集成了来自持续会话的偏好依赖和来自邻域会话的协同信息。
(10)
(11)
(12)
(13)
(14)
推荐解码器是根据sj的混合输入和输出表示计算点击下一个项目的概率。为了平衡ISE和OSE的信息重要性,本文通过融合门控机制构建最终会话表示sfinal:
(15)
其中,融合门控ft由以下公式确定:
(16)
(17)
其中,B∈Rd×2d,d为项目嵌入的维数。
(18)
本文分别使用Yoochoose和Diginetica数据集进行实验。具体而言,Yoochoose1/64、Yoochoose1/4和Diginetica的统计数据见表1。
表1 数据集统计
为了便于与其他模型的比较,根据文献[4]和[6]对数据集进行处理。本文首先在2个数据集中筛选出会话长度为1且项目出现次数小于5的数据。由于Yoochoose分数足以完成推荐任务,而增加数据的数量并不能提高推荐性能,因此将Yoochoose分为1/64和1/4训练会话分数。此外,根据文献[5]和文献[13],本文为输入会话[v1,v2,...,vn]构建一系列序列和标签([v1],v2),([v1,v2],v3),…,([v1,v2,...,vn-1],vn)。
遵循前述工作[3,4,6,13],每个数据集中嵌入的项目为100。所有参数从均匀分布(-0.01, 0.01)随机初始化。本文使用Adam在训练时更新参数,初始学习率为0.001,每3个阶段衰减0.1。另外,在模型中,批次大小为100,L2惩罚为10-5。对于评价指标,本文使用Recall@20和MRR@20(平均倒数排名)来衡量预测精度和推荐排名的顺序。
本文将SR-IOPI与一些主流SR方法进行了比较。S-POP[2]根据它们在当前会话中的出现次数,推荐排名前n的项目。Item-KNN[16]推荐与最后一个项目相似度最高的项目,其相似度通过协同出现次数计算。FPMC[17]将MC和矩阵分解结合起来进行下一个推荐。GRU4Rec[18]为SR使用带有并行会话的小批次训练过程和基于排名的损失函数的RNN。NARM[3]使用基于RNN的方法和注意力机制来捕捉用户的局部兴趣和主要目的。STAMP[4]从长期和短期记忆中捕捉用户的全局兴趣和局部兴趣。SR-GNN[6]使用基于节点表示的全局偏好和局部兴趣进行推荐。CSRM[5]采用了一个内部内存编码器和一个外部内存编码器来为SR挖掘有用信息。TAGNN[13]引入了一个局部目标注意力单元来激活特定用户的兴趣并提高推荐性能。STAN[19]通过序列信息上不同优先级的衰减因子将时间信息整合到SR中。SR-IEM[11]从具有自注意力机制的用户稳定偏好和最后一个项目嵌入的正在进行的会话中的最近行为中给出推荐。Disen-GNN[12]在考虑每个项目的因素级注意力的情况下捕获会话目的。
基线方法和本文提出的SR-IOPI在Recall@20和MRR@20方面的性能见表2。这些值是每个模型5次的平均输出,其中性能最好的用粗体表示。
表2 与基线方法的比较
对表2中的数据进行分析发现,在传统方法中基于MC的FPMC的评价指标高于基于协同出现次数项目的S-POP,表示连续项目之间存在依赖关系。此外,Item-KNN的性能优于FPMC,表示最后点击的项目在推荐中起关键作用。
由于神经网络方法具有对复杂上下文信息建模的能力,因此它们极大地优于传统方法。相比仅对正在进行的会话信息建模的方法,基于GNN(SR-GNN、TAGNN、STAN和Disen-GNN)的方法比基于RNN的方法(GRU4Rec、NARM)和多层感知器(STAMP)的方法有了改进。这可能是因为图结构数据能够捕获更复杂的项目转换模式,并且它验证了GNN对会话信息建模是否友好。尽管Disen-GNN在基线方法中取得了最好的性能,但本文提出的SR-IOPI取得了超过Disen-GNN的显著输出。SR-IOPI不仅探讨了邻域会话的互助性,而且深入研究了正在进行的会话中2种兴趣之间的相互引导关系。这表明,有效地挖掘会话的潜在信息可以保证较高的推荐性能。
为了说明本文模型中每种编码器的效果,将SR-I、SR-O和SR-IO 3个变体进行比较。SR-I是指会话表示仅由输入会话表示编码器生成,不存在偏好交互。SR-O是指会话表示仅由输出会话表示编码器构建而成,不存在偏好交互。SR-IO是指会话表示仅由带有融合门控机制的输入和输出会话表示编码器产生,不存在偏好交互。表3显示了SR的SR-I、SR-O和SR-IO的输出性能。
表3 不同编码器的性能比较
从表3中可以观察到,这3种模型的性能都优于GRU4Rec、NARM和STAMP,这再次表明,将会话建模为图结构数据有利于推荐。与SR-GNN、TAGNN、STAN和SR-IEM相比,SR-IO的输出更高。输出表明,将输入连接和输出连接单独编码是合理的。同时,SR-I在Yoochoose 1/64数据集上的性能比SR-O差,而SR-O在Yoochoose 1/4数据集上的性能比SR-I差。这说明SR-I和SR-O是不相关的,它们对SR任务都很重要。此外,SR-IO的输出证实了融合门控机制对于更好的推荐的有效性。
为了研究PCM在每个编码器中的作用,本文还实施了独立输入会话表示编码器(SR-ISE)和输出会话表示编码器(SR-OSE)。表4为SR的SR-ISE、SR-OSE和SR-IOPI输出性能。
表4 具有并行协同注意力机制的SR-IOPI在不同编码器上的性能比较
从表4可以看出,与SR-I、SR-O和SR-IO相比,SR-ISE、SR-OSE和SR-IOPI取得了明显的改善,验证了探讨偏好之间相互作用以及在SR中引入邻域会话的合理性。输出也表明,PCM能够挖掘更多有用的信息进行推荐。输出连接信息在Yoochoose 1/64数据集上比输入连接信息更有用,而在Yoochoose 1/4数据集上则相反。这些趋势与表3的输出一致,说明PCM不会对原始特征产生任何负面影响。
本文比较了SR-IOPI和SR-GNN中不同长度的会话在Diginetica上的差异,分析了会话长度的影响。对于表5,第2列和第3列的数字是每个时长间隔中真值项目排在前20名的会话数量。
表5 Diginetica上不同会话长度的比较
从表5中可以观察到:1)SR-IOPI在所有长度上都始终优于SR-GNN。输出表明,分别编码输入矩阵和输出矩阵适合于节点表示的设计,偏好交互使偏好更加精确。2)SR-IOPI的输出在任意长度下都相对稳定。说明该SR-IOPI模型具有良好的泛化能力。
本文从独立的输入邻域矩阵和输出邻域矩阵框架出发,提出了一种新的基于会话的偏好交互推荐方法。通过分别编码具有偏好互动的输入连接和具有偏好互动的输出连接,提出的SR-IOPI将复杂项目转换、偏好依赖和协同信息结合在一起。本文进行了实证实验来研究SR-IOPI,在3个数据集上的实验表明了该模型的有效性。