当知识图谱遇上推荐系统之PippleNet模型(论文笔记二)

RippleNet | Propagating User Preferences on the Knowledge

类别:联合学习

将知识图谱特征学习和推荐算法的目标函数结合,使用端到端(end-to-end)的方法进行联合学习。
在这里插入图片描述
[论文下载链接]https://arxiv.org/abs/1803.03467

1、背景

上一篇介绍了依次学习中的DKN,需要先学习到entity的向量和relation的向量,然后讲这些向量引入推荐系统来学习user的向量和item的向量。但是学习entity向量和relation向量的目的是为了还原知识图谱中的三元组关系,而并非是为了我们的推荐任务

为了解决现有的embedding-based方法和path-based方法的限制,作者提出了一种可以将知识图谱自然地融入到推荐系统的端到端的框架RippleNet。

RippleNet原理:

对于每个用户,RippleNet将其历史兴趣视为KG中的种子集,然后沿着KG链接迭代地扩展用户的兴趣,以发现他对候选项目的等级潜在兴趣。我们将偏好传播与由在水上传播的雨滴产生的实际波纹进行类比,其中多个“波纹”叠加以形成用户在知识图上的最终偏好分布。

2、问题制定

用户集 U = { u1, u2, …}
项目集 V = { v1, v2, …}
用户-项 交互矩阵 Y = { yuv | u ∈ U, v ∈ V}
在这里插入图片描述
知识图谱 G = { (h,r,t) | h, t ∈ E, r ∈ R }

在许多推荐场景中,item v ∈ V 可能与知识图谱中的一个或多个 entity相关
目标:学习预测函数uv =F( u, v ; Θ ), yˆuv表示用户 u 点击项目 v 的可能性

3、RippleNet

3.1 水波纹集 Ripple Set

定义1(相关实体) 给定交互矩阵Y和知识图G,用户u 的k-hop相关实体集被定义为:
在这里插入图片描述
当k=0时,表示用户历史点击项目,被视为KG中用户u的种子集:
在这里插入图片描述
定义2(纹波集) 用户u 的k-hop纹波集被定义为从Ek-1u 开始的知识三元组:
在这里插入图片描述

3.2 框架 Framework

输入:用户u 和 预测项v
输出:用户u 点击 项v 的可能性分数
对于每一个输入用户u,他的历史兴趣集Vu被视为KG中的种子,然后沿着KG链接迭代地扩展用户的兴趣,形成多个水波纹集Sku( k = 1,2,…,H)。一个水波纹集Sku是距离种子集Vu有k-hop(s)距离的一组知识三元组。这些水波纹集迭代的与项 v (黄色竖条块)进行交互来获取用户关于项 v 的响应(绿色竖条块),然后将这些响应结合形成user embedding(灰色竖条块),最后使用 user embedding 和 item embedding 计算可能性分数yˆuv
在这里插入图片描述

3.3 偏好传播 Preference Propagation

每个项目v 与项目嵌入v∈Rd 相关联,其中d是嵌入的维度。项目嵌入可以基于应用场景包含 one-hot ID,属性,bag-of-words 或上下文信息。 给定项目嵌入v 和用户u的1-hop纹波集合S1u,通过将项目v与头部hi和关系ri进行比较(hi和ri为S1u中的每个三元组(hi, ri, ti))分配一个关联概率(蓝色块):
在这里插入图片描述
Note:Pi可以看作在关系空间Ri∈ Rd×d中,item v 和 entity hi 的相似度。注意,在计算项目v和实体h的相关性时,有必要考虑嵌入矩阵R ,因为项目 - 实体对在通过不同关系测量时可能具有不同的相似性。 例如,“Forrest Gump”和“Cast Away”在考虑他们的导演或明星时非常相似,但如果按流派或作家来衡量,则没有共同之处。

然后将尾部ti和相关权重Pi相乘再求和得到向量o1u
在这里插入图片描述
用户的兴趣从他的历史集合Vu沿着Su1中的链路转移到他的1-hop相关实体Eu1的集合,这在RippleNet中称为偏好传播。

