摘自:https://blog.csdn.net/qq_40006058/article/details/89678866
DKN:Deep Knowledge-Aware Network for News Recommendation
1、 论文出处:www2018
2、 摘要:(背景):在线新闻推荐系统致力于在庞大的新闻数据中为用户提供个性化的新闻推荐。
(存在问题):一般情况下,新闻语言高度浓缩且主要由知识实体构成。已有的推荐方没有进行外部知识的抽象与学习,不能够充分地发掘新闻在知识层面的联系。
(自身工作):本文提出了一种将知识图谱实体嵌入表示与神经网络融合起来,进行新闻推荐的模型DKN。将新闻的语义表示与知识表示融合起来形成新的embedding表示,再建立从用户的新闻点击历史到候选新闻的attention机制,选出得分较高的新闻推荐给用户。
(实验结果表示):DKN模型在F1-score,AUC等指标上超过了现有的start-of-art模型。
3、 写作动机:
推荐系统最初是为了解决互联网信息过载的问题,帮助用户针推荐其感兴趣的内容并给出个性化的建议。新闻的推荐有三个要解决的突出问题:
1) 不同于电影,餐馆等产品的推荐,新闻文章具有高度的时间敏感性,它们的相关性很快就会在短时间内失效。 过时的新闻经常被较新的新闻所取代。 导致传统的基于ID的协同过滤算法失效。
2) 用户在阅读新闻的时候是带有明显的倾向性的,一般一个用户阅读过的文章会属于某些特定的主题,如何利用用户的阅读历史记录去预测其对于候选文章的兴趣是新闻推荐系统的关键 。
3) 新闻类文章的语言都是高度浓缩的,包含了大量的知识实体与常识。用户极有可能选择阅读与曾经看过的文章具有紧密的知识层面的关联的文章。
创新点:以往的模型只停留在衡量新闻的语义和词共现层面的关联上,本文在考虑语义的基础上,创造性地提出加入新闻之间知识层面的相似度量,来给用户更精确地推荐可能感兴趣的新闻。
4、 相关概念:
知识图谱网络嵌入(Knowledge Graph Embedding):
一个知识图谱由大量的结点以及节点之间的边组成,其中节点代表实体,边代表节点之间的关系,可以看作是许多三元组(head,relation,tail)构成的一个集合。针对知识图谱的网络嵌入目的是用一个低维稠密的向量来表示节点,保证该向量包含了节点间的相似性关系以及网络的结构信息。
CNN句子特征提取
本文所用于提取句子特征的CNN源自于Kim CNN,用句子所包含词的词向量组成的二维矩阵,经过一层卷积操作之后再做一次max-over-time的pooling操作得到句子向量,另外在本文中还使用了不同大小的卷积核得到多组不同的向量。
5、 问题定义:
给定义一个用户他的点击历史记为是该用户过去一段时间内层点击过的新闻的标题,代表用户点击过新闻的总数。每个标题都是一个词序列,标题中的每个单词都对应知识图谱中的一个实体 。举例来说,标题《Trump praises Las Vegas medical team》其中"Trump"与知识图谱中的实体“Donald Trump”即现任美国总统相对应,"Las"和"Vegas"与实体"Las Vegas"。本文要解决的问题就是给定用户的点击历史,以及标题单词和知识图谱中实体的关联,我们要预测的是:一个用户,是否会点击一个特定的新闻。
6、 DKN模型:
整体的网络架构如下:
DKN的网络输入有两个:候选新闻集合,用户点击过的新闻标题序列。
embedding层,都是用KCNN来提取特征,
之上是一个attention层,计算候选新闻向量与用户点击历史向量之间的attentention权重,在顶层拼接两部分向量之后,
用DNN计算用户点击此新闻的概率。
框架整体包括三部分:
6.1 知识提取(Knowledge Distillation)
过程分四步:
1.实体链接:识别出文本中的知识实体并利用实体链接技术消除歧义
2.利用识别出来的实体和关系,从原本知识图谱中得到一个子图。利用新闻文本中的实体与关系就构成了一个原来知识图谱的一个子图,本文把所有与文中的实体的链接在一个step之内的所有实体都扩展到该子图中来。
3 .在构建的子知识图谱上利用一些学习方法得到实体的表示。构建好知识子图以后,利用知识图谱嵌入技术得到每个实体的向量
4.根据实体向量得到对应单词的词向量
尽管目前现有的网络嵌入方法得到的向量保存了绝大多数的结构信息,但还有一定的信息损失,为了更好地利用一个实体在原知识图谱的位置信息,文中还提到了利用一个实体的上下文实体来表示该单词。一个实体 的上下文是指该实体在知识图谱网络中的邻居。,G是构建的知识图谱子图。上下文表示是上下文实体的embedding的平均值:
6.2 新闻特征提取KCNN
获得了标题中单词和对应实体的向量之后,相比于简单地把所有的向量拼接起来以后输入给CNN,本文使用的是multi-channel和word-entity-aligned KCNN。具体做法是先把实体的向量,和实体上下文向量映射到一个空间里:
, 映射的方式可以是线性变换或者非线性的变换如tanh。
得到映射之后的向量之后,将两种向量作为标题单词向量额外的通道,类似图像的RGB三个通道:
获得了多通道的词表示之后,再用CNN进行处理获取新闻标题的表示:
,其中m是卷积核的个数。
6.3 基于注意力机制的用户兴趣预测
获取到用户点击过的每篇新闻的向量表示以后,作者并没有简单地作加和来代表该用户,而是计算候选文档对于用户每篇点击文档的attention,再做加权求和,计算attention:
用户i对候选新闻k的表示:
得到用户表示和新闻表示以后用另外一个DNN来计算用户点击的概率:
七、实验
7.1 数据集
本文的数据来自bing新闻的用户点击日志,包含用户id,新闻url,新闻标题,点击与否(0未点击,1点击)。搜集了2016年10月16日到2017年7月11号的数据作为训练集。2017年7月12号到8月11日的数据作为测试集合。使用的知识图谱数据是Microsoft Satori。
7.2 评价指标
作者使用的评价指标为F1-score和AUC值
Baseline方法
1. LibFM 2. KPCNN 3. DSSM 4. DeepWide 5. DeepFM 6. YouTubeNet 7. DMF
八、结论:
本文是深度学习技术,在推荐系统领域的一个发展,重点放在了新闻推荐上,还融合了知识图谱表示的方法。对于新闻推荐中存在的问题和特点:新闻具有时效性和较多的实体,有针对性地提出了 DKN 模型,解决了三个挑战:
l DKN 是一个基于内容过滤的深度推荐系统模型;
l 为了利用知识图谱中的信息,通过 KCNN 来融合文本的语义层面、实体层面上的异构表示;
l 使用了注意力机制对用户的兴趣进行动态提取。
既然如此,能不能在一些 Baseline 实验上进行一些改进,也融合知识图谱、用户社交网络的信息呢?新闻的时效性是不是也可以通过 RNN 来处理,尤其是用户兴趣提取这块,用 RNN + 注意力机制可行吗?