###好好好##知识图谱与推荐系统

文章目录

    知识图谱与个性化推荐
        1、推荐系统的任务和难点
        2、知识图谱的优势
        3、知识图谱与推荐系统的结合方法
            3.1 基于特征的推荐方法
            3.2 基于路径的推荐方法
            3.3 知识图谱特征学习(Knowledge Graph Embedding)
        4、结合知识图谱特征学习的推荐系统
    算法模型
        DKN(Deep Konwledge-aware Network)
            知识图谱特征学习
            基于CNN的句子特征提取
            问题描述
            模型框架
                知识提取
                新闻特征提取 KCNN(Knowledge-aware CNN)
                基于注意力机制的用户兴趣预测
            DKN模型tensorflow实现


参考链接:https://www.jianshu.com/p/6a5e796499e8

知识图谱与个性化推荐
1、推荐系统的任务和难点

推荐系统一般分为两类:

    评分预测: 预测用户对物品的评价。
    例如:电影推荐中,系统需要预测用户对电影的评分,并以此为根据推送用户可能喜欢的电影。使用的数据为用户的评分,能反应喜好程度,称为显示反馈。

    点击率预估: 预测用户对于物品是否点击。
    例如:新闻推荐,预测用户点击某新闻的概率优化推荐方案。使用的数据为用户点击/未点击,不能反应喜好程度,称为隐式反馈。

在这里插入图片描述

传统的推荐系统存在的问题:

    稀疏性:

    实际场景中,用户和物品的交互信息往往是非常稀疏的。如电影推荐中,电影往往成千上万部,但是用户打过分的电影往往只有几十部。使用如此少的观测数据来预测大量的未知信息,会极大增加过拟合的风险。

    冷启动:

    对于新加入的用户或者物品,其没有对应的历史信息,因此难以准确的进行建模和推荐。

解决以上问题常引入一些辅助信息,常见的辅助信息:

    社交网络:
    一个用户对某个物品感兴趣,他的朋友可能也会对该物品感兴趣

    用户/物品的属性

    拥有同种属性的用户可能会对同一类物品感兴趣

    视频/图像/音频/文本等多媒体信息:

    上下文信息:

    用户-物品交互的时间、地点、当前会话信息等

    知识图谱

2、知识图谱的优势

    精准性:
    引入更多的语义关系,深层次的发现用户兴趣
    [外链图片转存失败(img-ReF0jRN0-1567568472554)(en-resource://database/2697:1)]

    多样性:

通过知识图谱中不同的关系链接种类,有利于推荐结果的发散
[外链图片转存失败(img-hZjRKnbe-1567568472558)(en-resource://database/2699:1)]

    可解释性:

[外链图片转存失败(img-D8VH9jjC-1567568472560)(en-resource://database/2701:1)]
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)
知识图谱特征学习

常见的模型:

    基于距离的模型
        1

    基于语义的匹配模型
        1

基于CNN的句子特征提取

DKN中提取句子特征的CNN,用句子所包含词的词向量组成的二维矩阵,经过一层卷积操作之后再做一次max-over-time的pooling得到句子的向量,如下所示:
在这里插入图片描述
问题描述

在这里插入图片描述
模型框架

在这里插入图片描述

可以看到,DKN的网络输入有两个:候选新闻集合,用户点击过的新闻标题序列。输入数据通过KCNN来提取特征,之上是一个attention层,计算候选新闻向量与用户点击历史向量之间的attention权重,在顶层拼接两部分向量之后,用DNN计算用户点击此新闻的概率。接下来,我们介绍一下DKN模型中的一些细节。
知识提取

知识提取过程的三方面:

1、标题中每个单词的Embedding(可以通过预训练的word2vec模型得到)
2、获取标题中每个单词对应的实体的Embedding
3、得到每个单词的上下文Embedding

    1
    2
    3

实体embedding

    实体特征即标题中每个单词对应的实体的特征表示,通过下面四个步骤得到:
    识别出标题中的实体并利用实体链接技术消除歧义
    根据已有知识图谱,得到与标题中涉及的实体链接在一个step之内的所有实体所形成的子图。
    构建好知识子图以后,利用基于距离的翻译模型得到子图中每个实体embedding。
    得到标题中每个单词对应的实体embedding。
    在这里插入图片描述

上下文Embedding

尽管目前现有的知识图谱特征学习方法得到的向量保存了绝大多数的结构信息,但还有一定的信息损失,为了更好地利用一个实体在原知识图谱的位置信息,文中还提到了利用一个实体的上下文来进一步的刻画每个实体,具体来说,即用每个实体相连的实体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
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章