将v用o1u取代可计算出o2u,同理可以计算出o3u, … ,oHu
然后user embedding 可以用用各阶响应之和表示:在这里插入图片描述
Note:尽管在理论上最后一步oHu 包含了之前每一步的信息,但还是有必要把之前的oku加入计算,因为之前的oku的信息传到最后被稀释了。

最后user embedding 和 item embedding一起来预测u点击v的可能性:
在这里插入图片描述

3.4 学习算法 Learning Algorithm

在给定知识图谱G,用户的隐式反馈Y时,我们希望最大化后验概率:
在这里插入图片描述
其中Θ包括所有实体,关系和项目的嵌入,后验概率展开后相当于最大化
在这里插入图片描述
第一项p(Θ)是测量模型参数Θ的先验概率,我们认为参数的先验概率服从零均值和对角协方差矩阵的高斯分布:
在这里插入图片描述
第二项是给定Θ的观察知识图G的似然函数,在RippleNet中,我们使用three-way张量分解方法来定义KGE的似然函数:
在这里插入图片描述
Note:其中如果(h,r,t)∈G指标 Ih,t,r 等于1,否则为0。因此可以在相同的计算模型下统一KGE中的实体-实体对和偏好传播中的项目 - 实体对的评分函数。

第三项是给定Θ和KG的观察隐式反馈的似然函数,KG被定义为伯努利分布的乘积:
在这里插入图片描述
因此,我们可以得到RippleNet的损失函数形式如下:
在这里插入图片描述
Note:第一项可以看作是推荐系统的交叉熵损失,第二项可以看作是知识图谱的平方误差,第三个项是防止过度拟合的正则化项。

直接解决上述问题是难以处理的,因此,我们采用随机梯度下降(SGD)算法来迭代地优化损失函数。 RippleNet的学习算法在算法1中给出。在每次训练迭代中,为了使计算更有效,我们采用负采样策略随机采样来自Y的正/负相互作用的小批量和来自G的真/假三元组。 。然后,我们计算损失L相对于模型参数Θ的梯度,并基于采样minibatch通过反向传播更新所有参数。
在这里插入图片描述

4、相关问题:

纹波集的大小可能随着hop数k的增加而变得太大问题
  1. 真实KG中的大量实体是sink实体,这意味着它们只有传入链接但没有传出链接,如图3中的“2004”和“PG-13”。
  2. 在诸如电影或书籍推荐的特定推荐场景中,关系可以限于与场景相关的类别,以减小波纹集的大小并提高实体之间的相关性。例如,在图3中,所有关系都与电影有关,并且在其名称中包含单词“film”。
  3. 最大hop数H在实践中通常不会太大,因为距离用户历史太远的实体可能带来比positive signal还要多的噪声。我们将在实验部分讨论H的选择。
  4. 在RippleNet中,我们可以采样固定大小的邻居集,而不是使用完整的纹波集以此来减少计算开销。设计这样的采样器是未来工作的重要方向,尤其是非均匀采样器,以便更好地捕获用户的hierarchical潜在兴趣。
    在这里插入图片描述
关于学习算法中的数学公式理解
  1. 先验概率、后验概率、条件概率、贝叶斯概率: https://www.cnblogs.com/yemanxiaozu/p/7680761.html
  2. 二项分布、正态分布、似然函数:https://space.bilibili.com/257347536/channel/index
  3. 从贝叶斯角度深入理解正则化:https://blog.csdn.net/zhuxiaodong030/article/details/54408786
  4. 协方差矩阵的理解:https://www.cnblogs.com/chaosimple/p/3182157.html
    协方差矩阵的计算:https://blog.csdn.net/u013555719/article/details/82628835

5、RippleNet的Tensorflow实现

参考的代码地址为:https://github.com/hwwang55/RippleNet

