基于知识图谱嵌入与多神经网络的序列推荐算法*

2020-10-10 02:39沈冬东汪海涛
计算机工程与科学 2020年9期
关键词:图谱卷积神经网络

沈冬东,汪海涛,姜 瑛,陈 星

(昆明理工大学信息工程与自动化学院,云南 昆明 650500)

1 引言

现有推荐系统的热门研究方向大致可分为2类:传统推荐算法[1]和序列推荐算法[2]。传统的推荐算法主要建模的是用户长期稳定的偏好,随着时间的变化发生着缓慢的变化。其中基于矩阵分解技术的推荐方法是该领域最著名的技术[3]。但是,用户的行为意图可能受各种因素的影响,例如,兴趣演变、即时需求等。最近,由于序列推荐算法在建模项目与项目之间的顺序关系方面的优势而备受关注,并且这种优势满足了探索用户短期偏好的需求。主要归功于循环神经网络RNN(Recurrent Neural Network)在其他领域的成功应用,特别是在自然语言处理NLP(Natural Language Proces- sing)领域[4],基于RNN的方法已经成为序列推荐算法的主流模型[5]。

标准RNN假设连续项目之间是分布均匀的。例如,在NLP应用程序中,句子中任意2个词语之间的间隔可视为是相等的,并且句子中的词语都经过组织以表达同一种语义。但是,在推荐系统领域,用户交互序列要复杂得多。例如,用户连续操作之间的时间间隔可能有所不同,凭直觉,时间间隔近的操作倾向于共享更紧密的联系。用户连续操作之间的意图也多种多样,并不共享同一目的。这也导致RNN难以充分地建模用户的时间信息和上下文信息。

相反地,卷积神经网络CNN(Convolutional Neural Network)在NLP[6]以及计算机视觉CV(Computer Vision)中学习上下文信息时表现出强大的优势。因此,研究CNN与RNN的结合将会对用户偏好建模产生有益的影响。但是,用户偏好建模方法可能会受到如下假设的影响,用户不同时期的兴趣点对当前用户偏好的预测具有同等贡献。这并不符合现实世界中的实际情况,因为用户偏好随着时间推移发生着变化,不同时期的兴趣点对当前偏好的影响大不相同。由于自注意力机制在NLP领域的成功应用[7],本文采用深度学习的最新进展自注意力机制来学习不同兴趣点对最终偏好的不同重要性。

在上述2类热门研究中,项目相似性的计算往往占有重要的地位,现有的序列推荐算法常采用基于项目嵌入的方法item2vec[8]来获取项目之间的相似性。这类方法只关注用户的交互序列来获取相似性,而忽略了项目属性、内容之间的联系。例如,在电影推荐中,同一导演、同一主演等信息可能成为用户选择影片的重要决定因素。因此,使用item2vec生成的项目向量缺乏对项目内容信息的考虑,而且在项目向量生成过程中往往会受到数据高度稀疏的影响。为了降低这些影响,研究人员通常转向功能丰富的场景,在这些场景中,用户和项目的属性信息用于补偿数据稀疏性并提高推荐的效果[9]。最近的一些研究[10]比仅使用属性更进了一步,其指出属性不是孤立的而是相互关联的,形成一个知识图谱KG(Knowledge Graph)。通常,KG是有向异构图,其中节点对应于实体(项目或项目属性),而边对应于关系。与不使用KG的方法相比,将KG纳入推荐可以通过3种方式使结果受益[11]:(1)KG中项目之间的丰富语义关联可以帮助探索其潜在的联系并提高结果的准确性;(2)KG中各种关系有助于合理地扩大用户的兴趣并增加推荐项目的多样性;(3)KG连接了用户的历史喜好和推荐的商品,从而为推荐系统带来了可解释性。知识图谱的提出正好为推荐系统注入新的活力,知识图谱将海量多源数据整合形成一种结构化的知识图。通过对知识图谱中的知识抽取,得到更加详尽的项目特征信息,从而使得项目相似性的计算更加精确,进而生成推荐。

