DKN-基于知识图谱的推荐系统
知识图谱特征学习(Knowledge Graph Embedding)是最常见的与推荐系统结合的方式,知识图谱特征学习为知识图谱中的每个实体和关系学习到的一个低维向量,同时保持图中原有的结构或语义信息,最常见的得到低维向量的方式主要有基于距离的翻译模型和基于语义的匹配模型。
知识图谱技术与应用指南
知识图谱特征学习在推荐系统中的应用步骤大致有以下三种方式:
依次训练:首先使用知识图谱特征学习得到实体向量和关系向量,然后将这些低维向量引入推荐系统,学习得到用户向量和物品向量,方法主要有Deep Knowledge-aware Network(DKN)
联合训练:将知识图谱特征学习和推荐算法的目标函数结合,使用端到端(end-to-end)的方法进行联合学习,方法主要有Ripple Network
交替训练:将知识图谱特征学习和推荐算法视为两个分离但又相关的任务,使用多任务学习(multi-task learning)的框架进行交替学习。主要方法有Multi-task Learning for KG enhanced Recommendation (MKR)
DKN原理
1、背景
新闻推荐领域有三个待解决的问题:
- 新闻文章具有高度的时间敏感性,它们的相关性很快就会在短时间内失效。过时的新闻经常被较新的新闻所取代。 导致传统的基于ID的协同过滤算法失效。
- 用户在阅读新闻的时候是带有明显的倾向性的,一般一个用户阅读过的文章会属于某些特定的主题,如何利用用户的阅读历史记录去预测其对于候选文章的兴趣是新闻推荐系统的关键 。
- 新闻文本的特点是语言高度浓缩,并且包含有很多知识实体与常识。但是以往的模型却较少考虑新闻包含的外部知识,仅仅从语义层面(semantic level)进行表示学习,没有充分挖掘新闻文本在知识层面(knowledge level)的联系。
因此,本文提出了DKN模型。首先使用一种融合了知识的卷积神经网络KCNN,将新闻的语义表示与知识表示融合起来形成新的embedding表示,再建立从用户的新闻点击历史到候选新闻的attention机制,选出得分较高的新闻推荐给用户,来给用户更精确地推荐可能感兴趣的新闻。
2、基础概念
2.1、知识图谱特征学习(Knowledge Graph Embedding)
知识图谱特征学习(Knowledge Graph Embedding)为知识图谱中的每个实体和关系学习得到一个低维向量,同时保持图中原有的结构或语义信息。一般而言,知识图谱特征学习的模型分类两类:基于距离的翻译模型和基于语义的匹配模型。
基于距离的翻译模型(distance-based translational models)
这类模型使用基于距离的评分函数评估三元组的概率,将尾节点视为头结点和关系翻译得到的结果。这类方法的代表有TransE、TransH、TransR等;
基于语义的匹配模型(semantic-based matching models)
类模型使用基于相似度的评分函数评估三元组的概率,将实体和关系映射到隐语义空间中进行相似度度量。这类方法的代表有SME、NTN、MLP、NAM等。上述方法的核心是构造一个二分类模型,将h、r和t输入到网络中,如果(h,r,t)在知识图谱中真实存在,则应该得到接近1的概率,如果不存在,应该得到接近0的概率。
2.2、基于CNN的句子特征提取
DKN中提取句子特征的CNN源自于Kim CNN,用句子所包含词的词向量组成的二维矩阵,经过一层卷积操作之后再做一次max-over-time的pooling操作得到句子向量,如下图所示:3、问题定义
新闻标题和正文中通常存在大量的实体,实体间的语义关系可以有效地扩展用户兴趣。然而这种语义关系难以被传统方法(话题模型、词向量)发掘。
对于一个给定的用户,他的点击历史记为是该用户过去一段时间内曾点击过的新闻的标题,N代表用户点击过的新闻的总数。每个标题都是一个词序列,标题中的单词有的对应知识图谱中的一个实体。举例来说,标题《Trump praises Las Vegas medical team》其中Trump与知识图谱中的实体“Donald Trump”对应,Las和Vegas与实体Las Vegas对应。本文要解决的问题就是给定用户的点击历史,以及标题单词和知识图谱中实体的关联,要预测的是:一个用户i是否会点击一个特定的新闻。
4、模型框架
DKN模型整体框架如下:可以看到,DKN的网络输入有两个:候选新闻集合,用户点击过的新闻标题序列。输入数据通过KCNN来提取特征,之上是一个attention层,计算候选新闻向量与用户点击历史向量之间的attention权重,在顶层拼接两部分向量之后,用DNN计算用户点击此新闻的概率。
4.1 知识提取(Knowledge Distillation)
知识提取过程有三方面:一是得到标题中每个单词的embedding;二是得到标题中每个单词对应的实体的embedding;三是得到每个单词的上下文embedding。每个单词对应的embedding可以通过word2vec预训练的模型得到。这里主要介绍后两部分:
实体embedding
实体特征即标题中每个单词对应的实体的特征表示,通过以下四个步骤得到:
1、识别出标题中的实体并利用实体链接技术消除歧义;
2、根据已有知识图谱,得到与标题中涉及的实体链接在一个step之内的所有实体所形成的的子图;
3、构建好知识子图以后,利用基于距离的翻译模型得到子图中每个实体embedding;
4、得到标题中每个单词对应的实体embedding。
上下文embedding
尽管目前现有的知识图谱特征学习方法得到的向量保存了绝大多数的结构信息,但还有一定的信息损失,为了更准确地刻画实体,文中额外地使用一个实体的上下文实体特征(contextual entity embeddings)。一个实体e的上下文实体是e的所有一跳邻居节点,e的上下文实体特征为e的所有上下文实体特征的平均值:
4.2 新闻特征提取KCNN(Knowledge-aware CNN)
在知识抽取部分,得到了三部分的embedding,一种最简单的使用方式就是直接将其拼接:但此做法存在几方面的限制:
1、连接策略打破了单词和相关实体之间的联系,并且不知道它们的对齐方式;
2、单词的embedding和对应实体的embedding是通过不同的方法学习的,这意味着它们不适合在单个向量空间中将它们一起进行卷积操作;
3、连接策略需要单词的embedding和实体的embedding具有相同的维度,这在实际设置中可能不是最优的,因为词和实体embedding的最佳维度可能彼此不同。
因此本文使用的是multi-channel和word-entity-aligned KCNN。具体做法是先把实体的embedding和实体上下文embedding映射到一个空间里,映射的方式可以选择线性方式g(e) = Me,也可以选择非线性方式g(e) = tanh(Me + b),这样就可以拼接三部分多通道输入矩阵:
通过卷积神经网络,经过卷积层和池化层进行学习,最终得到输入新闻标题t的重表示:
4.3 基于注意力机制的用户兴趣预测
给定用户的点击历史,被点击的新闻embeddings可以表示为 。用户i当前候选新闻,可以简单表示为:
在判断用户对当前新闻的兴趣时,使用注意力网络(attention network)给用户历史记录分配不同的权重。通过softmax函数得到归一化的权重:用户i的embedding:通过另一个DNN得到用户i点击新闻的概率:
依次学习的优势在于知识图谱特征学习模块和推荐系统模块相互独立。在真实场景中,特别是知识图谱很大的情况下,进行一次知识图谱特征学习的时间开销会很大,而一般而言,知识图谱远没有推荐模块更新地快。因此可以先通过一次训练得到实体和关系向量,以后每次推荐系统模块需要更新时都可以直接使用这些向量作为输入,而无需重新训练。
依次学习的缺点也正在于此:因为两个模块相互独立,所以无法做到端到端的训练。通常来说,知识图谱特征学习得到的向量会更适合于知识图谱内的任务,比如连接预测、实体分类等,并非完全适合特定的推荐任务。在缺乏推荐模块的监督信号的情况下,学习得到的实体向量是否真的对推荐任务有帮助,还需要通过进一步的实验来推断。