摘自: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 + 注意力机制可行吗?

18、DKN(Deep Knowledge-Aware Network for News Recommendation)---新闻推荐的更多相关文章

  1. 1 - ImageNet Classification with Deep Convolutional Neural Network (阅读翻译)

    ImageNet Classification with Deep Convolutional Neural Network 利用深度卷积神经网络进行ImageNet分类 Abstract We tr ...

  2. 【论文阅读】DSDNet Deep Structured self-Driving Network

    前言引用 [2] DSDNet Deep Structured self-Driving Network Wenyuan Zeng, Shenlong Wang, Renjie Liao, Yun C ...

  3. DKT模型及其TensorFlow实现(Deep knowledge tracing with Tensorflow)

    今年2月15日,谷歌举办了首届TensorFlow Dev Summit,并且发布了TensorFlow 1.0 正式版. 3月18号,上海的谷歌开发者社区(GDG)组织了针对峰会的专场回顾活动.本文 ...

  4. [notes] ImageNet Classification with Deep Convolutional Neual Network

    Paper: ImageNet Classification with Deep Convolutional Neual Network Achievements: The model address ...

  5. 论文速读(Jiaming Liu——【2019】Detecting Text in the Wild with Deep Character Embedding Network )

    Jiaming Liu--[2019]Detecting Text in the Wild with Deep Character Embedding Network 论文 Jiaming Liu-- ...

  6. Deep Knowledge Tracing (深度知识追踪)

    论文:Deep Knowledge Tracing    Addressing Two Problems in Deep Knowledge Tracing via Prediction-Consis ...

  7. HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL DEEP CONVOLUTIONAL NEURAL NETWORK阅读笔记

    HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL  DEEP  CONVOLUTIONAL NEURAL NETWORK 论文地址:https:/ ...

  8. ASPLOS'17论文导读——SC-DCNN: Highly-Scalable Deep Convolutional Neural Network using Stochastic Computing

    今年去参加了ASPLOS 2017大会,这个会议总体来说我感觉偏系统和偏软一点,涉及硬件的相对少一些,对我这个喜欢算法以及硬件架构的菜鸟来说并不算非常契合.中间记录了几篇相对比较有趣的paper,今天 ...

  9. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network

    最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...

随机推荐

  1. Centos7安装文件传输软件rz sz

    一直使用Xshell的xftp传输文件,谁知道忽然无法正常使用. 于是,决定用户rz进行传输 安装步骤也比较简单 1.首先安装第三方源(以下源比默认源包含更多安装包,建议添加该源使用) yum ins ...

  2. 微服务, 架构, 服务治理, 链路跟踪, 服务发现, 流量控制, Service Mesh

    微服务, 架构, 服务治理, 链路跟踪, 服务发现, 流量控制, Service Mesh 微服务架构   本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件.本文侧 ...

  3. 小白的C++之路——简易计算机

    #include <iostream> using namespace std; int main() { char link; double num1, num2,num3; cout ...

  4. vue-cli输入命令vue ui没效果

    最近用vue-cli脚手架很顺口,特别是UI控制台,在这里,创建项目和搭建本地环境,连接服务端变得很容易,页面ui也是一流 要怎么启动呢?在终端输入命令行vue ui,启动UI控制台,然后往浏览器输入 ...

  5. linux安装好的mysql rpm -qa |grep mysql不见

    输入: rpm -qa|grep -i mysql

  6. WPF 的命令的自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因

    原文:WPF 的命令的自动刷新时机--当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因 在 WPF 中,你可以使用 Command="{Binding Walt ...

  7. .net core获取数据库连接 抛出The type initializer to throw an exception

    原文:https://www.cnblogs.com/pudefu/p/7580722.html 在.NET Framework框架时代我们的应用配置内容一般都是写在Web.config或者App.c ...

  8. MongoDB和Java(7):MongoDB用户管理

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  9. shell编程必须要掌握的命令-xargs

    一,说xargs命令前,说一下什么是shell编程 什么是shell编程呢,说白了就是按一定的规则把各种命令组织起来,完成一定的事情.纯属个人理解,哈哈.不管是交互式的shell,还是非交互的shel ...

  10. ASP.Net超时时间已到解决办法-

    解决办法 1.在代码里面,把未关闭的连接关闭 2.扩大共享池,方法如下: 解决方法可以是修改连接池的连接生存期,因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间. 具体操作步骤如下: ...