基于上述观察,本文提出一种基于知识图谱嵌入与多神经网络的序列推荐算法,命名为KG-AttCRNN,以实现更好的用户偏好建模,解决用户序列中的时间间隔不一致性以及动态意图不一致性。首先,基于知识图谱提出一个更有效的项目嵌入方法。然后,根据用户的历史交互顺序将用户的序列划分为不同的时期,使用CNN学习用户序列的上下文信息,生成用户的兴趣点向量。最后,使用长短时记忆LSTM(Long Short-Term Memory)神经网络和自注意力机制动态地融合用户的兴趣点,生成用户偏好,进而生成推荐。

2 相关工作

随着知识图谱的研究引入推荐,推荐系统的准确性和可解释性得到了很好的提升。基于知识图谱的推荐方法大致分为基于本体的推荐[12]、基于开放链接数据的推荐[13]和基于图嵌入的推荐。其中基于图嵌入的技术在推荐系统研究中扮演着重要的角色,DeepWalk[14]较早将图嵌入技术应用到推荐系统,其将用户与项目嵌入到同一向量空间,计算用户与项目的相似度从而生成推荐。DeepWalk的随机游走存在许多的变体,例如node2vec[15]通过改变随机游走的方式来更深层次学习项目之间的相似性。

具体到序列推荐算法,序列推荐的早期工作几乎都是基于序列模式挖掘[16]和过渡建模[17]的,随着深度神经网络引入序列推荐,序列推荐算法得到了快速发展。Hidasi等人[18]首先应用递归神经网络建立基于会话的推荐,显著优于基于项目的方法。Quadrana等人[19]重点关注一些基于会话的推荐场景,并开发了具有跨会话信息传输的分层循环神经网络。Donkers等人[2]通过表示各个用户来扩展RNN,以便生成个性化的下一个项目推荐。Tang等人[20]提出一种卷积序列建模方法,用水平和垂直卷积层来学习用户的历史序列。

尽管这些模型已经考虑了用户的序列信息,但是用户的顺序行为和历史偏好的动态一致性仍然未被很好地开发。相比之下,本文通过整合用户的不同时期的兴趣偏好进行项目推荐,充分考虑了用户兴趣偏好的演变。

3 基于知识图谱嵌入与多神经网络的序列推荐

本文提出的序列推荐算法,主要由项目嵌入和用户偏好学习2部分组成,算法的整体流程图如图1所示。

Figure 1 Overall flow chart of the proposed algorithm 图1 本文算法整体流程图

3.1 序列推荐

3.2 项目嵌入

在算法第1阶段,项目嵌入旨在从项目的大量顺序行为中学习项目的相似性来为每一个项目生成统一表示。序列推荐的先前工作是使用one-hot编码或在深度学习框架中添加额外的嵌入层表示项目[2]。然而,对于大型推荐系统中的一系列物品,一方面,one-hot编码可能需要花费无法承受的时间,并且由于高度稀疏性导致无法很好地优化[21]。另一方面,添加额外的嵌入层可能会使网络在某种程度上失去一定的性能。更重要的是,这2种方法都不能揭示用户交互序列中隐含的项目顺序相似性。在这种情况下,有必要找到一种有效的表示方法,以直接从用户的交互序列中学习高质量的项目向量,结果揭示相似的项目往往彼此接近。近年来,神经嵌入技术在许多领域取得了巨大的成功,如自然语言处理、社交网络和推荐。在这些工作中,item2vec[8]是Skip-gram与负抽样的重要扩展之一,用于为基于项目的协同过滤推荐产生项目嵌入。

item2vec项目嵌入方法仅考虑到用户的交互序列来学习项目之间的顺序相似性。计算项目相似性不仅应考虑项目的顺序相似性,还需要考虑到项目之间的内容属性信息。本文提出一种结合知识图谱结构信息的改进item2vec来捕获项目的相似性,同时将项目的交互信息与项目本身的信息结合起来嵌入到低维空间中,所得向量能很好地揭示项目之间的相似性。

3.2.1 知识图谱抽取序列

本文首先构建知识图谱,然后使用node2vec[15]算法思想构建随机游走序列。以电影特征为例,其中的实体包括影片、导演、演员类型等,基于电影信息构建的知识图谱如图2所示。

Figure 2 Movie knowledge graph图2 电影知识图谱

本文使用node2vec中的随机游走方式获取随机游走路径,然后从其中提取出电影实体序列。node2vec的广度遍历和深度遍历能很好地抽取实体间的同质性和同构性。随机游走的概率为:

