王钰蓥,王 勇
(北京工业大学信息学部,北京 100124)
随着信息社会的飞速发展,人们可以方便地从各种渠道获取到丰富的信息,但在面对庞杂的数据时,很难在较短时间内筛选出有效信息,并做出相应判断。在这种情况下,推荐算法的产生为人们解决了这一难题[1]。推荐算法可以利用互联网工具,在庞大的数据中个性化地提取出有效信息,从而为人们提供精准的服务,以此来满足用户的需求[2]。推荐系统可以在用户无明确需求的情况下,根据用户的历史行为做出合理的推荐[3]。并且在用户使用推荐系统的同时,及时记录下用户的行为数据,为后续推荐提供数据来源。
传统的协同过滤推荐系统[4-6],主要利用了用户和物品的属性信息,并且依赖用户的行为来进行物品推荐,在算法准确性上有显著的提高,但依然存在冷启动和可解释性等问题[7]。然而,这在提升算法的准确率和召回率方面尤为重要,因此,引入基于模型的推荐算法。基于模型的推荐算法,多是将原始数据信息输入到已构建好的深度学习模型当中,进行模型训练,得出推荐结果。而由于深度学习模型原本就存在一定程度上的不可解释问题,因此引入知识图谱的概念[8],知识图谱作为先验知识,可以为推荐算法提供语义特征。通过构建专业领域知识图谱,将带有语义的数据输入到模型当中,从而解决模型的可解释性差问题。
目前,基于知识图谱的推荐算法主要是利用知识图谱表示技术或知识图谱元路径提取技术[9-10]。基于知识图谱表示技术的推荐算法,主要是利用原始数据集构建知识图谱,利用建模的方式将结点和关系在向量空间中进行表示,通过计算从而生成低维稠密向量。Zhang等人[11]利用embedding将交互信息、文本、图片进行编码,提取出多类型的语义特征,与推荐物品相融合,提出CKE框架,充分学习物品的各属性特征,从而提高算法的准确性。Wang等人[12]提出了CDL模型,利用知识图谱表示学习得到物品结构化信息,并利用去噪编码器网络学习编码层文本表示向量和视觉表示向量,并将这些表示向量与物品的潜在因子向量相结合,利用矩阵分解算法完成推荐。但其问题在于关系类型较少且实体间关系较为稠密,导致推荐的准确性不佳。Wang等人[13]提出了DKN模型,利用知识图谱表示技术以及卷积神经网络对句子进行学习,并加入注意力机制,实现新闻推荐。但这些模型并未有效解决算法的可解释性以及冷启动等问题。
基于知识图谱元路径提取技术的推荐算法,主要是利用已构建好的知识图谱不同结点之间的连通性,来提取出不同的路径信息,并结合协同过滤模型进行推荐。Qian等人[14]提出了一种全新的路径相似度计算方法PathSim,通过计算不同路径的相似程度得出相似物品,从而进行推荐。Shi等人[15]提出了一种基于元路径的策略,利用带权元路径来对路径相似度进行计算,构造带有权重的正则化项损失函数,来进行模型训练。Wang等人[16]提出了RippleNet模型,将知识图谱中的路径以及结点信息作为额外的知识加入到推荐算法中,将用户对某一物品的喜好理解为水波传播,以某一用户作为中心,不断向外发散,对各层发散结果进行相似度计算,并融合各层结果,得出最终预测值,实现物品推荐,但无法有效地解决算法的冷启动问题。
因此,本文提出一种基于知识图谱和Bi-LSTM(双向循环神经网络)的推荐算法KG-BiLSTM,将知识图谱嵌入技术和知识图谱元路径提取技术相结合,在提升算法准确率的同时,解决算法的可解释性和冷启动问题。在MovieLens-1M和Yelp数据集上进行大量实验,实验表明该算法与主流推荐算法相比,在精确率、召回率和MRR指标上有较大提升。该算法主要工作有如下几个方面:
1)以有向图的形式构建专业领域知识图谱,将用户属性信息与物品属性信息作为不同类型的结点加入到知识图谱当中。并利用知识图谱元路径提取技术,提取出知识图谱中不同用户-物品的路径信息,存储于路径信息文件当中。
2)将不同路径的相应结点信息进行编码,生成嵌入向量,将各路径的各结点嵌入向量输入到Bi-LSTM当中,根据前后结点的信息,生成Bi-LSTM隐藏层向量,使整条路径具有语义含义。
3)为充分捕捉到较远距离结点的信息,引入注意力机制,将每条路径中的各结点隐藏层向量输入到注意力机制当中,从而进一步提升预测的准确性。
4)将各路径信息输入到平均池化层中,用于区分不同路径的重要程度。对不同路径的预测信息进行融合,利用交叉熵损失函数进行模型训练,不断更新模型参数,得出最终预测结果。
5)将本文提出的KG-BiLSTM推荐算法与主流基于知识图谱的推荐算法在MovieLens-1M和Yelp数据集上进行对比实验,并根据原始数据集,设置用户评分小于4的集合为冷启动数据集。根据Precision、Recall和MRR指标以及可解释性分析,验证该算法在原始数据集和冷启动数据集上均可有效提升推荐算法的准确性,并对推荐结果做出合理解释。
知识图谱最早的应用是提升搜索引擎的能力,提高用户的搜索质量,其概念最早是由Google于2012年5月17日提出。随后在智能问答、自然语言处理、推荐算法、数据分析等场合被广泛应用。
知识图谱[17]实质上是一个语义网络,由图的形式来形象地描述不同事物之间的关系,通常由节点和边组成。知识图谱中的节点用于表示实体和概念。实体是出现在知识图谱中的各类具体结点,概念是具有相同属性的某一类结点的集合。知识图谱中的边表示不同结点之间的关系和属性。知识由三元组(h,r,t)进行表示,其中h为头实体,r为关系,t为尾实体,一个完整的知识图谱需要由若干个不同的三元组构成。在知识图谱表示学习中,通常是将知识图谱嵌入到模型中,通过模型训练,使h+r≈t,从而得到知识的低维向量表示。而知识图谱元路径提取通常是提取出整条路径的结点信息,将路径结点信息输入到模型中进行训练,生成整条路径的低维向量,从而赋予路径特定语义[18]。
长短期记忆网络LSTM是一种循环神经网络的变形[19]。主要是为了解决传统循环神经网络中存在的长依赖问题,适用于处理间隔时间较长的事件。LSTM内部结构如图1所示。该结构由3个门控单元和1个细胞状态组成。其中细胞状态为ct,类似一个链式结构,用于整合和记录信息。而门控单元用于选择信息是否允许通过以及通过量,以此来控制细胞状态。门控单元分别为输入门it、遗忘门ft和输出门ot。输入门决定需要更新的信息,遗忘门决定需要覆盖哪些信息,而输出门决定哪些信息被输出。由于LSTM拥有处理较长时间间隔信息的特性,因此被应用于知识图谱当中,可根据路径的选择来记录结点信息,用于后续模型输入。
图1 LSTM内部结构图
注意力机制最初被应用于机器翻译领域,目前在人工智能领域,注意力机制可融合多种神经网络模型,在自然语言处理、推荐系统、统计学习等方面有较为广泛的应用。
注意力机制[20]类似人类的视觉机制,在对某事物进行观察时,通常倾向于关注较为重要的信息,而忽视相关度较低的信息,从而有助于做出最终决策。基于此原理,注意力机制可根据输入信息,对其重要性权值进行计算,将得到的重要性权值与输入信息相乘,再将乘以不同权值的输入信息相加,得出最终的注意力向量。其模型如图2所示。
图2 注意力机制模型图
利用该模型可实现将不同结点的特征信息进行有效融合,从而防止因路径过长导致较远结点特征无法完整提取的问题。
本章将详细描述Bi-LSTM推荐算法的主要内容。该模型主要分为5层:预处理层、嵌入层、Bi-LSTM层、注意力层、预测层(包括池化层和全连接层)。基于知识图谱和Bi-LSTM推荐算法的模型如图3所示。该算法首先将获取到的数据集进行分类预处理,对于每个用户和物品结点赋予唯一的id值,并构建一个有向图,将用户结点、物品结点、用户各属性结点以及物品各属性结点添加到有向图中,并用边对各属性和关系相连,接着构建专业领域知识图谱。对已构建好的知识图谱,提取每个用户-物品对的多条路径信息,设置路径条数最大值,将提取出的路径信息统一存储到文件中,作为后续模型的输入。其次,对各用户、物品及其属性信息进行编码,生成嵌入向量。然后,构建双向循环神经网络,将各路径的嵌入向量依次输入到神经网络当中,进行模型训练。同时引入注意力机制,充分获取前端较远结点的特征信息。最后,将各条路径的隐藏层向量输入到平均池化层中,根据路径的重要性程度进行向量整合,并利用交叉熵损失函数完成模型训练。
图3 基于知识图谱和Bi-LSTM的推荐算法模型
推荐算法通常是根据用户对物品的已评分信息预测未被评分物品的分值,算法的原始数据主要分为用户集合U={U1,U2,…,Ui}和物品集合V={V1,V2,…,Vj},其中i为用户总数,j为物品总数。将用户与物品的交互信息存储于矩阵Ri×j中,若rij=1则表示用户i对物品j产生过交互,若rij=0则表示用户i对物品j未产生过交互。
将用户、物品及其属性信息映射到知识图谱KG当中,用有向图的形式来对知识图谱进行存储,头实体和尾实体对应有向图中的结点,关系对应有向图的边。由于知识图谱是由多个三元组组成,因此每个用户-物品交互信息可表示为(U, interact,V)三元组的形式,interact表示用户对物品产生过交互。并且物品-属性信息同样也可表示为三元组形式,将物品属性信息以结点的形式添加到知识图谱中。
对已构建好的知识图谱提取不同用户-物品对的多条路径信息,将路径信息进行编码,输入到模型中训练出相应的用户和物品预测向量,对预测向量相乘从而得到每个用户-物品的预测值,生成top-N推荐列表[21],将预测推荐列表与用户已交互的列表进行比对,以此来计算出模型的精确率和召回率。
2.2.1 预处理层
2.2.2 嵌入层
引入嵌入层的目的是在于将高维稀疏的特征向量转换成低维向量,便于模型输入。对于预处理层中涉及的各个结点ei,首先生成预编码向量。针对已构建好的路径,提取路径中涉及的各个结点,将其输入嵌入层中,进行模型训练。利用嵌入层生成每个结点相对应的嵌入向量en={en1,en2,en3,…,enr},r表示嵌入向量的维数。从而将每个结点表示成低维向量的形式。每个嵌入向量中的各个分量代表结点的特征,将含有结点特征的嵌入向量输入隐藏层中,使路径包含一定的语义信息。
2.2.3 Bi-LSTM层
将每个用户-物品对的各条路径信息,按其结点的先后顺序依次输入到双向循环神经网络当中,考虑到前端结点与末尾结点距离较远,本文采用Bi-LSTM模型,可以充分融合前端结点的特征信息,从而保证特征提取的完整性。其中双向循环神经网络Bi-LSTM如图4所示。
图4 双向循环神经网络Bi-LSTM模型图
it=σ(Wi[ht-1,xt]+bi)
(1)
ft=σ(Wf[ht-1,xt]+bf)
(2)
(3)
(4)
ot=σ(Wo[ht-1,xt]+bo)
(5)
ht=ot×tanh(ct)
(6)
其中,Wi、Wf、Wc、Wo分别为输入门权重、遗忘门权重、细胞状态权重和输出门权重。bi、bf、bc、bo分别为输入门偏置、遗忘门偏置、细胞状态偏置和输出门偏置。xt为当前时刻网络的输入值,ht-1,ct为上一时刻LSTM网络的输出值和细胞状态值。σ代表sigmoid函数,tanh为双曲正切激活函数。通过梯度下降法进行迭代,更新模型参数。将嵌入层已编码的向量输入到Bi-LSTM当中进行训练。
2.2.4 注意力层
对于神经网络已训练出的向量,引入一层注意力机制,目的是为了根据路径中不同结点的重要性程度进行向量融合,注意力层公式定义如下:
am=softmax(ot×ht)
(7)
Am[ij]=am·ot
(8)
其中,ot为Bi-LSTM层的输出向量,ht为Bi-LSTM层的隐藏向量,am为某用户-物品对的第m条路径的注意力向量,将求得的注意力向量与Bi-LSTM层输出向量相乘,得到某用户-物品对的第m条路径的注意力层向量Am[ij]。利用注意力层将路径中出现的每个结点信息按其重要性程度充分融合,保证路径中结点信息的完整性。
2.2.5 预测层
预测层包含池化层和全连接层2个部分。
首先将输出的注意力层向量输入到平均池化层,用于区分某用户-物品对不同路径的重要程度,使模型对不同语义赋予不同的重要性权值。其具体公式如下:
h[ij]=avg(Am[ij])
(9)
其中,m表示用户-项目对第m条路径,Am[ij]为每个(Ui,Vj)数对的第m条路径注意力层向量。h[ij]为经过平均池化层后,各路径表示的平均值。
然后,在平均池化层后加入一层全连接层,对向量进行降维,其公式如下:
Oij=f(h[ij])=σ(Wf·h[ij]+bf)
(10)
其中,f(h[ij])为以h[ij]作为自变量的全连接层函数,Wf为全连接层系数,bf为全连接层偏置,其值根据模型训练结果动态调整。σ为sigmoid激活函数,Oij为最终的预测向量。
最后将经过平均池化层后的向量与全连接层系数相乘,加上全连接层偏置,最终得到预测向量。
本文利用BCELoss()交叉熵损失函数对模型进行训练[22]。交叉熵损失函数具体公式如下:
(11)
其中,i代表某个用户i,N代表用户总数。Oij表示(Ui,Vj)对的最终预测向量,tij表示(Ui,Vj)对的目标向量,若(Ui,Vj)数对存在于正向路径信息文件中,则tij为1,否则,tij为0。log()为对数函数。loss(o,t)为以oij作为输入向量,tij作为目标向量的损失函数值。
本文算法流程如算法1所示。
算法1 KG-BiLSTM算法
输入:用户-物品交互矩阵R、物品属性信息、用户、物品和物品属性的预编码向量。
输出:根据预测值生成用户U对物品V的top-N推荐列表。
1)构建知识图谱KG。将用户-物品交互矩阵R和物品属性信息中涉及的物品及其属性以结点的形式添加到有向图中并用边对结点相连。
2)提取知识图谱KG中不同用户-物品对的路径信息。
3)将已提取到的路径信息输入到嵌入层中,利用embedding生成嵌入向量。
4)将各路径中涉及的结点嵌入向量输入到Bi-LSTM层中,利用式(1)~式(6)计算出各结点的Bi-LSTM层隐藏向量。
5)将每条路径上的各结点隐藏向量,输入到注意力层中,用于融合较远结点的属性信息,利用式(7)~式(8)计算得出整条路径的注意力层向量。
6)整合各条路径的注意力层向量,将该向量输入到平均池化层中,利用式(9)对不同路径的重要性程度进行区分,根据重要性权值对多条路径向量进行融合。
7)将生成的平均池化层向量输入到全连接层中,用于对向量进行降维,利用式(10)计算得出用户-物品对的最终预测向量。
8)利用式(11)计算出模型的损失函数值。
9)利用SGD优化器对参数进行梯度更新,通过不断训练,更新模型参数值,以达到使损失函数最小化的目的。
3.1.1 实验数据集
本文选用MovieLens-1M和Yelp作为实验数据集。MovieLens-1M数据集是目前推荐算法研究领域应用最为广泛的数据集。它是由MovieLens用户提供的电影评分信息组成,其中包含了756684条匿名的评分数据,共涉及6040个用户以及3382个电影。Yelp数据集中包含了不同的地理位置信息,适用于对位置进行推荐,其中包含了229178条评分数据,涉及37940个用户和11516个物品。数据集具体信息如表1所示。
表1 数据集详细信息
3.1.2 评价指标
本文对上述2个数据集分别通过计算模型精确率和召回率来对模型性能进行评价。利用推荐算法对物品进行评分预测,将评分由高到低进行排序,得出某个用户的Top-N推荐列表[23]。精确率是针对预测结果而言,被预测为正样本占真正正样本的比重。召回率是针对原样本而言,被预测为正样本占总测试样本的比重[24]。其公式如下:
(12)
(13)
其中,R(u)表示根据用户u在训练集上的偏好行为得出的推荐列表,T(u)表示用户u在测试集上的推荐列表。
另外本文还采用了MRR(Mean Reciprocal Rank)指标来对该推荐算法性能进行评估。MRR是指被预测为正样本的结果值在预测结果中的排名。其公式如下:
(14)
其中,|Q|是用户总数,ranki是用户i在推荐列表中第一个被推荐物品在用物品列表中的位置。
本节将针对上述提到的算法进行对比实验。实验包括每个用户-物品对路径条数的选取,每个用户-物品对路径长度的选取,以及本文算法与目前较为先进算法的实验对比。本文将输入向量维度设置为10,隐藏层向量维度设置为16,输出向量维度设置为1,学习率learning_rate设置为0.2,模型迭代次数设置为10。并且利用SGD优化器来对模型进行优化。
3.2.1 路径条数选取
本文路径条数在{5,10,20}中选取。Top-N推荐中,N的值设置为{5,10},其中召回率Recall和MRR均为N=10时的实验结果。本文实验结果如表2所示。
表2 选取不同路径条数的实验结果
由表2实验结果可以看出,Yelp数据集的预测精确率、召回率和MRR均比MovieLens-1M数据集低,这是由于Yelp相比MovieLens-1M数据集更稀疏,因此其预测精确率更低。除此之外,随着路径条数的增多,在2个数据集上的预测精确率也在随之增高,这是由于多条路径信息的引入丰富了实体的语义信息,对于某一用户而言,可更加全面地学习到多条路径的特征。但当路径条数为15时,引入过多的路径条数,会使无关路径信息增加,影响预测的精确率。从本文实验结果中可观察到,当路径条数为10时,2个数据集的精确率和召回率到达了最优值,因此本文选取10作为最终路径条数。
3.2.2 路径长度选取
本文路径长度在{3,5,7}中进行选取,并且N的值同样设置为{5,10},召回率Recall和MRR均为N=10时的实验结果,路径条数设置为10。实验结果如表3所示。
表3 选取不同路径长度的实验结果
由表3实验数据可以看出,随着路径长度的增加,在2个不同数据集上的预测精确度和召回率都有所增加。这是由于随着路径长度的增加,由该路径学习得到的特征也在增加,因此可以融合多种实体特征从而增强预测的精确性。但当路径长度为7时,2个数据集的预测精确性和召回率开始下降,这是由于选取较长的路径,会引入过多的远距离结点信息,导致引入更多的无关结点,从而影响预测的精确率。因此,本文选取5作为最终路径长度。
3.2.3 不同模型对比结果
本节将本文提出的KG-BiLSTM算法与目前主流推荐算法相比较,其中用于对比实验的推荐算法包括:
1)基于嵌入的协同知识库推荐算法CKE。该算法在数据集层以有向图的形式构建知识图谱,在嵌入层对知识图谱利用TransR算法进行知识嵌入,得到低维向量,协同过滤层整合图谱、文本、图片等各类型向量信息,结合协同过滤算法进行推荐结果预测。
2)基于知识图谱嵌入的推荐算法MKR。该算法主要是利用知识图谱嵌入技术,结合传统的矩阵分解算法以及深度神经网络,来进行模型预测。
3)基于协同深度学习的推荐算法CDL。该算法抽取实体中的特征信息,通过计算不同物品、用户之间的相似度来进行物品推荐。
4)深度知识感知推荐算法DKN。该算法利用TransE对实体、单词和上下文信息进行编码,生成特征向量,将卷积神经网络与注意力机制相融合进行推荐。
5)基于用户偏好传播的推荐算法RippleNet。这是基于知识图谱路径的推荐算法,将用户对物品的交互信息按层进行扩散,结合多层扩散结果实现推荐结果预测。
本文针对各个算法的预测精确率、召回率和MRR指标进行实验,得出在MovieLens-1M数据集上关于Precision@5和Precision@10的实验结果如表4所示。在Yelp数据集上关于Precision@5和Precision@10的实验结果如表5所示。
表4 MovieLens-1M数据集上的不同模型精确率对比结果
表5 Yelp数据集上的不同模型精确率对比结果
由多种模型对比实验得出,本文提出的KG-BiLSTM算法和RippleNet算法的预测精确率均比其他基于知识图谱嵌入技术算法的精确率更高,这是因为基于知识图谱路径的推荐算法,不仅局限于学习知识的嵌入向量,更重要的是引入了路径信息的概念,将路径信息与知识的嵌入相结合,利用模型搭建,学习到整条路径的向量表示,由此来更好地融合多特征信息,因此预测精确率高于其他几种算法。并且本文由于考虑到较远结点特征信息无法全面有效地融入到向量种的问题,因此引入了双向循环神经网络,对整条路径的特征进行前向和后向的双向特征提取,除此之外,加入了一层注意力机制,更好地将前端结点特征融合到路径特征向量之中,因此本文提出的算法预测精确率较RippleNet算法更高,当N=10时,2个数据集的精确率较RippleNet分别高出3.76%和4.02%。
不同算法模型在召回率Recall和MRR指标上的实验对比结果如图5、图6和表6所示。
图5 MovieLens-1M数据集上不同模型的Recall对比结果
图6 Yelp数据集上不同模型的Recall对比结果
表6 2种数据集上不同模型的MRR@10对比结果
根据图5、图6和表6实验对比结果可以看出,本文提出的KG-BiLSTM和RippleNet算法在2种数据集上的召回率Recall和MRR指标方面,整体上高于其他4种对比算法,这是由于引入了多种路径信息,而不仅是考虑对实体进行嵌入向量的训练。除此之外,本文提出的算法在2种数据集上的召回率和MRR都优于其他算法,这是由于本文提出的算法,将知识图谱嵌入向量和路径提取相结合,并考虑较远路径结点的问题,从而保证实体信息的全面获取,从而为用户提供更加精准的Top-N推荐。当N=10时,2个数据集在召回率上较主流算法RippleNet提高了3.06%和3.09%。在MRR上提高了2.60%和2.35%。证实了本文算法的有效性。
本文由于引入了知识图谱路径的概念,而知识图谱天生具有可解释性,因此可以为用户推荐的Top-N列表提供一定的可解释性。由于推荐算法的可解释性提高,可更加有效地帮助用户理解推荐行为,从而使用户更加信任该推荐,增加用户接受被推荐物品的概率。因此提高推荐算法的可解释性对于推荐质量而言十分重要。本节以一个具体的推荐实例,来详细阐述推荐的可解释性。具体实例如图7所示。
图7 算法可解释性分析图
除此之外,由于用户对其他拥有不同类型、导演、演员的电影同样感兴趣,因此该模型可从不同的角度来分析推断出用户U1的具体偏好,并生成相应的推荐列表。并且,对于推荐列表中的每一部预测电影来说,都是由多条路径的不同属性融合得出的推荐结果,而不仅由单一的路径生成。因此这意味着,对于每个预测结果来说,用户-物品的交互信息会受到不同路径不同属性信息的影响,本文模型可有效对多路径的重要性进行区分,从而有效地提高推荐的精确率,并为推荐结果提供合理解释。
本文选取用户评分小于等于4的用户-项目对作为冷启动数据集,进行实验分析。实验参数与3.2节实验参数设置相同,该算法与其他主流算法在2种冷启动数据集上的算法精确率Precision、召回率Recall和MRR实验结果如表7和表8所示。
表7 MovieLens-1M数据集上不同模型的实验对比结果
表8 Yelp数据集上不同模型的实验对比结果
由表7和表8实验结果可以看出,本文提出的算法在MovieLens-1M冷启动数据集上的实验结果优于其他主流模型,而在Yelp冷启动数据集上的Percision@10实验结果略低于RippleNet模型,存在的原因是由于Yelp冷启动数据集的知识图谱较为稀疏,无法有效地获取到全面的知识图谱路径信息,因此相比主流模型精确率略低。
本文针对推荐算法中存在的可解释性和冷启动等问题提出了KG-BiLSTM算法,该算法将知识图谱实体嵌入和路径提取相结合,并充分考虑路径中各个结点的特征信息,针对用户已交互的物品,根据其各结点的类型,学习不同路径的特征,并最终进行向量融合,实现Top-N预测。该模型在2个真实数据集上进行了实验分析,其结果均优于目前主流算法。在未来,还将考虑融入用户结点的属性信息,从而进一步提高算法的预测精确率。