基于双用户视角与知识图谱注意力网络的推荐模型
2020-06-15张素琪许馨匀佘士耀任珂可
张素琪,许馨匀,佘士耀,任珂可
(1.天津商业大学信息工程学院,天津300134;2.河北工业大学人工智能与数据科学学院,天津300401)
0 引言
互联网为我们带来了更为便捷和娱乐的生活,但随着信息量的快速增长,用户在线浏览信息时会出现难以抉择阅读项目的情况,这时推荐模型应运而生。推荐模型可为用户推荐潜在的兴趣项目,带给用户更好的体验,同时可为运营商带来巨大的商业效益,应用甚广。
传统的推荐模型主要基于协同过滤[1]的方法,但该类方法会面临数据稀疏以及冷启动的问题。为缓解上述问题,研究者们引入了各种附加信息,如社交网络[2,3]、知识图谱(KG)[4,5]、用户评论[6,7]等。其中,知识图谱是一种异构信息网络,其节点表示实体,边表示实体间的关系。这种结构化知识为提高推荐模型的准确性和可解释性提供了一个有价值的解决方案。
基于知识图谱的推荐方法大致分为三种:基于路径的方法[8-10]、基于嵌入的方法[11-13]和两者混合的方法[14-16]。石川等[7]将知识图谱视为一种加权的异构信息网络,设计了多条meta-path 并在PathSim 的基础上融入边信息,获得基于元路径的用户相似度。赵欢等人[8]改进了传统的meta-path,引入元图(meta-graph)的概念。基于路径的方法将知识图谱以meta-path 等方式融入推荐中,体现了推荐的可解释性,但meta-path 的设计依赖于人工设定。基于嵌入的方法则需要利用KGE 等算法[17,18]得到知识图谱表示向量。DKN[11]提取新闻标题的背景知识来构建知识图谱,采用TranR[17]方法实现知识图谱的嵌入,然后将词表示向量与知识图谱的实体向量作为卷积网络的输入以提取新闻特征。该方法隐式地指引用户和项目的表示学习,缺乏推理能力。近来,利用图神经网络[19-21]表示知识图谱的方法得到了学界的关注。该方法对网络中的各个实体进行向量表示,再通过注意力机制等方法自动挖掘用户兴趣路径,因此可看为基于路径和嵌入的方法的混合。RippleNet[14]以已交互的项目为中心构建知识图谱,兴趣在知识图谱上逐层向外扩散且逐层衰减。KGCN[15]利用了图注意力网络(GAT)自动捕获高阶结构和语义信息。该方法使得推荐具有较好的可解释性,并且不依赖人工设计的特征。目前,该类方法仍处于发展阶段,如何将知识图谱融入推荐模型中以更好地实现用户和项目的表示还有待解决。
本文提出了基于双用户视角与知识图谱注意力网络(Dual-User Perspective and Knowledge Graph Atten⁃tion Network,DKGAT)的推荐模型。为了更好地挖掘用户特征,DKGAT 从双视角分析用户行为,并分别进行用户表示。首先,用户兴趣为用户本身特性的传达,是静态且不轻易受外界影响的,因此从该角度分析用户行为是静态用户视角。其次,用户若对某个项目感兴趣则会产生交互行为,即用户交互的历史项目体现了个人兴趣,是兴趣的外在展现,因此可称之为动态用户视角。在项目特征的表示方面,为准确的捕获特定用户兴趣,需要在知识图谱中同时捕获低阶与高阶项目属性,并自动挖掘用户兴趣路径。为此,DKGAT 基于用户的本质喜好即静态用户表示,利用注意力机制在知识图谱中关注用户感兴趣的项目属性,并通过邻域聚合的方法得到项目表示。最后,通过注意力机制计算用户的历史交互项目和待推荐项目之间的相似性,即可获取基于待推荐项目的动态用户表示。两种用户表示不仅可反应用户的本质特性,还可挖掘出用户与待推荐项目相关的兴趣。
1 建立模型
1.1 任务定义
推荐模型中存在M 个用户和N 个项目,分别记为U={u1,u2,…,uM}和V={v1,v2,…,vN}。依据用户对项目的隐式反馈定义用户-项目交互矩阵Y∈RM×N,其中yuv=1 表示用户u 浏览过项目v,否则yuv= 0。知识图谱G可用三元组(h,r,t)表示,其中h∈E、r∈R、t∈E分别表示头、关系、尾,E和R分别为知识图谱中的实体集合和关系集合。例如,三元组(A Song of Ice and Fire, book.author, George Martin)表示“A Song of Ice and Fire”的作者是George Martin。在推荐模型中,可以将项目v∈V看为一个实体,如在上面的例子中,“A Song of Ice and Fire”既可以看为实体也可以看为项目。
给定用户-项目交互矩阵Y、各个项目的知识图谱G,推荐任务旨在预测用户u 是否对项目v 有兴趣。最终期望得到预测函数ŷuv=F(u,v|Θ,Y,G),其中ŷuv表示用户u 对项目v 的交互概率,Θ 则表示模型参数。
1.2 模型概述
模型以用户u 和项目v 为输入,通过知识图谱获取用户和项目表示,最终输出u 与v 的交互概率。
图1 为模型结构。项目表示反应项目特征,首先需要构建以项目为中心的知识图谱,再利用知识图谱注意力网络(KGAT)对知识图谱进行表示,即可得到项目表示向量v。用户表示则由两部分组成,分别来自于静态用户视角和动态用户视角。用户的静态视角反应用户自身的固有喜好,是用户本质的表达;动态视角则从用户交互的历史项目中挖掘的喜好信息。静态用户表示us用在KGAT 中,挖掘用户关注的重要项目特征,以获取基于特定用户的项目表示。动态用户表示ud则反应了用户的交互历史,若待推荐项目与已交互项目之间有较高的相似度,则推荐的概率也会较高。为获取动态用户表示ud,可分别对每个已交互项目构建知识图谱,通过KGAT 获取每个项目的表示向量,然后利用注意力机制获取各已交互项目与待推荐项目的相似性权重,基于此权重对已交互项目加权求和,即可获得ud。这样的动态用户向量不仅反映了用户的交互历史,也反映了用户的历史兴趣与待推荐项目的相似度。将ud和us做聚合,以获得最终的用户表示u。最后通过内积等方法计算用户表示和项目表示的相关性,即可获取推荐评分。
图1 DKGAT模型结构
图中以用户有四个交互项目为例,左侧省略号表示省略的交互项目的知识图谱。
1.3 知识图谱注意力网络
知识图谱注意力网络(KGAT)为应用在知识图谱上的图注意力网络,可用来捕获知识图谱中的拓扑结构信息以及实体信息。图2 为KGAT 模型。每一个项目都可构成一个知识图谱G,然后通过KGAT 模型,获取图谱特征并表示为向量。该模型是多层结构,低层时可获取低阶实体特征,高层时又可挖掘高阶实体信息。下面主要介绍一层KGAT 模型,最后再对多层结构做推广。
其中,us∈Rd和ri,j∈Rd分别为用户的静态表示和关系表示,d 为向量维度。事实上,表示关系r对用户喜好的影响程度。例如某些用户会喜欢同类型的项目,因此当关系r 为项目类型时需要给予较高的关注。
为了获取项目v 的近邻特征,可计算与项目v 直接连接的节点又称邻域的线性组合:
其中,e0∈Rd为初始的实体表示。当计算项目邻域的表示时,归一化的用户-关系评分可作为用户喜好权重,以基于用户喜好权重对项目的邻域加权求和。
在真实的知识图谱中,对不同的实体e,其邻域N(e)的数量可能存在显著差异。为了保持每个批处理的计算模式固定且有效,需要为每个实体抽取一个固定数量的邻域集作为样本。抽取后实体v 的邻域表示可记为其中为约束数量。
其中,Wagg∈Rd×2d和bagg∈Rd为权重和偏置;σ为非线性函数。
通过一层的KGCN,实体的表示则仅依赖于自身及其邻域,可称vagg为项目v 的1 阶表示,又记为v1。若将KGCN 从一层扩展到多层,则间接相连的实体也会影响到项目的最终表示。为更深入以及合理地探索用户的潜在兴趣,挖掘实体的高阶特征是很有必要的。将每个实体的初始表示即0 阶表示与其邻域实体的0 阶表示聚合,则可获得1 阶实体表示,然后可以重复上述过程,即进一步聚合1 阶表示,以获得2 阶表示。一般来说,一个实体的L 阶表示是它自己与其L跳范围内的实体的聚合。可将该项目的L 阶表示vL看为最终的项目表示v。
图2 KGAT模型
首幅图为以项目为中心构建的知识图谱,省略号表示剩余的图谱结构。对首幅图中实体实现个数为2的采样,并计算用户-关系评分即可获得第二幅图,图中表示用户-关系评分,表示初始的实体表示。通过公式(2),即可获得第三幅图中的实体一阶表示将上述操作重复L 层,即可获得实体的L 阶表示,也为最终的实体表示。
1.4 动态用户表示
考虑到若用户的交互历史中,存在较多与待推荐项目相似的项目,则可认为该用户对待推荐项目感兴趣的可能性大。为此,在模型中引入注意力机制,以更多的关注相似项目。
通过KGAT 模型,可得项目的表示向量。通过注意力机制,计算各个已交互项目与待推荐项目之间的相似性权重,按此权重对各个交互历史表示进行加权求和,即可获得用户的动态喜好表示。具体为,以待推荐项目表示v∈Rd为基准,为用户u 交互历史中的各个项目向量分配权重并加权平均,获取一个相对于基准的用户动态喜好表示:
其中αi为注意力系数,其计算方法为:
其中,Watt∈R1×2d,batt∈R1×1为注意力机制的权重和偏置。
1.5 输出层与模型训练
将用户的静态喜好表示us∈Rd与动态喜好表示ud∈Rd进行拼接,再通过一个线性变换,即可完整地全面地获得用户喜好,记为u∈Rd:
其中,Wu∈Rd×2d和bu∈Rd为权重和偏置。
最后,将用户表示u和项目表示v通过向量的内积获得用户u 选择交互项目v 的概率:
2 实验
将提出的KGAT 模型应用到三个不同领域的数据集上,并通过实验结果分析,验证模型的有效性。
2.1 数据集
本文分别选用来自于电影领域、图书领域以及音乐领域的三个基准数据集进行实验,且三者的数据量相差较大。MovieLens①https://grouplens.org/datasets/movielens/的数据来自于MovieLens 网站,评分范围为1 到5;Book②http://www2.informatik.uni-freiburg.de/~cziegler/BX/的数据来自Book-Crossings 社区,评分范围为0 到10;Music③https://searchengineland.com/library/bing/bing-satori的数据来自于Last.FM 在线音乐系统。数据集的具体统计结果见表1。
表1 数据集统计
实验中将每一个数据集随机划分为训练集、验证集和测试集,三者的比例为6:2:2。本实验为点击率预测,即判断用户是否会对待推荐项目感兴趣,实验采用AUC 和准确率(ACC)作为评价指标。
为实现点击率预测,需将数据集中的显示评分转换为隐式评分,即用户对该项目感兴趣则隐式评分为1,用户对该项目不感兴趣则为0。在上述三个数据集中,可通过为用户评分设定阈值的方法将其转换为隐式评分。具体为,在MovieLens 中对大于等于4 的用户评分设定其隐式评分为1,其他为0;由于其他两个数据集的数据较为稀疏,因此不为其设定阈值,只要存在用户评分就隐式评分为1,否则为0。最后,本文使用了文献[15]构建的知识图谱。
2.2 实验设置
实验中参数的设置可见表2。其中H 表示知识图谱中邻居节点的采样个数,d 表示向量维度,L 代表知识图谱的迭代层数,K 为交互项目采样个数,λ为正则化权重,lr 为学习率,batch 为批处理大小。
表2 实验参数设置
2.3 对比实验
将本文提出的推荐模型与下面的六种方法在相同的三组数据集上进行实验结果比较:
(1)PER[10]将知识图谱视为异构信息网络,基于元路径表示用户兴趣路径,然后在全局和个性化级别定义推荐模型。
(2)CKE[12]利用 TransE[18]表示知识图谱,并将该类信息与文本以及图像信息融入到模型中以共同学习用户和项目表示。
(3)LibFM[22]将基于特征的因子分解机的方法应用在点击率预测任务上。
(4)Wide&Deep[23]是将传统的线性模型和深度模型相结合的通用深度推荐模型。
(5)RippleNet[14]采用了一种类似于内存网络的方法,该模型在知识图谱中传播用户的喜好以供推荐。
(6)KGCN[15]通过图卷积网络挖掘项目在知识图谱上的重要属性以有效地捕获项目间的相关性。
表3 实验结果
2.4 实验结果
实验的具体结果显示在表3 中,可以看到,本文的实验结果普遍优于基准实验。相较于最好的对比实验结果,DKGAT 的AUC 性能在三个数据集上分别有0.5%、6%、1%的提升,ACC 指标在三个数据集上分别有0.8%、5.7%、1.8%的提升。
RER 的实验结果不理想,是因为该方法需要在meat-path 的基础上寻找用户和项目的关系,但meatpath 的设计依赖于专家知识,很难找到最佳方案。CKE 的实验结果较差,一方面是因为实验没有利用图像和文本信息,另一方面说明利用TransE 等方法预训练得实体表示的方法不能很好地利用知识图谱的信息。LibFM 和Wide&Deep 较上面的两个实验而言结果较好,说明相较与上述两类结合知识图谱的方法,该类方法可更有效的利用知识信息。
相较于上述四种方法,RippleNet 和KGCN 表现除了较为强悍的性能。RippleNet 利用用户的交互历史构建可表示用户的知识图谱,然后计算图谱中的实体与待推荐项目之间的相关性,并在知识图谱中逐层的向外扩展,挖掘图中的重要特征。相较于DKGAT,两者都利用了用户的交互历史以获取用户表示,但是RippleNet 没有考虑待推荐项目的图谱信息,导致特征缺失。而DKGAT 实验结果较好,说明对待推荐项目构建知识图谱,可更为精确的挖掘项目特征,实现项目表示。KGCN 则考虑到构建项目知识图谱,利用图神经网络的方法表示项目。但是KGCN 没有有效的利用用户的交互历史信息,只是将用户向量用在GCN 中挖掘项目中的重要特征。DKGAT 相较于KGCN 可有效利用用户的历史信息,计算已交互项目与待预测项目之间的相似度,因此可基于待预测项目实现动态的用户表示。实验结果则证明了相较于KGCN,DKGAT 可有效利用用户信息。
2.5 参数的敏感性
为了探究实验参数的结果的影响,在DKGAT 上分别进行了如下三组实验。
(1)迭代层数的影响
知识图谱以中心节点为基准向外扩展,因此可探索迭代层数对实验性能的影响。实验结果如图4所示。
可观察到,当模型迭代3 层时可获得最佳性能。实验结果表明,当扩展层数较小时性能较差,说明层数较少时利用的特征不够,不能有效地挖掘长距离的用户兴趣路径。同时扩展层数较高并不能提高性能,这是因为模型参数增加使得模型不容易泛化,并且随着知识图谱的扩张,更多无关项目特征被考虑进来,对兴趣的挖掘有阻碍作用。
表4 不同迭代层数时DKGAT 的AUC 值
(2)邻居节点采样个数的影响
KGAT 通过邻居节点的聚合实现了知识图谱的向量表示,邻居节点的采样数则反映了同一迭代层中选取的特征量。因此,可改变取样采样的邻居节点数量H 的大小来探究其对实验结果的影响。
从表5 中可以看出,当H=4 时性能最好。这是因为太小的H 没有容纳足够的邻域信息,不能充分地体现项目特征。而太大的H 则会引入更多的无关特征。
表5 不同邻居节点采样个数时DKGAT 的AUC 值
(3)交互项目采样个数的影响
在计算动态用户向量中需对用户的交互历史进行采样,这是因为用户交互的历史项目较多,全部利用则会造成计算量过大等问题。
从表6 中可以看出,当K 较小时性能较差。用户的交互项目是用户喜好的外在反应,若这部分信息利用不充分,则不能很好的挖掘用户喜好,这也反映了从动态视角看待用户的必要性。实验结果同时表明,随着K 的增加,性能会有所下降,这可能是因为发生了过拟合。
表6 不同交互项目采样个数时DKGAT 的AUC 值
3 结语
本文提出了基于双用户视角与知识图谱注意力网络的推荐模型。为挖掘用户特征,该模型从双视角分析用户行为。首先,用户兴趣为用户本身特性的传达,此为静态用户视角。其次,用户交互的历史项目是兴趣的外在展现,此为动态用户视角。为挖掘项目特征,在知识图谱中利用注意力机制捕获低阶与高阶项目属性,并自动挖掘用户兴趣路径,最终通过邻域聚合的方法得到项目表示。考虑到现实中存在很多与知识图谱相似的结构化信息,如社交网络,因此在未来的工作中可尝试将注意力网络等应用于其他的结构化信息中。