(1)

其中,πvx是未归一化概率,Z表示其中的归一化常数。ci表示随机游走中的第i个节点,v和x表示知识图谱中的节点,E表示知识图谱。对于常见的随机游走,πvx和实体边权重之间的关系为:πvx=αpq(t,x)·wvx,wvx为节点v和节点x之间的权重。系数αpq(t,x)计算方式如下所示:

(2)

其中,t表示上一个节点,x表示随机游走中下一个可能的节点,通过p和q的值来控制深度和广度游走,dtx表示节点t和x之间的最短距离。本文使用node2vec的深度游走策略获取得项目序列作为下一步item2vec的输入,更好地捕获项目之间的相似性。通过知识图谱的序列抽取得到序列集合Hk={I1,I2,…,Im},其中Ii={x1,x2,…,xn}表示生成的一条随机游走序列。

3.2.2 项目嵌入

将从知识图谱抽取的序列与现有的用户交互序列相结合,作为item2vec的输入,最终得到项目的嵌入向量。知识图谱序列能够弥补采用项目序列嵌入较少考虑项目内容信息等缺点。

神经项目嵌入模型类比于词向量模型,用户交互的项目随着时间自然地形成顺序序列,知识图谱得到项目序列,将两者结合类比于自然语句。同一主演、同一导演和拥有相同上下文信息的项目在嵌入空间上中离得很近。具体来说,给定用户交互序列集合H={S1,S2,…,SN}以及知识图谱得到的序列集合Hk={I1,I2,…,IN},item2vec技术的Skip-gram模型旨在最大化以下目标:

(3)

其中,N是序列Si和Ii的长度,xi表示序列中的项目,p(xj|xi)定义为softmax函数:

(4)

(5)

其中,σ(x)为sigmoid函数,S表示本文为每个正样本绘制的负样本数量,方便优化模型。经过上面的一系列变形,目标函数由式(3)变为式(5):

arg maxtarget=

(6)

最后,通过传统的梯度下降法训练item2vec,并获得所有项目的高质量分布式向量表示。

在历史交互序列和知识图谱抽取序列的帮助下,使用item2vec可以捕获项目的相似性,并生成统一的项目表示空间,其中嵌入产生的向量可以解释项目的相似性和顺序关系。对于每个用户u,可以生成具有嵌入项的交互序列,如下所示:

Ru={v1,v2,…,vn}

(7)

其中,vj表示项目xj的d维潜在向量。

3.3 偏好学习

在获得项目的嵌入向量后,本文通过所提出的序列建模框架建模用户的个性化偏好。通过CNN学习用户兴趣点的方法能解决LSTM在建模用户序列时忽略时间间隔不规则性和用户意图不同性的问题。时间间隔近的用户序列往往共享着相同的兴趣点,CNN在NLP和 CV中已被证明建模上下文的能力很强,而且已有研究证明了CNN在建模序列上下文方面优于传统的RNN[22]。因此,本文将CNN作用于用户的兴趣点,充分考虑用户的上下文信息来学习用户的兴趣点。

3.3.1 兴趣点学习

兴趣的学习首先需要根据用户交互序列时间戳的信息划分用户的交互序列,然后使用CNN学习用户的兴趣点。本文将用户的序列分为长中短3个时期,动态地学习用户的偏好,卷积偏好建模的模型如图3所示。

Figure 3 Framework of interest points learning 图3 兴趣点学习框架图

本文使用一维卷积神经网络学习用户的兴趣点,学习不同时间段的兴趣点。CNN有良好的兼顾上下文信息的能力,能够更好地建模用户在一个时间段的兴趣点,挖掘用户的兴趣偏好。传统的CNN要获取充分的上下文信息,需要一个非常深的网络或者非常大的过滤器。本文将膨胀卷积应用到兴趣点偏好学习中,对于一维序列输入X∈RN和滤波器f:{0,…,k-1}∈R,其中,N为输入的维度,对该序列的元素的卷积运算F定义为:

(8)

