向AI转型的程序员都关注了这个号👇👇👇
文末有送新书福利!
活动截止时间为12月30日中午12点。
知识图谱与个性化推荐
1、推荐系统的任务和难点
推荐系统一般分为两类:
评分预测 :预测用户对物品的评价。
例如:电影推荐中,系统需要预测用户对电影的评分,并以此为根据推送用户可能喜欢的电影。使用的数据为用户的评分,能反应喜好程度,称为显示反馈。
点击率预估 :预测用户对于物品是否点击。
例如:新闻推荐,预测用户点击某新闻的概率优化推荐方案。使用的数据为用户点击/未点击,不能反应喜好程度,称为隐式反馈。
传统的推荐系统存在的问题:
稀疏性:
实际场景中,用户和物品的交互信息往往是非常稀疏的。如电影推荐中,电影往往成千上万部,但是用户打过分的电影往往只有几十部。使用如此少的观测数据来预测大量的未知信息,会极大增加过拟合的风险。
冷启动:
对于新加入的用户或者物品,其没有对应的历史信息,因此难以准确的进行建模和推荐。
解决以上问题常引入一些辅助信息,常见的辅助信息:
社交网络:
一个用户对某个物品感兴趣,他的朋友可能也会对该物品感兴趣
用户/物品的属性
拥有同种属性的用户可能会对同一类物品感兴趣
视频/图像/音频/文本等多媒体信息
上下文信息:
用户-物品交互的时间、地点、当前会话信息等
知识图谱
2、知识图谱的优势
精准性:
引入更多的语义关系,深层次的发现用户兴趣
多样性:
通过知识图谱中不同的关系链接种类,有利于推荐结果的发散
可解释性:
3、知识图谱与推荐系统的结合方法
3.1 基于特征的推荐方法
主要是从知识图谱中抽取一些用户和物品的属性作为特征,放入到传统的模型中,之引入了实体特征,没有引入关系特征。
3.2 基于路径的推荐方法
基于路径的推荐方法,以港科大KDD 2017的录用论文《Meta-Graph Based Recommendation Fusion over Heterogeneous Information Networks》为代表。
该类方法将知识图谱视为一个异构信息网络(heterogeneous information network),然后构造物品之间的基于meta-path或meta-graph的特征。简单地说,meta-path是连接两个实体的一条特定的路径,比如“演员->电影->导演->电影->演员”这条meta-path可以连接两个演员,因此可以视为一种挖掘演员之间的潜在关系的方式。这类方法的优点是充分且直观地利用了知识图谱的网络结构,缺点是需要手动设计meta-path或meta-graph,这在实践中难以到达最优;同时,该类方法无法在实体不属于同一个领域的场景(例如新闻推荐)中应用,因为我们无法为这样的场景预定义meta-path或meta-graph。
3.3 知识图谱特征学习(Knowledge Graph Embedding)
即为实体和关系学习得到一个低维向量。两类模型:基于距离的模型和基于语义的匹配模型
基于距离的翻译模型(distance-based translational models)
这类模型使用基于距离的评分函数评估三元组的概率,将尾节点视为头结点和关系翻译得到的结果。这类方法的代表有TransE、TransH、TransR等;
在空间中,三元组的头节点h、关系r、尾节点t都有对应的向量,我们希望的是h + r = t,如果h + r的结果和t越接近,那么我们认为这些向量能够很好的表示知识图谱中的实体和关系。
基于语义的匹配模型(semantic-based matching models)
类模型使用基于相似度的评分函数评估三元组的概率,将实体和关系映射到隐语义空间中进行相似度度量。这类方法的代表有SME、NTN、MLP、NAM等。
上述方法的核心是构造一个二分类模型,将h、r和t输入到网络中,如果(h,r,t)在知识图谱中真实存在,则应该得到接近1的概率,如果不存在,应该得到接近0的概率。
4、结合知识图谱特征学习的推荐系统
知识图谱特征学习与推荐系统相结合,往往有以下几种方式:依次训练、联合训练、交替训练。
依次训练的方法主要有:Deep Knowledge-aware Network(DKN)
联合训练的方法主要有:Ripple Network
交替训练主要采用multi-task的思路,主要方法有:Multi-task Learning for KG enhanced Recommendation (MKR)
算法模型
https://www.jianshu.com/p/2e3cade31098
DKN(Deep Konwledge-aware Network)
知识图谱特征学习
常见的模型:
基于距离的模型
基于语义的匹配模
基于CNN的句子特征提取
DKN中提取句子特征的CNN,用句子所包含词的词向量组成的二维矩阵,经过一层卷积操作之后再做一次max-over-time的pooling得到句子的向量,如下所示:
问题描述
模型框架
可以看到,DKN的网络输入有两个:候选新闻集合,用户点击过的新闻标题序列。输入数据通过KCNN来提取特征,之上是一个attention层,计算候选新闻向量与用户点击历史向量之间的attention权重,在顶层拼接两部分向量之后,用DNN计算用户点击此新闻的概率。接下来,我们介绍一下DKN模型中的一些细节。
知识提取
知识提取过程的三方面
1、标题中每个单词的Embedding(可以通过预训练的word2vec模型得到)
2、获取标题中每个单词对应的实体的Embedding
3、得到每个单词的上下文Embedding
实体embedding
实体特征即标题中每个单词对应的实体的特征表示,通过下面四个步骤得到:
识别出标题中的实体并利用实体链接技术消除歧义
根据已有知识图谱,得到与标题中涉及的实体链接在一个step之内的所有实体所形成的子图。
构建好知识子图以后,利用基于距离的翻译模型得到子图中每个实体embedding。
得到标题中每个单词对应的实体embedding。
上下文Embeddind
尽管目前现有的知识图谱特征学习方法得到的向量保存了绝大多数的结构信息,但还有一定的信息损失,为了更好地利用一个实体在原知识图谱的位置信息,文中还提到了利用一个实体的上下文来进一步的刻画每个实体,具体来说,即用每个实体相连的实体embedding的平均值来进一步刻画每个实体,计算公式如下:
新闻特征提取 KCNN(Knowledge-aware CNN)
在知识抽取部分,我们得到了三部分的embedding,一种最简单的使用方式就是直接将其拼接
但这样做存在几方面的限制
连接策略打破了单词和相关实体之间的联系,并且不知道它们的对齐方式。
单词的embedding和对应实体的embedding是通过不同的方法学习的,这意味着它们不适合在单个向量空间中将它们一起进行卷积操作。
连接策略需要单词的embedding和实体的embedding具有相同的维度,这在实际设置中可能不是最优的,因为词和实体embedding的最佳维度可能彼此不同。
基于注意力机制的用户兴趣预测
DKN模型tensorflow实现
本文的代码链接:
https://github.com/princewen/tensorflow\_practice/tree/master/recommendation/Basic-DKN-Demo
参考的代码地址为:https://github.com/hwwang55/DKN
【 免费送书】 !
👇👇👇
在分享本文到朋友圈,点赞越多 中奖的概率越大,选Top3名同学, 包邮送出 《智能推荐系统开发实战 》。
【编辑推荐】
1.简单易学:本书使用 Python 3.7 版本进行编写,代码简单,易于读者学习。
2.实践为主:本书不是空讲推荐算法理论知识,而是以实际的案例清晰简明地介绍如何使用Python 实现推荐模型的开发落地。
3.内容全面:覆盖推荐系统领域常见的模型及热点案例。
4.配备数据和源代码:提供所有案例的数据文件和 Python 源代码供读者操作练习、快速上手。
5.学习路线图清晰:每个推荐模型开发案例均按照数据挖掘项目的一般工作流程逐步展开,分析逻辑清晰。
机器学习算法AI大数据技术
搜索公众号添加: datanlp
长按图片,识别二维码
阅读过本文的人还看了以下文章:
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx