Ref:如何将知识图谱特征学习应用到推荐系统?算法
将知识图谱做为辅助信息引入到推荐系统中能够有效地解决传统推荐系统存在的稀疏性和冷启动问题,近几年有不少研究人员在作相关的工做。目前,将知识图谱特征学习应用到推荐系统中主要经过三种方式——依次学习、联合学习、以及交替学习。网络
依次学习(one-by-one learning)。首先使用知识图谱特征学习获得实体向量和关系向量,而后将这些低维向量引入推荐系统,学习获得用户向量和物品向量;框架
咱们以新闻推荐[1]为例来介绍依次学习。以下图所示,新闻标题和正文中一般存在大量的实体,实体间的语义关系能够有效地扩展用户兴趣。然而这种语义关系难以被传统方法(话题模型、词向量)发掘。函数
为了将知识图谱引入特征学习,遵循依次学习的框架,咱们首先须要提取知识图谱特征。该步骤的方法以下:性能
实体链接(entity linking)。即从文本中发现相关词汇,并与知识图谱中的实体进行匹配;学习
知识图谱构建。根据全部匹配到的实体,在原始的知识图谱中抽取子图。子图的大小会影响后续算法的运行时间和效果:越大的子图一般会学习到更好的特征,可是所需的运行时间越长;优化
知识图谱特征学习。使用知识图谱特征学习算法(如TransE等)进行学习获得实体和关系向量。编码
须要注意的是,为了更准确地刻画实体,咱们额外地使用一个实体的上下文实体特征(contextual entity embeddings)。一个实体e的上下文实体是e的全部一跳邻居节点,e的上下文实体特征为e的全部上下文实体特征的平均值:翻译
下图的绿色椭圆框内即为“Fight Club”的上下文实体。设计
获得实体特征后,咱们的第二步是构建推荐模型,该模型是一个基于CNN和注意力机制的新闻推荐算法:
基于卷积神经网络的文本特征提取:将新闻标题的词向量(word embedding)、实体向量(entity embedding)和实体上下文向量(context embedding)做为多个通道(相似于图像中的红绿蓝三通道),在CNN的框架下进行融合;
基于注意力机制的用户历史兴趣融合:在判断用户对当前新闻的兴趣时,使用注意力网络(attention network)给用户历史记录分配不一样的权重。
该模型在新闻推荐上取得了很好的效果:DKN取得了0.689的F1值和0.659的AUC值,并在p=0.1水平上比其它方法取得了显著的提高。
咱们也能够经过注意力权重的可视化结果看出,注意力机制的引入对模型的最后输出产生了积极的影响。因为注意力机制的引入,DKN能够更好地将同类别的新闻联系起来,从而提升了最终的正确预测的数量:
依次学习的优点在于知识图谱特征学习模块和推荐系统模块相互独立。在真实场景中,特别是知识图谱很大的状况下,进行一次知识图谱特征学习的时间开销会很大,而通常而言,知识图谱远没有推荐模块更新地快。所以咱们能够先经过一次训练获得实体和关系向量,之后每次推荐系统模块须要更新时均可以直接使用这些向量做为输入,而无需从新训练。
依次学习的缺点也正在于此:由于两个模块相互独立,因此没法作到端到端的训练。一般来讲,知识图谱特征学习获得的向量会更适合于知识图谱内的任务,好比链接预测、实体分类等,并不是彻底适合特定的推荐任务。在缺少推荐模块的监督信号的状况下,学习获得的实体向量是否真的对推荐任务有帮助,还须要经过进一步的实验来推断。
联合学习的核心是将推荐算法和知识图谱特征学习的目标融合,并在一个端到端的优化目标中进行训练。咱们以CKE[2]和Ripple Network[3]为例介绍联合学习。
在推荐系统中存在着不少与知识图谱相关的信息,以电影推荐为例:
结构化知识(structural knowledge),例如导演、类别等;
图像知识(visual knowledge),例如海报、剧照等;
文本知识(textual knowledge),例如电影描述、影评等。
CKE是一个基于协同过滤和知识图谱特征学习的推荐系统:
CKE使用以下方式进行三种知识的学习:
结构化知识学习:TransR。TransR是一种基于距离的翻译模型,能够学习获得知识实体的向量表示;
咱们将三种知识学习的目标函数与推荐系统中的协同过滤结合,获得以下的联合损失函数:
使用诸如随机梯度降低(SGD)的方法对上述损失函数进行训练,咱们最终能够获得用户/物品向量,以及实体/关系向量。CKE在电影推荐和图书推荐上取得了很高的Recall值和MAP值:
Ripple的中文翻译为“水波”,顾名思义,Ripple Network模拟了用户兴趣在知识图谱上的传播过程,整个过程相似于水波的传播:
一个用户的兴趣以其历史记录中的实体为中心,在知识图谱上向外逐层扩散;
一个用户的兴趣在知识图谱上的扩散过程当中逐渐衰减。
下图展现了用户兴趣在知识图谱上扩散的过程。以一个用户看过的“Forrest Gump”为中心,用户的兴趣沿着关系边能够逐跳向外扩展,并在扩展过程当中兴趣强度逐渐衰减。
下图展现了Ripple Network的模型。对于给定的用户u和物品v,咱们将历史相关实体集合V中的全部实体进行类似度计算,并利用计算获得的权重值对V中实体在知识图谱中对应的尾节点进行加权求和。求和获得的结果能够视为v在u的一跳相关实体中的一个响应。该过程能够重复在u的二跳、三跳相关实体中进行,如此,v在知识图谱上便以V为中心逐层向外扩散。
最终获得的推荐算法和知识图谱特征学习的联合损失函数以下:
相似于CKE,咱们在该损失函数上训练便可获得物品向量和实体向量。须要注意的是,Ripple Network中没有对用户直接使用向量进行刻画,而是用用户点击过的物品的向量集合做为其特征。Ripple Network在电影、图书和新闻的点击率预测上取得了很是好的效果:
咱们将Ripple Network的计算结果可视化以下。能够看出,知识图谱链接了用户的历史兴趣和推荐结果,其中的若干条高分值的路径能够视为对推荐结果的解释:
联合学习的优劣势正好与依次学习相反。联合学习是一种端到端的训练方式,推荐系统模块的监督信号能够反馈到知识图谱特征学习中,这对于提升最终的性能是有利的。可是须要注意的是,两个模块在最终的目标函数中结合方式以及权重的分配都须要精细的实验才能肯定。联合学习潜在的问题是训练开销较大,特别是一些使用到图算法的模型。
推荐系统和知识图谱特征学习的交替学习相似于多任务学习的框架。该方法的出发点是推荐系统中的物品和知识图谱中的实体存在重合,所以两个任务之间存在相关性。将推荐系统和知识图谱特征学习视为两个分离可是相关的任务,采用多任务学习的框架,能够有以下优点:
二者的可用信息能够互补;
知识图谱特征学习任务能够帮助推荐系统摆脱局部极小值;
知识图谱特征学习任务能够防止推荐系统过拟合;
知识图谱特征学习任务能够提升推荐系统的泛化能力。
MKR[4]的模型框架以下,其中左侧是推荐任务,右侧是知识图谱特征学习任务。推荐部分使用用户和物品的特征表示做为输入,预测的点击几率做为输出。知识图谱特征学习部分使用一个三元组的头结点和关系表示做为输入,预测的尾节点表示做为输出。
因为推荐系统中的物品和知识图谱中的实体存在重合,因此两个任务并不是相互独立。咱们在两个任务中设计了交叉特征共享单元(cross-feature-sharing units)做为二者的链接纽带。
交叉特征共享单元是一个可让两个任务交换信息的模块。因为物品向量和实体向量其实是对同一个对象的两种描述,他们之间的信息交叉共享可让二者都得到来自对方的额外信息,从而弥补了自身的信息稀疏性的不足。
MKR的总体损失函数以下:
在实际操做中,咱们采用交替训练的方式:固定推荐系统模块的参数,训练知识图谱特征学习模块的参数;而后固定知识图谱特征学习模块的参数,训练推荐系统模块的参数:
MKR在电影、图书和新闻推荐上也取得了不错的效果,其F1@K指标在绝大多数状况下都超过了baseline方法:
交替学习是一种较为创新和前沿的思路,其中如何设计两个相关的任务以及两个任务如何关联起来都是值得研究的方向。从实际运用和时间开销上来讲,交替学习是介于依次学习和联合学习中间的:训练好的知识图谱特征学习模块能够在下一次训练的时候继续使用(不像联合学习须要从零开始),可是依然要参与到训练过程当中来(不像依次学习中能够直接使用实体向量)。
知识图谱做为推荐系统的一种新兴的辅助信息,近年来获得了研究人员的普遍关注。将来,知识图谱和时序模型的结合、知识图谱和基于强化学习的推荐系统的结合、以及知识图谱和其它辅助信息在推荐系统中的结合等相关问题仍然值得更多的研究。欢迎感兴趣的同窗经过留言与咱们互动沟通。
参考文献
[1] DKN: Deep Knowledge-Aware Network for News Recommendation.
[2] Collaborative knowledge base embedding for recommender systems.
[3] Ripple Network: Propagating User Preferences on the Knowledge Graph for Recommender Systems.
[4] MKR: A Multi-Task Learning Approach for Knowledge Graph Enhanced Recommendation.