其中,d表示项目向量维度,k是卷积核大小,s-d·i表示卷积操作过去的方向。f表示卷积操作中的滤波器,s表示序列中的元素。图3a中v0表示项目向量,PT+1表示第T+1次输出结果,b表示膨胀卷积的膨胀因子。因此,膨胀卷积在每2个相邻的滤波器之间引入一个固定的阶跃。当b=1时,膨胀卷积变为规则卷积。使用大的膨胀因子可以使顶层的输出代表更大范围的输入,从而有效地扩展了CNN的接收范围。本文的残差块包含一个分支,该分支通过F的一系列变形,其输出被添加到块的输入中:

o=Activation(X+F(X))

(9)

通过CNN的学习,得出用户u的兴趣点序列Pu={P1,P2,…,Pj}。

3.3.2 偏好学习

用户的偏好由用户的兴趣点组成,通常使用累加或者全连接层的方法来实现,这2种方法都缺乏对用户偏好的动态融合。本文设计了一种自适应的信息融合方式,决定哪个兴趣点更重要时,取决于特定的上下文信息。因此,以动态方式进行信息融合是有益的,用户的兴趣点随着用户交互形成兴趣点序列,其中包含相应的时间信息和上下文信息。本文提出基于注意力与双向长短时记忆BiLSTM(Bidirectional Long Short-Term Memory)神经网络学习用户的偏好,算法的框架如图4所示。

Figure 4 Dynamic fusion of interest points图4 兴趣点动态融合图

如图4所示,兴趣点的动态融合由2部分组成:BiLSTM和注意力机制。其中BiLSTM通过充分利用序列的前向和后向上下文信息更好地学习用户偏好。对兴趣点进行融合时,每个交互的隐藏状态由先前状态hj-1和当前兴趣点向量Pj所更新。更具体地说,对于第j个兴趣点,LSTM的学习过程如下所示:

(10)

(11)

(12)

(13)

hj=ojtanh(cj)

(14)

(15)

(16)

上述模型认为所有的兴趣点对最终偏好预测有着相同的影响程度,更聪明的推荐系统应该能区分不同的兴趣点对当前偏好预测的重要性,对所有兴趣点分配相同的权重是不合理的。需要找到合适的方式为兴趣点赋予不同的权重,即:

(17)

受近期成功使用注意力机制的启发[7],本文使用自注意力机制实现动态权重的分配。自注意力机制的权重计算公式如下所示:

a=softmax(w1tanh (w2H))

(18)

3.4 算法的训练与优化

将连续项目嵌入作为网络的输入,输出为下一个项目的预测。在全局学习阶段,本文使用均方误差MSE(Mean Square Error)作为损失函数,其定义为:

(19)

其中,ζ()是MSE函数,vt是目标用户u在下次访问时访问的项目表示,Su表示相互作用序列,Su∈M,其中,M为用户序列集合,|M|表示序列的数量。本文使用Adagrad优化损失函数[23],设置的更多细节将在实验中指定。

这个塑胶厂的结构和刚才那个染料厂大同小异,大帅道:我来。说完从地上捡起石头,左小龙忙握住他的胳膊,说,等等。

3.5 算法描述

算法基于知识图谱嵌入与多神经网络的序列推荐算法

输入:数据集S、本体库。

输出:Top-N推荐列表。

步骤1将数据集S和本体库一起构建知识图谱得到知识图K;

步骤2通过node2vec改进的随机游走,从知识图谱K中获得随机游走序列集合Hk={I1,I2,…,In}。

步骤3将获得的随机游走序列集合Hk={I1,I2,…,In}和数据集S中用户交互序列集合H={S1,S2,…,Sn}一起使用item2vec训练获得项目Ru={v1,v2,…,vn}。

步骤4按照时序信息将用户序列划分为不同时期,通过膨胀一维CNN学习用户兴趣点向量,生成不同时期的兴趣点向量集合Pu={P1,P2,…,Pj}。

4 实验

本节从以下几个方面证明所提出模型的有效性:(1)总体推荐性能的比较;(2)知识图谱和自注意力机制对算法的影响;(3)嵌入维度对算法性能的分析以及算法冷启动的性能分析;(4)算法的优缺点分析。

4.1 数据集

本文采用真实世界中的数据集MovieLens10M进行实验。MovieLens10M数据集是来自真实世界中的电影用户评分数据集,包含71 567个用户对10 681部电影的10 000 054个评分信息。其中最短的用户交互序列为20,平均交互序列长度为115,评分信息为1~5。

