孙 伟,申建芳,陈平华
(广4东工业大学 计算机学院,广州 510006) E-mail:3240033507@qq.com
在缓解信息过载,尤其是用户意图不确定时,传统推荐在处理一般推荐问题时,把用户-项目交互记录放置在二维评分矩阵中,通过填充该矩阵的空缺来实现预测[1].与一般推荐不同,基于会话的推荐通过会话中的数据反映用户行为模式和当前偏好,将用户的历史纪录视为项目序列而不是项目集,准确预测与之交互的下一个项目[2].为了得到精确的推荐,基于会话的模型使用某种算法来利用会话中的顺序信息.近年来,递归神经网络(Recurrent neural network,RNN)以不同的方式用于学习用户的动态和时序偏好[3,4],其表现优于传统方法,尽管现有的基于深层会话的模型已被证明有效,但仍存在以下问题.
第1个问题是缺乏利用用户微行为的方法.以往基于会话的推荐模型仅从宏观角度进行建模[5],即将会话视为一系列项目,不考虑用户对项目的不同操作.即使用户在会话中与同一项目进行交互,对该项目执行不同的操作也反映用户在此会话中的不同意图以及对该项目的不同偏好.在本文中,将考虑用户对某个项目的特定操作作为微行为,具有比项目级别的宏观行为(即用户与项目互动)更精细的粒度,并且对用户提供更深入的理解[6].
第2个问题是项目知识对用户-项目交互的稀疏性问题利用不足.由于大多数先前基于会话的推荐仅仅基于会话中交互项的顺序对会话建模[7],因此当历史用户与项目的交互稀疏时,尤其是对于冷启动项,它们无法充分学习会话表示.将物品属性作为辅助信息导入,从知识图谱中提取出来,可以缓解数据稀疏性问题[8].但是,现有的基于知识图谱(Knowledge Graph,KG)的推荐方法在很大程度上忽略了多模式信息,例如项目的图像和文字描述.这些视觉或文字功能可能会在推荐系统中扮演重要角色[9].例如图1所示,在观看电影之前,用户倾向于观看预告片或阅读一些相关的电影评论.当去餐厅吃饭时,用户通常先在一些在线平台上浏览菜肴图片或餐厅点评.因此,有必要将这些多模式信息引入知识图.多模态知识图将视觉或文本信息引入到知识图中,并将图像或文本视为实体或实体的属性,这是获取外部多模式知识的一种更通用的方法,而无需给出视觉或文本信息的专家定义.
图1 多模态知识图的一个例子Fig.1 Example of a multi-modal knowledge graph
现有基于会话的推荐方法都基于理想主义的假设,即通过使用用户的历史行为(即用户偏好的最终表示与候选项目之间的交互作用)捕获用户意图[10],通常是在算法的最后一步执行,在此之前,候选项的信息不会用于偏好学习,实际上,用户的意图可能不确定,尤其是当参与长期的习惯行为(例如,购买)序列时,而不是短暂的活动(例如,听音乐)会话.判断新项目是否可以吸引用户的正确方法是考虑它如何引起用户兴趣的不同部分(即短期和长期)[11].基于以上分析,本文提出一种基于自注意力网络的项目相似性模型,平衡用户对每个候选项的短期和长期兴趣.具体来说,即模型通过门控模块,以此来平衡全局和局部表示.
综上所述,本文提出基于多模态知识图的用户微行为会话推荐,由于操作和项目的不同特点,采用不同的学习机制,将操作序列和会话序列分别输入门控循环单元(Gated Recurrent Unit,GRU)[12]和门控图神经网络(Gated Graph Neural Network,GGNN)[13,14].在此过程中,引入外部知识图谱的同时,采用一种改进的图注意力神经网络方法,对相邻实体进行聚合,完成实体信息的聚合,然后使用一个翻译模型来模拟实体之间的推理关系,该方法不要求知识图谱的每个实体都具有多模态信息,意味着对知识图谱没有特别高的数据要求,此外,该方法不独立处理每个知识图谱的三元组,而是将知识图谱的邻域信息进行实体聚合,从而可以更好地学习融合其他模态信息的实体嵌入.并进一步通过考虑候选项目的信息来平衡局部和全局表示模块,设计多层感知器(Muti-Layer Perception,MLP)的选通网络,该网络使用MLP层对候选项目最近交互的项目以及每个用户的全局和局部偏好之间的关系进行建模来计算权重.
总之,在这篇论文中所提出的贡献如下:
为了提高会话推荐的性能,将用户微行为纳入会话建模中,以细粒度的方式获得会话中连续项之间的关系,并进一步研究不同算法对微行为建模的影响.
提出一种新的多模态图注意网络模型,该模型在多模态知识图上采用信息传播,以此获得更好的实体嵌入进行后续的推荐.
设计一个基于多层感知器的门控模块,该模块通过考虑候选项目的信息来平衡局部和全局表示,从而处理用户意图的不确定性.
最近,受深度神经网络(Deep neural network,DNN)在NLP中建模序列的强大功能启发,研究出一些基于DNN的解决方案,并显示基于会话推荐的最新性能.特别是,基于RNN的模型(包括LSTM和GRU)被广泛用于通过将历史交互编码为隐藏状态(向量)来捕获用户的全局兴趣和当前兴趣.作为在基于会话推荐中使用RNN的先驱,Hidasi等人[3]提出一种深度基于会话的推荐模型,该模型将项目编码为一个独热嵌入,然后将其传送到GRU中以实现推荐.Jing等人[15]通过添加额外的机制来解决RNN固有的短存储问题,进一步改进基于RNN的解决方案.此外,文献[5]中的模型利用注意力网络分别对用户的一般状态和当前状态进行建模,此模型明确考虑用户当前操作对其下一步动作的影响.最近,文献[14]中的作者采用GGNN来捕获会话中项目之间的复杂转换模式,而不是单向转换模式.尽管这些模型在基于会话推荐任务中显示出令人鼓舞的性能,但仍有改进的空间,因为它们在会话中都忽略了用户的微行为.文献[16,17,18]是考虑微行为的常见模型,[18]仅对单调行为链建模,其中用户行为应该遵循相同的链,而忽略了多种类型的行为.为了解决这个问题,文献[16]和文献[17]都采用LSTM对微行为进行建模.但是,他们忽略了项目和操作之间的不同过渡模式.在本文中,我们同时采用RNN和图神经网络(graph neural network,GNN)对微行为进行建模,该微行为不仅考虑项和操作的差异,而且还保持文献[16,18]中提到的操作顺序逻辑.
多模态知识图谱(Multi-modal Knowledge Graphs,MKG)通过将其他模态信息引入传统KG来丰富知识类型.实体图像或实体描述可以为知识表示学习提供重要的视觉或文本信息.大多数传统方法仅从结构化三元组中学习知识表示,而忽略了知识库中经常使用的各种数据类型(例如文本和图像).近年来,对多模态知识图表示学习的研究证明,多模态知识图在知识图的完成和三元组分类中起着重要的作用[19,20,21].从知识图构造的角度来看,多模态知识图表示学习工作可以分为两种类型:基于特征的方法和基于实体的方法.
基于特征的方法.文献[20,21]将多模态信息视为实体的辅助特征,这些方法通过考虑视觉表示来扩展TransE[22],可以从与知识边缘图实体关联的图像中提取视觉表示.在这些方法中,根据知识图的结构以及实体的视觉表示来定义三元组的得分(例如TransE中三元组的评分函数),这意味着每个实体必须包含图像属性.在真实场景中,某些实体不包含多模式信息.因此,该方法不能被广泛使用.
基于实体的方法.文献[23]将不同的模态信息(例如文本和图像)视为结构化知识的关系三元组,而不是预定特征.在这些工作中,多模态信息被认为是知识边缘图的一等公民,然后基于实体的方法使用基于CNN的KGE方法来训练知识图嵌入.然而,现有的基于实体的方法忽略了多模式信息融合而独立地处理每个三元组,并不能达到很好的效果.
在本节中,将会详细介绍本文所提出模型的信息,包括模型中涉及的相关算法.首先将本文解决的问题形式化,然后总结本模型的流程,详细介绍每个步骤.
本文中将会关注用户的微行为,而不是本文会话中已完成的项目,因此使用{m1,m2,…,mL}来表示会话s中的微行为序列,其中L是序列的长度.具体而言,mt(1≤t≤L)是第t个微行为,实际上它代表着该项及其相应操作的组合.
定义1.(知识图谱).为了提高推荐性能,考虑知识边缘图中项目的边信息,通常,此类辅助数据由现实世界中的实体及其之间的关系组成,以对项目进行概要分析.KG是一个直接图,定义为G=(V,E),其中V表示节点集,而E表示边集.节点是实体,边是主体属性对象的事实,每个边都属于一个关系类型r∈R,其中R是一组关系类型.(头实体,关系,尾部实体)表示为(h,r,t),其中h,t∈V,r∈R形式表示每个边r从头实体h到尾部实体t的关系.
定义2.(多模态知识图).MKG是一类知识图,它引入了多模态实体(如文本和图像)作为知识图的一级公民.
定义3.(协作知识图).协作式知识图(Collaborative knowledge graph,CKG)将用户行为和项目知识编码为统一的关系图.一个CKG首先定义一个用户项目二部图,其表示为{(eu,yui,ei)|eu∈U,ei∈I)},其中eu是用户实体,yui表示用户u与项目i之间的链接.ei表示项目实体,U和I分别表示用户和项目集.当eu与ei之间存在相互作用时,yui=1;否则,yui=0.然后,CKG将用户项目二分图合并到知识图中,其中每个用户的行为表示为三元组(eu,Interact,ei).Interact=1表示eu和ei之间存在一个附加的相互作用关系.基于项目-实体对齐集,用户-项目图可以与知识图作为一个统一图无缝集成.
图2 模型框架图Fig.2 Model frame diagram
如前所述,项目知识图谱有助于揭示会话中项目之间的语义相关性,知识边缘图嵌入模块以协作知识图作为输入,利用多模态知识边缘图实体编码器和多模态知识图注意层为每个实体学习新的实体表示,新实体表示将汇总其邻居的信息,同时保留有关其自身的信息,然后使用新的实体表示来学习知识图嵌入,以表示知识推理关系.
对于最后的模型计算,通过设计不同损失函数的加权和,将知识学习作为辅助任务添加到多任务范式中.具体来说,通过引入TransE[22]损失函数作为知识学习的损失,由于这是一个知识嵌入模型,可以有效地建模多对多或多对一的关系,此外,采用交替训练策略[25]对最终模型进行训练.
在本小节中,将会介绍如何获取给定会话的表示形式,这对于模型计算最终得分至关重要.基于会话推荐[15]的基本原理,获取会话表示的前提是学习每个对象在会话中嵌入,在本文的设置中,会话序列中的对象是微行为,根据对微行为的定义,微行为是项目和对该项目执行的操作组合.在该模型中,首先分别学习项目嵌入和操作嵌入,然后将项目嵌入和操作嵌入串联作为微行为的嵌入.
3.3.1 嵌入式学习
项目序列和操作序列对会话建模有不同的影响,并且表现出不同的转换模式,对于项目中的会话项目序列,其转换模式实际上比以前的基于RNN的顺序模型[4]捕获连续项目之间的单向模式更为复杂.后续项与序列中的先前项相关,并且先前项也与后续项相关,这也是用户经常与他/她以前交互过的项目交互的原因.当前转换模式依赖于双向上下文(前项和后项)而不是单向上下文,后者可以通过基于图形的模型而不是诸如GRU的单向顺序模型来建模.LSTM、BERT也具有双向特点,但在处理非欧式空间数据,即对于处理图输入这种非顺序的特征表示时,图中节点排序没有规律,通过这两者来处理图数据,只能遍历图中节点所有可能出现顺序作为模型输入,对模型的计算能力难以承受.为了解决这个问题,通过引入图神经网络分别在每个节点上传播,忽略节点之间输入的顺序,依赖周围状态来更新节点状态.因此,受到文献[26]灵感,采用GGNN对项目序列进行建模,以此获得该模型中项目的嵌入.
尽管用户在会话中执行的操作也可以组合一个序列,但是它们的转换模式与项目序列中的不同.因此,GGNN不适合对操作序列进行建模.首先,大多数平台中独特的操作类型非常有限,如果将一个操作序列转换为一个有向图,则一个操作可能会以大概率出现在序列中,从而导致大多数节点(操作)具有相似的邻居组.因此,通过在此类图上应用GGNN所学习的大多数操作嵌入都非常相似,无法很好地表征用户偏好的多样性.另一方面,两个连续操作之间的转换通常表现出一定的顺序模式.例如,用户经常在他/她阅读评论后将其添加到购物车,或在他/她将其添加到购物车后购买该产品.因此,我们采用GRU而不是GGNN来学习操作嵌入.接下来,将依次介绍学习项目嵌入和操作嵌入的细节.
3.3.2 学习项目嵌入
为了学习GGNN的项目嵌入,首先将项目序列转换为有向图.对于给定的微行为项目序列Si={it1,it2,…,itL},其中每个对象都是微行为中的项目,对应的有向图为G=(V,E).在图G中每一个节点表示序列Si中不同的项目,并且每一个有向边(itk-1,itk)∈E(2≤k≤L)连接序列Si中两个连续的项目.注意,一个项目经常在会话中重复出现,例如,会话s1的项目序列是{i1,i1,i1,i2,i2},项目数|V|≤L并且如果itk-m=itk,(1≤m≤k-1)则在G中体现是此G存在自环现象,进一步将G构造为加权有向图来解决项目嵌入表示相同的问题,边缘的归一化权重(itk-m,itk)计算为Si中{itk-1,itk}的出现频率除以itk-1作为Si中前一项出现的频率.
(1)
(2)
3.3.3 多模态知识图嵌入
a)多模态知识图实体编码器
对于上文得到的项目嵌入向量,为了将多模态实体纳入模型,通过学习不同模式数据的嵌入.利用深度学习中的最新技术为这些实体构造编码器以表示它们,本质上为所有实体提供嵌入.如图3所示,用于描述多模式数据的编码器,使用不同的编码器来嵌入每种特定的数据类型.
图3 多模态知识图编码器Fig.3 Multi-modal knowledge graph encoder
结构知识图谱:考虑(h,r,t)形式的三元组信息,为了将头实体h,尾部实体t和关系r表示为独立的嵌入向量,将它们的实体id或关系id通过嵌入层以生成密集向量.
图像:已经开发出各种模型来紧凑地表示图像中的语义信息,并且已经成功地将其应用于诸如图像分类和问答之类的任务.为了嵌入图像以使编码表示这样的语义信息,使用ResNet50的最后一个隐藏层[28],该层由Imagenet[29]预训练.
文本:文字信息与内容高度相关,可以捕获用户的偏好.对于文本实体,使用Word2Vec[30]训练单词向量,然后应用平滑逆频率(SIF)模型[31]获得句子的单词向量的加权平均值,将其用作句子向量来表示文本特征.为了提高模型的效率,使用句子向量技术而不是使用LSTM对句子进行编码. 与简单地使用字向量的平均值相比,SIF将具有更好的性能.
最后,使用密集层将实体的所有模态统一为同一维,以便可以在模型上对其进行训练.
b)多模态知识图注意层
多模态图注意层沿着高阶连通性递归嵌入传播[32],并通过利用图注意力网络(Graph attention network,GAT)的思想[33],生成级联传播的注意权重,以揭示这种注意网络连通性的重要性.尽管GAT取得了成功,但由于它们忽略了KG的关系,因此不适合KG.为此考虑到KG关系的嵌入来修改GAT,注意机制的引入可以减少噪声的影响并使模型集中于有用的信息上.
在这里,从描述一个单层开始,该层由两个部分组成:传播层和聚合层,然后讨论如何将其归纳为多层.
传播层.给定候选项目实体h,学习其知识图嵌入时必须考虑两个方面.首先,通过transE模型学习知识图的结构化表示,即h+r≈t.其次,对于项目实体h的多模态邻居实体,希望将这些信息聚合到项目实体h,以丰富项目h的表示.按照[34]中的方法,使用Nh表示直接连接到项目h的三元组的集合.eagg是一个表示向量,它集合了相邻实体的信息,它是每个三重表示形式的线性组合,可以通过公式(3)进行计算.
(3)
其中e(h,r,t)是每个三元组(h,r,t)的嵌入,而π(h,r,t)是每个三元组e(h,r,t)的注意力得分.π(h,r,t)控制从三元组e(h,r,t)传播多少信息.
由于关系在知识图中重要性,因此将关系嵌入在e(h,r,t)和π(h,r,t)中,并且它们中的参数都是可学习的.对于三元组e(h,r,t),通过对头部实体,尾部实体和关系的嵌入的串联执行线性变换来学习此嵌入,其表达如公式(4)所示:
(4)
其中eh和et是实体的嵌入,而er是关系的嵌入,通过关系注意力机制实现π(h,r,t),可以通过以下方式计算:
π(h,r,t)=LeakyReLU(W2e(h,r,t))
(5)
按照文献[34]中的方法选择LeakyReLU[35]作为非线性激活函数,通过采用softmax函数对所有与h连接的三元组的系数进行归一化:
(6)
聚合层.此阶段将聚合实体表示eh和对应的eagg作为项目h的新表示,以免不丢失初始eh信息,在这项工作中,通过以下两种方法实现聚合函数f(eh,eagg).
1)加法聚合方法考虑了eh和eagg之间的逐元素加法特征相互作用,这可以通过公式(7)获得.
(7)
在这里对初始eh进行线性变换并将其添加到eagg,W3是一个权重矩阵,用于将当前表示转移到公共空间中,该公共空间表示可训练的模型参数,此操作类似于残差网络中的操作.
2)级联聚合方法使用线性变换将eh和eagg级联:
(8)
其中‖是串联操作,W4是可训练模型参数.
高阶传播.通过堆叠更多的传播和聚合层,探索协作知识图中固有的高阶连通性,通常,对于n层模型,传入信息是在n跳邻域上累积的结果.
3.3.4 学习操作嵌入
由于上述原因,采用带有操作序列的GRU来学习操作嵌入.GRU是标准RNN的改进版本,用于对动态时间行为进行建模,旨在解决梯度消失问题.为了解决不同操作对项目的影响,提出一种基于GRU模块的偏置随机游走方法,
偏置随机游走过程用于提取目标实体h的操作序列,为了实现更广泛的深度优先搜索,从h重复偏向随机游走,以获得长度固定为L的M条路径,该遍历以概率p迭代到当前实体的邻居,定义如下:
(9)
其中tk是路径的第k个实体,t0表示根实体h.为了进行更广泛的搜索,据经验设置0 <γ<0.5.在通过步行获得M条路径和M×L个实体后,按照步行的频率将它们按降序排序,并有序地选择一组排名靠前的实体.这些实体定义为操作对项目的不同影响程度,并用Oλ表示.实际上,一个实体出现在随机游走中频率越高,它对目标实体的重要性就越高.
(10)
(11)
(12)
其中⊕是串联运算,基于这样的微行为嵌入,两个具有相同项目序列但实体操作序列不同的会话仍具有不同的表示形式,可以捕获用户的细粒度意图.
为了将局部表示和整体表示结合起来,早期的尝试会想到级联或求和,结果表明,求和总是比级联更好.在文献[36]中,作者提出了加权求和,通过考虑项目列表的一致性来平衡这两种表示. 但是,这些组合方法仍仅基于历史信息,可能会造成理想化的结果.
图4 门控机制Fig.4 Gating mechanism
为了解决顺序推荐中用户意图不确定性的问题,受神经注意项目相似度(NAIS)的启发[11],提出了一个项目相似度门控模块,如图4所示.该模块通过以下方式计算局部表示和全局表示的权重:对候选项目i∈I与最近交互的项目sl之间的项目相似性以及候选项目i与历史项目i′∈Su的集合之间的项目相似性进行建模.为了简化模型:1)将门函数g的输出值确定为局部表示的权重,并将其限制为0 为了表示会话中的全局偏好,对会话中每个微行为的嵌入分配适当的权重,不同的微行为具有不同的优先级,具体来说,给定微行为mt(1≤t≤L),其注意力权重计算为: αt=βTσ(W1mL+W2mt+bα) (13) 其中bα,β∈R2d,W1,W2∈R2d×2d,全局会话表示为: (14) 具体来说,候选项目i∈I和最近项目sl处的交互项的表示分别取自原始项嵌入矩阵M(即mi和msl),全局偏好表示为历史项目i′∈Su的聚合表示,这正是学习到的全局表示sg,然后,将单个级别的门控输入入MLP,如下所示: g=σ(ISG(msl,sg,mi))=σ([msl,sg,mi]WG+bG) (15) 其中ISG(·,·,·)是项相似性选通函数,[·,·,·]表示为三元级联运算,WG∈R3d×1和bG∈R分别是要学习的权重和偏差,使用sigmoid函数σ(ξ)=1/(1+e-ξ)作为激活函数,因此g的取值范围限制为(0,1). 类似于文献[37],尝试将两个元素的乘积(代表两对项目的相似性)作为“[msl⊗mi,sg⊗mi]”引入MLP的输入,这对预测性能没有影响,理论上可能会造成一些信息损失. 通过相应的局部表示msl和全局表示sg的加权总和,可以得出第l步序列的最终表示,如下所示: zl=msl⊗g+sg⊗(1-g) (16) 最后,预测项目i的优先级为序列中的第(l+1)个项目,如下所示: rl+1,i=zl(mi)T (17) 通常,如果两个学习任务相互关联,则将两个学习任务合并到多任务中比分别实现各自的目标更有效.在多任务中,一项任务的学习结果可以指导另一项任务更好的学习,学习多模态知识的嵌入可以看作是辅助任务,以预测用于基于会话推荐任务的特征(项目嵌入).因此,在基于多模态知识图的用户微行为序列推荐模型中,将多模态知识嵌入学习作为辅助任务导入多任务学习中,以辅助基于会话的推荐任务. 3.5.1 训练集的选取 多任务学习的目标是在给定知识三元组K和基于会话推荐的训练集Y的情况下,最大化模型参数Φ的后验概率. 3.5.2 损失函数 根据贝叶斯规则,该目标是: (18) 其中p(Φ)是Φ的先验概率,其遵循0均值和0.1标准偏差的高斯分布.p(K|Φ)是在给定Φ的情况下观测K的可能性,而p(Y|Φ,K)是在给定K和Φ的情况下观测Y的可能性,其定义为伯努利分布的乘积.多任务学习的目标综合损失函数是: (19) 3.5.3 优化策略 为了训练基于会话的推荐任务,首先收集足够的训练样本,并表示为 (20) 其中S和I是训练样本中的会话集和项目集. 通过多模态知识图实体编码器和多模态知识图注意层后,将为每个实体学习一个新的实体表示,然后,将这些新的实体表示形式输入到知识图嵌入中,将实体和关系参数化为向量表示,同时保留了知识图结构中的关系推理.具体来说,采用知识图嵌入中广泛使用的平移评分函数来训练知识图嵌入,当一个三元组(h,r,t)有效时,它通过优化翻译原则来学习每个实体和关系的嵌入eh+er≈et,其中eh和et是来自多模态知识图注意层的新实体嵌入,er是关系的嵌入.公式(21)描述了三元组的得分(h,r,t). (21) 知识图嵌入的训练考虑了有效三元组和残缺三元组之间的顺序关系,并通过成对的等级损失来描述: (22) 其中Ω={(h,r,t,t′)|(h,r,t)∈G,(h,r,t′)∉G},并且(h,r,t′)是通过随机替换有效三元组中的一个实体而构成的残缺三元组.该层对三元组的粒度进行实体和关系建模,充当正则化函数并将直接连接注入表示中,可以提高模型的表示能力. 4.1.1 数据集 KKBOX(1)https://www.kaggle.com/c/kkbox-music-recommendation-challenge/data:这个数据集由著名的音乐服务公司KKBOX提供,包含许多用户在某一特定时期听音乐的历史记录.将“源系统标签”作为用户操作,例如“标签我的书架”(对本地存储的操作)和“标签搜索”.实验中使用的音乐属性包括艺术家(歌手)、流派、语言和发行年份.为了构造KKBOX知识图的图像实体,对相应的音乐片段进行抓取,使用FFmpeg提取每个预告片的关键帧,并使用预先训练好的ResNet50模型从关键帧中提取视觉特征;为了构造KKBOX知识图的文本实体,从TMDB中抓取相应的音乐描述. JDATA(2)https://jdata.jd.com/html/detail.html?id=8:来自著名的电子商务网站京东.包含两个月内用户在京东上的一系列操作,操作类型包括点击、订购、评论、添加到购物车和收藏夹.实验中使用的产品属性包括品牌、商店、类别和上市年份.类似于KKBOX数据集,使用预先训练的ResNet50模型来提取兴趣点.推荐电子商品图片中的视觉特征.为了构造电子商务知识图的文本实体,对每个商品的兴趣点使用用户评论. 对于这两个数据集,将4项属性(关系)视为知识,并将其纳入本文所提模型中.如文献[3,14]所述,将JDATA中会话的持续时间阈值设置为1小时,将KKBOX中会话的索引间隔设置为2000(根据统计分析),以划分不同的会话.过滤掉长度为1的会话以及在数据集中出现次数少于3次的项目.对于这两个数据集,将较早的90%用户行为作为训练集,并将随后(最近)10%的用户行为作为测试集.在模型预测中,给定一个测试会话,模型首先计算所有项目的匹配分数,然后根据分数生成前k个列表. 4.1.2 对比方法 为了强调本模型在性能方面的优越性,将其与以下基于会话推荐模型进行比较: 表1 数据集Table 1 Dataset statistics FPMC[38]:一种基于隐马尔可夫链的序列预测方法,常用作基于会话推荐的基线. GRU4REC+BPR/CE[7]:GRU4REC的改进版本,是最新的基于会话的推荐模型.GRU4REC+BPR使用贝叶斯个性排名作为损失函数,而GRU4REC+CE使用交叉熵作为损失函数. NARM[15]:这是一个基于GRU的会话推荐模型,考虑用户偏好的长期依赖性. STAMP[5]:这个基于会话的推荐模型同时考虑了用户的当前兴趣和一般兴趣.特别是,STAMP使用一个额外的神经网络来对当前兴趣进行建模 SR-GNN[14]:利用GGNN捕获会话中各个项目之间的复杂转换模式,没有包含微观行为和知识. MKS:删除所有与操作相关的模块,其余组件与MMKS相同,验证合并用户微行为的重要性. MS:去除学习知识嵌入的辅助任务,即公式(22)中LKG,其余组件与MMKS相同.以下所有变体都消除了学习知识嵌入的任务,它们之间的区别在于对会话建模的操作. MS(GRU/GGNN):与MMKS不同,这两个变体直接学习微行为嵌入,唯一区别是MS(GRU)将微行为序列馈送至GRU,而MS(GGNN)将微行为序列馈送至GGNN. 4.1.3 评估方法 使用以下指标来评估所有模型的性能,这些指标在以前的基于会话的推荐评估中被广泛使用: Hit@k:这是命中样本在前k个排名列表中具有正确的下一个交互项的所有样本中所占比例. MRR @ k:在前k个排名列表中,正确的下一个交互项的平均倒数排名.如果正确的项目排在top-k之后,则倒数排名设置为零. 4.1.4 参数设置 为了公平比较,本模型和所有基线采用相同的操作维度和项目嵌入.由于篇幅限制,只显示100维嵌入的结果.根据其他尺寸嵌入的实验结果得出一致的结论.并且所有嵌入均采用高斯分布进行初始化,该分布的平均值为0,标准差为0.1. 将GGNN的步数H设置为1,本模型是通过交替训练而不是联合训练来学习的,其原因将在以下实验中得到验证.另外,使用Adam优化器,其学习速率为0.001,批处理大小为128.对于基线,在其论文中使用了默认的超参数设置(嵌入尺寸除外).关于控制参数,在公式(19)中通过优化实验设置λ1取值为0.0001在每个数据集中.对于L2惩罚项λ2,将其设置为10-5作为以前的基于会话的推荐模型. 通过表2比较了所有模型在不同数据集上的基于会话推荐性能,实验结果表明,本文所提出模型对于性能的提升起到了非常大的帮助,优于所有数据集中的所有基线.如表1所示,KKBOX比JDATA具有更多独特的操作,有助于更好地捕获细粒度级别的用户偏好.微行为操作和多模态知识图谱结合使用,能够改善基于会话推荐的性能.通过引入多模态实体的情况下,在结构化知识的基础上,增加了文本和视觉,对于改善推荐的性能有极大的帮助并且比其他一些方法对于多模态信息更加友好.通过单独学习项目嵌入和学习操作嵌入对会话进行建模比直接学习微行为嵌入更有效,如前所述,项目序列的转换模式和操作序列的转换模式不同,因此将项目与微行为操作结合在一起,对于性能的提升有一定程度的帮助,通过以上实验结果证明采用微观行为操作的效果具有显著的优势. 表2 不同算法的推荐性能Table 2 Recommended performance of different algorithms 4.2.1 模型深度的影响 为了评估层堆叠的有效性,对不同数量的层进行实验,层数视为模型的深度.对于本模型知识图嵌入部分,将多模态知识图注意层数固定为2,对于知识图嵌入中不同模型深度(不同数量的多模态知识图注意层)的影响可总结如下:在KKBOX数据集中,随着多模态知识图注意层数的增加,评估指标也随之增加,证明领域信息融合在知识图嵌入中的有效性;在KDATA数据集中,随着多模态知识图注意层数的增加,评估指标先增大然后减小,这可能是由于KDATA数据的多跳信息相对稀疏造成的,结合表3的结果,与那些独立考虑知识图实体三元组的方法相比,本文所提方法(在进行知识图嵌入时考虑相邻实体的信息)可以提供更高质量的实体嵌入以供推荐.对于推荐部分,随着模型层数的增加,评估指标在两个数据集中首先增长,这验证了不同跃点的知识图嵌入对推荐系统有帮助.但是,当两个数据集中的层数大于 2 时,评估指标会下降.换句话说,当层数增加到一定程度时,评估指标下降,这可能是由于数据稀疏导致的过度拟合造成的. 表3 模型深度的影响Table 3 Effect of model depth 4.2.2 训练策略 如前所述,多任务学习损失方程式有两种训练策略,即交替训练和联合训练,分别用两种策略训练MMKS,并比较它们的学习曲线,此外,再添加一个预训练变量进行比较,在该方法中,首先通过TransE对项目嵌入进行预训练,然后将其输入到KM-SR中,仅通过公式(20)中的函数损失进行调整.将知识学习纳入3种不同策略的学习曲线表明,知识学习纳入交替训练的多任务学习是实现会话推荐任务的最佳策略. 图5 结合知识学习的3种不同策略学习曲线Fig.5 Learning curves of three different strategies to combined with knowledge learning 在图5中,曲线表明,虽然预训练模型有比较好的学习起点,但在收敛阶段已被其他两个竞争对手超越,结果证明多任务学习优于基于知识的预训练,训练集中经常出现的项目将在联合训练的每个时期中通过损失LK进行调整,这样会使得学习的嵌入内容偏向辅助任务LK,从而缩小主要任务LS的学习效果,因此在本模型的基于会话推荐场景中,交替训练比联合训练要好. 4.2.3 门控的输入和输出 在图6中,对项目相似性门控的MLP层进行一些更改:1)删除全局偏好或最近交互的项目从MLP层的输入;2)通过设置W和b,将上述单个级别的门控切换到特征级别,以获得输出矢量,为不同维度提供不同的权重.从图6中可以看到,在门控函数中引入单一类型的历史表示形式(即全局偏好和最近交互作用)通常足以实现出色的结果,从图6中还可以看到,尽管希望对不同维度的权重进行细化,但特征级门控对实验数据集带来的结果却是更糟.实际上,在实验中发现特征级选通使模型更加不稳定,从而倾向于陷入局部最优状态. 图6 对门控MLP更改的推荐性能Fig.6 Recommendation performance for gating MLP changes 在本文中,提出一种新颖的基于会话的推荐模型,该模型同时融合多模态知识图和用户微行为,并根据项目相似门以及图自注意网络,用于推荐.具体而言,采用不同的机制来学习用于生成细粒度会话表示的项目嵌入和操作嵌入,该模型将多模态知识图谱引入,通过学习实体之间的推理关系并将每个实体的邻居实体信息聚合到自身;还设计一个选通网络,该网络考虑候选项目之间的关系,最近的交互作用以及每个用户的整体偏好,以应对用户意图的不确定性.在两个真实数据集上的大量实验证明所提出模型的合理性和有效性,对于传统的基于会话推荐改善有很大的意义,通过一些消融和定量研究证明设计门控模块的合理性.3.5 模型训练
,如果项目j是会话s之后用户的下一个交互项目,则ysj=1,否则ysj=0.然后采用Adam优化器通过最小化二元交叉熵损失来训练基于会话推荐任务,损失函数如下:4 实 验
4.1 实验设置
4.2 实验结果
5 结 论