cd desktop/RippleNet/src
python3 preprocess.py
reading item index to entity id file: ../data/movie/item_index2entity_id_rehashed.txt ...
reading rating file ...
converting rating file ...
number of users: 6036
number of items: 2445
converting kg file ...
number of entities (containing items): 182011
number of relations: 12
donepython3 main.py --dataset movie
reading rating file ...
splitting dataset ...
reading KG file ...
constructing knowledge graph ...
constructing ripple set ...epoch 0    train auc: 0.9151  acc: 0.8353    eval auc: 0.9042  acc: 0.8267    test auc: 0.9037  acc: 0.8256
epoch 1    train auc: 0.9312  acc: 0.8546    eval auc: 0.9146  acc: 0.8374    test auc: 0.9134  acc: 0.8365
epoch 2    train auc: 0.9398  acc: 0.8659    eval auc: 0.9173  acc: 0.8411    test auc: 0.9169  acc: 0.8414
epoch 3    train auc: 0.9480  acc: 0.8770    eval auc: 0.9203  acc: 0.8459    test auc: 0.9198  acc: 0.8443
epoch 4    train auc: 0.9544  acc: 0.8862    eval auc: 0.9215  acc: 0.8474    test auc: 0.9209  acc: 0.8472
epoch 5    train auc: 0.9586  acc: 0.8923    eval auc: 0.9217  acc: 0.8465    test auc: 0.9215  acc: 0.8468
epoch 6    train auc: 0.9625  acc: 0.8978    eval auc: 0.9209  acc: 0.8475    test auc: 0.9203  acc: 0.8460
epoch 7    train auc: 0.9627  acc: 0.8995    eval auc: 0.9189  acc: 0.8445    test auc: 0.9190  acc: 0.8447
epoch 8    train auc: 0.9674  acc: 0.9067    eval auc: 0.9167  acc: 0.8413    test auc: 0.9166  acc: 0.8427
epoch 9    train auc: 0.9701  acc: 0.9109    eval auc: 0.9182  acc: 0.8440    test auc: 0.9178  acc: 0.8437

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ 3690 找星座(2D匹配)(未解答)

文章目录1. 题目信息1.1 题目链接1.2 题目大意1.3 解题思路2. 代码2.1 Time Limit Exceeded 代码2.2 Time Limit Exceeded 代码2.3 Time Limit Exceeded 代码1. 题目信息 1.1 题目链接 http://poj.org/problem?id3690 1.2 题目大意 给定大的矩阵(天空的样子&am…

综述 | 事件抽取及推理 (上)

本文转载自公众号:知识工场。 事件概要事件是一种重要的知识,近年来,越来越多的工作关注于从开放域或领域文本中抽取结构化事件知识。同时,除了本身就很困难的…

下载 | 李宏毅:1 天搞懂深度学习,我总结了 300 页 PPT

《1 天搞懂深度学习》,300 多页的 ppt,台湾李宏毅教授写的,非常棒。不夸张地说,是我看过最系统,也最通俗易懂的,关于深度学习的文章。这份 300 页的 PPT,被搬运到了 SlideShare 上,下…

史上最全Redis面试49题(含答案):哨兵+复制+事务+集群+持久化等