本文使用Microsoft Satori为数据集构建知识图谱库。首先从整个KG中选择三元组子集,其关系名称包含电影,置信度大于0.9。给定子KG,通过将所有有效电影/书籍的名称与三元组(head,film.film.name,tail)或(head,book.book.title,tail)的尾部匹配来收集电影的ID。为简单起见,排除未匹配或有多个匹配实体的项目。然后,将电影ID与所有KG三元组的头部和尾部进行匹配,从子KG中选择所有匹配良好的三元组,并迭代地将实体集扩展到4个跳跃点。以此构建本文的电影知识图谱。

为了确保实验结果的可靠性,本文对数据集做如下处理:首先过滤掉与用户交互次数小于5的项目;对数据集随机划分,90%作为训练集,10%作为测试集。

4.2 基线方法

本文将提出的算法与传统的方法以及基于RNN模型的方法作对比。基线方法描述如下:

(1)Item-KNN:为用户推荐与交互历史项目相似的Top-k个项目。

(2)Exp.Dec.Item-based k-NN[24]:在Item-KNN基础上加入了指数衰减分量,用来惩罚很久前交互的项目。

(3)Matrix Factorization (MF):是一种广泛使用的矩阵分解方法,它通过随机梯度下降优化成对排序目标函数。

(4)Seq.Matrix Factorization[25]:在MF的基础上加入用户交互序列信息,扩展为序列MF方法。

(5)GRU[2]:使用了标准的GRU(Gate Recurrent Unit)将用户交互的项目和其对应的动作一起嵌入学习用户的交互模式,最后输出用户下一个可能的交互项目。

(6)Caser[20]:通过卷积神经网络模拟用户的历史交互,并通过最小化交叉熵来优化整个网络。

4.3 参数设置

本节讨论在算法的设计与实验中,关键参数的设置。本文算法主要分为2个主要部分:项目嵌入和偏好学习。在项目嵌入过程中,获取知识图谱的随机游走次数,随机游走获得的序列长度与数据集中的平均长度保持一致。item2vec训练过程中,上下窗口大小window-d=4,嵌入维度d=300。在偏好学习过程中,模型的dropout率为0.1。

4.4 评估指标

由于推荐系统每次都只能推荐较少的项目,相关项目应该在推荐列表中排名第1。因此,本文使用以下2个评估指标评估个性化的下一项推荐质量:

(1)Recall@20:主要评估指标召回率,是所有测试案例中前20个推荐项目中具有所需项目的比例。其中,Recall@20不区分具有不同排名的项目,只要它们属于推荐列表即可。

(2)MRR@20:平均倒数排名MRR(Mean Reciprocal Rank),其是期望项目倒数排名的平均值。与Recall度量相同,本文将20设置为贡献值,这意味着如果排名高于20,则将倒数等级设置为零。考虑到推荐的顺序,MRR会考虑每个推荐项目的排名。

这2个评估指标越高,表示结果的表现越好。

4.5 实验结果及分析

4.5.1 整体性能分析

本节首先对推荐算法的整体推荐性能做分析,然后逐步分析本文算法的有效性。本文算法与基线方法的性能比较如表1所示。

Table 1 Overall performance analysis 表1 整体性能分析

为了证明本文算法的有效性,将KG-AttCNN与传统方法以及在同类型先进的下一项方法进行比较。表1所示为真实数据集MovieLens上本文算法与多种方法的结果。从表1实验结果可知,加入了时间因素和序列因素的推荐算法相比传统算法性能有所提升,Seq.Matrix Factorization与MF以及Exp.Dec.Item-based k-NN与Item-KNN的实验结果证明了考虑兴趣的衰减和动态变化的有效性。从整体来看,本文的KG-AttCRNN在推荐系统评价指标MRR以及Recall上明显优于其他所有方法的。结果表明,KG-AttCRNN擅长处理来自用户交互的个性化顺序信息。相比较传统的推荐算法,基于RNN和基于CNN的序列推荐有了显著的改进,这得益于知识图谱与卷积神经网络的有效设计。本文的KG-AttCRNN能区别性地融合用户历史偏好以及用户交互的时间间隔不一致性,从而产生高质量的个性化推荐。

4.5.2 知识图谱与注意力机制的影响

为了进一步验证本文算法的有效性,本节对算法中的每一部分进行实验分析,本文主要考虑的2个部分为知识图谱与自注意力机制。本文将不加入知识图谱嵌入,仅采用用户交互序列生成项目嵌入的序列推荐算法命名为AttCRNN;在兴趣偏好融合方法中未加入自注意力机制的序列推荐算法命名为KG-CRNN。与本文所提出的KG- AttCRNN做对比,实验结果如表2所示。

Table 2 Influence of KG and attention mechanism on algorithm performance 表2 KG和注意力机制对算法性能的影响

从表2实验结果可以得出,知识图谱与自注意力机制的加入能提高推荐算法的准确性。AttCRNN仅仅考虑了交互序列中项目的ID信息,并没有充分考虑项目自身的内容和属性信息,而知识图谱可以加入结构化信息,使得AttCRNN在项目表示时加入项目的内容信息和属性信息,能够更准确地描述项目,其推荐的准确性也得到了提高。其中,注意力机制的影响更大,在缺少注意力机制的情况下,用户的偏好仅采用隐藏状态向量的均值表示,注意力机制的加入能使算法对用户偏好进行个性化的优化。从实验结果中也能看出,使用CNN与RNN模型的融合能带来准确性的提升。

4.5.3 嵌入维度及算法冷启动分析

本节将对算法中的嵌入维度及算法冷启动进行分析,在其他参数不变的情况下,将嵌入维度设置成不同的值来探索其对推荐算法的影响,实验结果如表3所示。

Table 3 Impact of embedded dimensions on performance表3 嵌入维度对性能的影响

从表3中可以观察到,随着维度的升高,算法性能得到提升,但是嵌入达到一定的限度后主要的评价的指标Recall@20反而有所降低,而且2个评价指标表现出不同的变化趋势,最佳嵌入维度也不相同。嵌入维度过大可能导致数据的稀疏性,训练难度加大,进一步可能会导致过拟合发生。由于该算法的主要评价指标为召回率,所以本文算法设置嵌入维度为300与其他方法作对比。

本文将测试数据从用户的第2次交互开始一直到从第50次交互开始来检验算法的冷启动效果,实验结果如图5所示。

Figure 5 Performance analysis of algorithm cold start 图5 算法冷启动性能分析

本文提出的算法在新用户冷启动方面有先天的优势,相比较传统的协同过滤和矩阵分解需要大量的交互记录生成推荐,该算法可以用已经训练好的神经网络来适应新的网络。如图5所示,算法在新用户冷启动推荐上有较好的推荐效果,在用户交互记录不多时,算法退化为仅使用短期偏好进行推荐的CNN结构;随着用户交互记录的不断增多,算法的推荐效果不断提升,优于标准的GRU,证明了建模用户不同兴趣点的有效性。

4.6 算法优缺点分析

本文通过对基于RNN的推荐方法进行分析和改进,提出一种基于混合神经网络与知识图谱的序列推荐算法。算法具有推荐准确度高、能缓解数据稀疏性、缓解冷启动问题、推荐更具可解释性等优点。但是,算法相比基于RNN的算法加入了CNN、KG与注意力机制,导致算法需要较长的训练时间和更昂贵的硬件设备。

5 结束语

本文通过考虑推荐系统领域用户交互序列特殊的研究点,提出一种融合知识图谱与深度学习的细粒度序列推荐算法KG-AttCRNN。重点在于通过对序列的细粒度分析,详细地建模了用户的时间动态性和意图动态性,弥补了现有方法对此的忽略,最后的实验结果验证了本文算法的有效性。在未来,将考虑用户交互的项目更细致的信息,例如用户停留的时间、操作的次数等,更进一步地建模用户的偏好。

猜你喜欢
图谱卷积神经网络
基于3D-Winograd的快速卷积算法设计及FPGA实现
绘一张成长图谱
卷积神经网络的分析与设计
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于神经网络的中小学生情感分析
基于傅里叶域卷积表示的目标跟踪算法
补肾强身片UPLC指纹图谱
主动对接你思维的知识图谱
基于神经网络的拉矫机控制模型建立