最全面试题答案系列 史上最强多线程面试44题和答案:线程锁线程池线程同步等 最全MySQL面试60题和答案 史上最全memcached面试26题和答案 史上最全Spring面试71题与答案 今天主要分享redis最全答案系列 Redis主要有哪些功能? 1.哨兵(Sen…

DTW动态时间规整算法

原文地址:https://blog.csdn.net/qcyfred/article/details/53824507 https://zhuanlan.zhihu.com/p/43247215 动态时间规整(DTW)算法简介相忘天涯,深藏于心19 人赞同了该文章DTW最初用于识别语音的相似性。我们用数字表示音调高低…

POJ 3461 字符串匹配(KMP / 哈希(有推导))

文章目录1. 题目1.1 题目链接1.2 题目大意2. Accepted代码2.1 KMP解法2.2 哈希法(有推导过程)1. 题目 1.1 题目链接 http://poj.org/problem?id3461 类似题目:LeetCode 30. 串联所有单词的子串(字符串哈希) 1.2 题…

莫比乌斯:百度凤巢下一代广告召回系统

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 江城编 | 夕小瑶今天聊聊百度在最顶级的数据挖掘会议KDD2019的计算广告track上提出的query-ad匹配模型——莫比乌斯(MOBIUS)。这也是百度凤巢下一代广告召回系统的内部代号&#…

当知识图谱遇上推荐系统之MKR模型(论文笔记三)

Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation 类别:交替学习 将知识图谱特征学习和推荐算法视为两个分离但又相关的任务,使用多任务学习的框架进行交替学习。 1、背景 MKR是一个通用的、端对端的深度推荐框架&#xf…

关于话题演化关系网络生成的路线思考:从话题聚类到话题网络展示

话题演化关系网络生成,是实现事件演化追踪的一个重要方法。通过对文本话题进行聚类、内容处理、话题演化关联、话题演化网络的展示,能够在一定程度上为用户揭示出一个事件发展的情况。本文就笔者对该方向的实现路线思考进行总结,分享给大家。…

综述 | 事件抽取及推理 (下)

本文转载在公众号:知识工场 。 上篇事件抽取及推理的推文已经介绍了事件抽取的基本方法,本篇主要介绍事件推理的相关工作。就目前来看,事件方向相关的研究还是以事件抽取为主流任务,当前大多都是在模型的框架和优化方面进行研究。…

Redis系列教程(三):如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题

Java相关的面试都会问到缓存的问题:史上最全Redis面试49题(含答案):哨兵复制事务集群持久化等,除此之外还会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等不常见的问题,但却是非常重要的问题,今…

随机森林:提供银行精准营销解决方案

原文地址:https://blog.csdn.net/weixin_34233679/article/details/88480912 本例是根据科赛网练习赛进行练手,学习巩固一下随机森林建模以及应用。 赛题描述本练习赛的数据,选自UCI机器学习库中的「银行营销数据集(Bank Marketing Data Set)…

谁说2021届秋招算法岗一定要灰飞烟灭啦?

没错,这是一碗鸡汤,希望肝完这碗鸡汤的师弟师妹们就不要过度焦虑啦~理性上车,理性下车,希望萌新们都能遇到最适合自己的坑位2014年末入坑AI,一路见证了AI行业的快速起飞、爆炸、焦虑和冷却。小夕前几天在知…

论文浅尝 | 基于深度强化学习的远程监督数据集的降噪

论文链接:https://arxiv.org/pdf/1805.09927.pdf来源:ACL2018Motivation:远程监督是以一种生成关系抽取训练样本的方法,无需人工标注数据。但是远程监督引入了噪音,即存在很多的假正例。本文的出发点非常简单&#xff…

字符串匹配算法(AC自动机 Aho-Corasick)

文章目录1. 多模式串匹配2. 经典多模式串匹配--AC自动机2.1 AC自动机构建2.2 在AC自动机上匹配主串2.3 复杂度分析3. python包1. 多模式串匹配 前面学的BF、RK、BM、KMP都是单模式串匹配算法(一个模式串,一个主串)多模式串匹配,即…

Redis系列教程(五):Redis哨兵、复制、集群的设计原理,以及区别

前一篇文章高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解谈了Redis高并发快的3个原因,本篇主要谈Redis的高可用,两篇合起来就可以把redis的高并发和高可用搞清楚了。 谈到Redis服务器的高可用,如何保证备份的机器…

论文浅尝 | 区分概念和实例的知识图谱嵌入方法

链接:https://arxiv.org/pdf/1811.04588.pdf知识图谱的表示学习最近几年被广泛研究,表示学习的结果对知识图谱补全和信息抽取都有很大帮助。本文提出了一种新的区分概念和实例的知识图谱表示学习方法,将上下位关系与普通的关系做了区分&#…

写在校招季,谈谈机器学习岗的Offer选择问题

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 吴海波 现在校招开始的越来越早,今年的实习生招聘还是异常火爆,简历一堆,而且是越来越没有区分度,以前面个xgboost的论文细节,就能区分很多人&…

Redis系列教程(六):Redis缓存和MySQL数据一致性方案详解

需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。 这个业务场景,主要是解决读数据从Redis缓存…

贪心算法(Greedy Algorithm)之霍夫曼编码

文章目录1. 贪心算法2. 应用2.1 找零钱2.2 区间覆盖2.3 霍夫曼编码霍夫曼编码完整代码1. 贪心算法 我们希望在一定的限制条件下,获得一个最优解每次都在当前的标准下做出当下最优决策(整体不一定最优),做出的决策不可以后悔&…