【十】推荐系统遇到知识图谱RippleNet

RippleNet: Propagating User Preferences on the Knowledge
Graph for Recommender Systems


代码: https://github.com/hwwang55/RippleNet

心得

(1)你需要知道Kg是如何起到作用的! KG的形式是什么!
(2)Ripple中的o是什么? 怎么起到一圈一圈的作用的!
(3)Ripple的获得是通过上一层,但是Ripple是如何减弱的呢? 代码呢? 怎么控制h-hop?怎么控制兴趣范围,防止太大?
(4)多个涟漪叠加?

核心创新点

其实就是利用了波纹的逐渐递减的原理,对应于相关性的逐渐递减,也就是权重! 将嵌入和路径结合,也就是路径上的统一作为嵌入! 经过函数后得到最后的结果

摘要

  • 方法要解决的问题
    本文将知识图作为边信息的来源,结合基于嵌入和基于路径的知识图感知方法,我们提出了RippleNet。
  • 具体点:
    与在水面上传播的实际波纹类似,RippleNet通过自动迭代地沿着知识图中的链接扩展用户的潜在兴趣来刺激用户偏好在知识实体集合上的传播。将用户历史点击物品激活的多个“涟漪”叠加,形成用户对候选物品的偏好分布,用于预测最终的点击概率。

引入

在这里插入图片描述

推荐策略:

协同过滤方法: 协同过滤(CF)考虑用户的历史交互,根据用户潜在的共同偏好进行推荐; 但是基于CF的方法会受到用户-项目交互稀疏和冷启动问题的困扰! 为了解决这些问题,研究人员建议在CF中加入边信息,如社交网络、用户/物品属性,图片和上下文等! 而其中知识图谱通常包含项目的事实和联系!
KG加入策略: (1)KG引入了items之间的语义关联,有助于发现项目之间的潜在联系,提高推荐项目的精度;(2)KG包含了各种类型的关系,有利于合理扩展用户兴趣,增加推荐条目的多样性; (3)KG将用户的历史记录与推荐记录连接起来,从而为推荐系统带来了可解释性。

推荐策略之KG嵌入

KG现有方法 一般来说,现有的kg-aware的推荐可分为两类:

第一类

第一类是基于嵌入的方法[32,33,43],该方法使用知识图嵌入(KGE)[35]算法对KG进行预处理,并将学习到的实体嵌入到推荐框架中。

方法

  1. Deep Knowledge-aware Network(DKN)将实体嵌入和单词嵌入设置为不同的通道, 之后设置一个CNN框架来将它们结合处理来提高进行新闻推荐;
  2. 而Collaborative Knowledge base Embedding(CKE)将一个item的知识图谱嵌入、文本和图像嵌入结合CF模块,统一到了贝叶斯框架中;
  3. signed Hetero-generous Information Network Embedding (SHINE)设计了深层次的自编码器来嵌入到情感网络、社交网络和摘要(知识)网络来进行名人推荐;

优缺点
基于嵌入的方法在利用KG辅助推荐系统方面表现出了很高的灵活性,但是这些方法采用的KGE算法通常更适合于图内应用,如链接预测,而不是推荐(也就是只是图中自己过家家,预测图内是不是有关系! )

第二类

第二种方法是基于路径的方法,这个探索了在KG中items之间不同关系的连接来给推荐系统一些不一样的引导。

方法

  1. 比如,个性化实体推荐(PER)和 Meta-Graph Based network将KG看做了一个异构信息网(HIN), 并且提取基于元路径/元图的潜在特征,表示沿着不同类型的关系路径(图)时,用户和items之间是不是有连通性。

优缺点
基于路径的方法以一种更加自然、更直观的方式使用KG, 但是它们严重依赖于手工设计的元路径,在实践中很难进行优化。 另一种问题是,在实体和关系不在同一个域中的特定场景(例如,新闻推荐)中,不可能设计手工制作的元路径!

第三类: 我们的方法

RippleNet用于预测点击率(CTR),以user-item对作为输入,输出用户参与(如点击、浏览)该物品的概率! 这个方法最重要的idea是更关注到传播: 对于每个用户,RippleNet将其历史兴趣视为KG中的种子集,然后沿着KG链接迭代地扩展用户的兴趣,以发现其相对于候选item的分层潜在兴趣。

优缺点
(1)RippleNet通过偏好传播将KGE方法自然融入到推荐中; (2) RippleNet可以自动发现从用户历史中的物品到候选物品的可能路径,而无需任何手工设计。

综上所述,本文的贡献如下:

  • 据我们所知,这是第一次在kg感知推荐中结合基于嵌入和基于路径的方法。
  • 我们提出了RippleNet,这是一个端到端的框架,利用KG来帮助推荐系统。RippleNet通过在KG中迭代传播用户偏好,自动发现用户的层次潜在兴趣。

2. 问题公式化

推荐系统中,U=u1,u2,...U = {u_1, u_2, ...}U=u1,u2,...V=v1.v1,...V = {v_1. v_1,...}V=v1.v1,...分别表示users和items,user-item交互矩阵Y={yuv∣u∈U,v∈V}\mathrm{Y}=\left\{y_{u v} \mid u \in \mathcal{U}, v \in \mathcal{V}\right\}Y={yuvuU,vV}是根据用户的隐性反馈来定义的,其中
在这里插入图片描述
其中1表示有隐式交互,比如点击、观看、浏览等行为; 除了交互矩阵Y,我们还有一个可用的知识图G,其中包含了大量的三元组(h,r,t)(h, r, t)(h,r,t), 其中h∈Eh \in{\mathcal{E} }hE, r∈Rr \in{\mathcal{R} }rRt∈Et \in{\mathcal{E} }tE表明了在KG中的头、关系和三元组的尾部! E\mathcal{E}ER\mathcal{R}R表明了KG中的实体和关系的集合! 而且一个实体可能和多个实体由不同的关系!

也就是user、items、Y、G(h、r、t输入E\mathcal{E}ER\mathcal{R}R)处理!

3 RIPPLENET

3.1框架

在这里插入图片描述
综述方法
输入: RIPPLENET将用户u和物品v作为输入
输出: 输出用户u点击物品v的概率。
对于输入用户u, 他的历史兴趣集VuV_uVu被作为KG的种子,之后扩展成不同的ripple setsSuk(k=1,2,...,H)S_u^{k}(k = 1,2,...,H)Suk(k=1,2,...,H),一个ripple setSukS_u^{k}Suk是远离种子集VuV_uVu的k-hop(s)的知识三元组! 这些ripple set用于与item embedding(黄色块)进行迭代交互,获取useru对item v(绿色块)的响应,然后将这些响应组合成最终的user embedding(灰色块)。

3.2 第一步: 获取Ripple Set

我们知道,如果我们喜欢一部电影是因为什么? 电影类型? 电影主演? 电影导演? 这些都是知识图谱中和电影相连接的关系!

定义1(相关实体) :给定交互矩阵Y和知识图G,定义user u的k-hop相关实体集合为
在这里插入图片描述
其中Eu0=Vu={v∣yuv=1}\mathcal{E}_{u}^{0}=\mathcal{V}_{u}=\left\{v \mid y_{u v}=1\right\}Eu0=Vu={vyuv=1}是用户过去点击过的物品集,可以看作是user u在KG中的种子集。
相关实体视为用户历史兴趣相对于KG的自然扩展。根据相关实体的定义,定义user u的k-hop ripple集如下:

定义2(纹波集) :user u的第k hop ripple set定义为从Eu(k−1)\mathcal{E}^{(k-1)}_{u}Eu(k1)开始的知识图谱三元集合:
在这里插入图片描述
在这里插入图片描述

“ripple”一词有两层含义:(1)用户对实体的潜在兴趣是由其历史偏好激活的,然后沿着KG中的链接逐层传播,从近到远。我们可以通过图3中所示的同心圆来进行类比。(2)用户在纹波集中的潜在偏好强度随着跳数k的增加而减弱,相关性也在减弱。

其中hop的k是需要我们留意的!
(1)在真实KG中大部分的实体都是sink entities,这意味着它们只有传入链接而没有传出链接,比如“2004”和“PG-13”
(2)在特定的推荐场景(如电影或书籍推荐)中,可以将关系限制在场景相关的类别中,以减少涟波集的大小并提高实体之间的相关性。例如,在图3中,所有关系都与电影相关,并且在它们的名称中包含单词“film”。
(3)在实践中,最大量的hop H的数量通常不会太大,因为与用户历史距离太远的实体可能带来更多的干扰,而不是积极的信号。我们将在实验部分讨论H的选择
(4)在RippleNet中,我们可以对一个固定大小的邻居集进行抽样,而不是使用一个完整的ripple集来进一步减少计算开销。这类采样器的设计是未来工作的重要方向,尤其是非均匀采样器的设计,以更好地捕捉用户的层次潜在兴趣。

3.3偏好传播

第一步: 首先是item的Embedding:
传统的基于CF的方法和他们的变体学习用户和物品之间的潜在的关系,然后使用一个评分函数!
在RippleNet中,则是探索用户对其Ripple集的潜在兴趣!以一种更加细粒度的方式对用户和items之间的交互建模(什么叫做细粒度????),我们提出了一种偏好传播技术!什么叫细粒度,就是
在图表2中,每个物品vvv和一个物品嵌入v∈Rdv\in\ \mathbb{R}^dv Rd链接,其中d是维度; 根据应用场景物品Embedding可以包含one-hot ID、属性、bag-of-words(BOW词袋)或者是上下文信息!这就是细粒度!

第二步: 波纹集合和其概率
同时我们利用该Embedding vvv, 得到该用户u的1-hop波纹集Su1S_u^1Su1,而在该Su1S_u^1Su1中的每个三元组(hi,ri,tih_i, r_i, t_ihi,ri,ti)都会被分配一个相关概率,通过比较物品vvv和头部hih_ihi和关系rir_iri
在这里插入图片描述
其中Ri∈Rd×dR_i\in\ \mathbb{R}^{d\times{d}}Ri Rd×dhi∈Rdh_i\in\ \mathbb{R}^dhi Rd是头部hih_ihi和关系rir_iri的Embedding! 而pip_ipi可以被看做是物品v和两者的相似性!
在得到相关概率后,我们取Su1S_u^1Su1关联概率的权重的和! 然后这个向量ou1o_u^1ou1被返回:

在这里插入图片描述
其中ti∈Rdt_i \in \mathbb{R}^{d}tiRd是tailtit_iti的嵌入! 向量ou1o_u^1ou1可以被看做用户u的关于物品vvv的点击历史VuV_uVu的一阶反应! 这类似于基于item的CF方法,但是,用户由他的相关项而不是独立的特征向量来表示,以减少参数的大小。
用户的兴趣是从它的历史记录VuV_uVu中转移过来的! 这就是preference propagation!

通过用ou1o_u^1ou1代替公式4中的vvv可以重复传播,最后可以得到ou2o_u^2ou2
最后item可以被计算通过融合所有的:
在这里插入图片描述
最后,结合用户嵌入和物品嵌入,预测点击概率:
在这里插入图片描述
其中是激活函数是在这里插入图片描述

3.4学习算法

在这里插入图片描述

在RippleNet中,我们希望最大化模型参数的后验概率在这里插入图片描述
通过观察知识图谱在这里插入图片描述和隐式反馈矩阵在这里插入图片描述在这里插入图片描述

其中在这里插入图片描述包括所有实体、关系和项目的嵌入。这等价于最大化
在这里插入图片描述
根据贝叶斯定理。在式(9)中,第一项p(Θ)度量模型参数Θ的先验概率。根据[43],设p(Θ)为零均值高斯分布,对角协方差矩阵:
在这里插入图片描述
在式子9中的第二个item是被观察的知识图谱在这里插入图片描述
的似然函数。最近,研究员提出了许多知识图谱嵌入方法,包含translational distance models和semantic matching models! 而在RippleNet中,我们使用三种方式的张量分解方法来定义KGE的似然函数:
在这里插入图片描述
其中在这里插入图片描述会等于1在在这里插入图片描述下,否则会等于0; 基于(11)中的定义,在KGE中的实体-实体对和在preference propagation中的item-entity对可以在同一计算模型下被统一,Eq.(9)中的最后一项是已知Θ的隐式反馈与KG的似然函数,定义为伯努利分布的乘积
在这里插入图片描述
对Eq.(9)取负对数,则RippleNet的损失函数为:
在这里插入图片描述

其中V和E是所有items和实体的嵌入矩阵,IrI_rIr是在KG中的张量指标III的切片在关系r中,和R是关系R的嵌入矩阵。Eq(13)中,第一个term是交叉熵矩阵,预测值和真实值Y之间的差异; 第二项term测量KG IrI_rIr和重构指标矩阵在这里插入图片描述之间的平方误差! 第三个term是防止过拟合!
解决上面的目标函数是很难的,因此我们采用了SGD来迭代的更新loss! 为了更有效,我们会根据消极取样策略进行随机取样(从Y中取样的positive/negtive交互和从知识图谱G中取样的true/false三元组)

3.5 Discussion

3.5.1 Knowledge Graph Embedding.(KGE)

KGE方法主要有两种:https://blog.csdn.net/qq_27590277/article/details/106263407
原文: https://ieeexplore.ieee.org/document/8047276/metrics#metrics
平移距离模型和语义匹配模型。前者使用基于距离的评分函数,后者使用基于相似度的评分函数。
仔细看看上面的解释!
解释为什么用知识图谱,以及图谱怎么嵌入!

但是上面的方法更加适合图内应用,如链接预测或者三重分类! 从这个角度来看,RippleNet可以看做专门设计的KGE方法!

3.5.2 Memory Network

记忆网络是一个recurrent attention模型,他们使用了一个外在记忆模块! 这个在外在内存上进行迭代读入操作使得记忆网络能够提取长距离的依赖!
原来作品专注于入门级或者句子级别,但是我们的工作在KG中处理实体级别的连接,这在执行多跳迭代时更加精细和直观!

3.5.3 注意力机制

在RippleNet中,tails会根据相似性来平均权重! 在他们联系的头、尾巴和某些item!

3.5.4 Ripple Superposition

我们会发现一个用户历史点击的不同items最终会经过不同的路径(关系)牵引到同一个entity! 这种重叠实体就是用户最大的兴趣!

4. Experiment

三个数据集: Movies、Books、Bing-News
在这里插入图片描述
由于MovieLens-1M和Book-Crossing是显式反馈数据,我们将它们转换为隐式反馈,其中每个条目都被标记为1,表示用户已经对项目进行了评分(MovieLens-1M的评分阈值为4,而Book-Crossing由于其稀疏性没有设置阈值),并对每个用户标记为0的未观看集进行采样,该集与被评级的集大小相同。

我们使用Microsoft Satori来为每个数据集创建知识图谱(从中选择知识图谱)。 首先,对于MovieLens-1M和book - crossing,我们首先从整个KG中选择关系名称包含“movie”或“book”且置信度大于0.9的三元组子集。给定sub-KG,我们收集所有valid 电影/书籍的id,通过匹配它们的名字和三元组的尾部,为简单起见,没有匹配或多个匹配实体的item被排除! 然后我们将id与所有KG三元组的头和尾进行匹配,从sub-KG中选择所有匹配良好的三元组,并迭代地将实体集扩展到four hops。

在这里插入图片描述
在总数据集中选择不同的hop后,多个数据集是不是有共同的raters(也就是实体交集)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不同hop
在这里插入图片描述

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

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

相关文章

桩筏有限元中的弹性板计算_采用PKPM系列JCCAD软件桩筏筏板有限元方法计算的模型参数 -...

*****采用PKPM系列JCCAD软件桩筏筏板有限元方法计算的模型参数******计算模型:弹性地基梁板模型 (桩和土按WINKLER模型)地基基础形式及参照规范:天然地基(地基规范)、常规桩基(桩基规范)上部结构影响(共同作用计算): 网格划分依据:所有底层网格线有限元网格控制边长(m): 2.0 采…

[VC]旋转位图图片的算法函数

网上有很多关于位图旋转的资料,但是讲得很清楚的不多(我没有仔细查找).于是我也写了一个,希望能给向我这样的初学者一点帮助. 第一步,你必须知道位图即BMP格式的文件的结构. 位图(bmp)文件由以下几个部分组成: 1.BITMAPFILEHEADER,它的定义如下: typedef struct tagBITMAPFILEH…

LeetCode 836. 矩形重叠

1. 题目 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。 如果相交的面积为正,则称两矩形重叠。 需要明确的是,只在角或边接触的两个矩形不构成重叠。 给出两个矩形&#xff…

推荐系统和知识图谱论文推荐

KDD2020 Graph-based Recommendation(基于图,不是知识图谱) 1. A Framework for Recommending Accurate and Diverse Items Using Bayesian Graph Convolutional Neural Networks 【华为诺亚】 2. An Efficient Neighborhood-based Intera…

cmd执行python 环境变量应该怎么写_python怎么运行py文件?.py文件cmd命令方法及环境变量配置教程...

python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写。python在生物信息、统计、网页制作、计算等多个领域都体现出了强大的功能。python和其他脚本语言如java、R、Perl 一样,都可以直接在命令行里运行脚本程序。那么python怎么运行…

ASP.NET中的Eval()和DataBinder.Eval()方法

Eval( " ")和Bind( " ") 这两种一个单向绑定,一个双向绑定 bind是双向绑定,但需数据源可更改才能用 ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fie…

知识图谱论文阅读(九)【转】推荐系统遇到知识图谱之MKR模型

文哥的学习笔记: https://www.jianshu.com/p/af5226c7fbbb 知识图谱特征学习在推荐系统中的应用步骤大致有以下三种方式: 依次训练的方法主要有:Deep knowledge-aware Network(DKN) 联合训练的方法有: Rip…

LeetCode 883. 三维形体投影面积

1. 题目 在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体。 每个值 v grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。 现在,我们查看这些立方体在 xy、yz 和 zx 平面上的投影。 投影就像影子&a…

asoc linux设备驱动_Linux驱动分析之I2C设备

内核:4.20芯片:HYM8563 RTC下面的代码分析主要都在注释中,会按照驱动中函数的执行顺序分析。(1) 加载和卸载函数static const struct i2c_device_id hym8563_id[] {{ "hym8563", 0 },{}, }; MODULE_DEVICE_TABLE(i2c, hym8563_id)…

诚邀参加微软.NET俱乐部10月24日Windows 7社区发布会

为了配合微软下一代桌面操作系统—Windows7的发布,微软.NET俱乐部联合ZDNET至顶网社区特地组织了“让社区激情随Win 7 一同绽放”—Windows 7 社区发布会。10月24日13点半,将在北京,微软亚洲研究院地下一层阶梯会议中心举行,欢迎当…

知识图谱论文阅读【十二】【KDD2020】 使用贝叶斯图卷积神经网络推荐精确和多样化项目的框架【看不懂,待续】

题目: A Framework for Recommending Accurate and Diverse Items Using Bayesian Graph Convolutional Neural Networks 作者: 原文链接: https://www.researchgate.net/publication/343780326_A_Framework_for_Recommending_Accurate_and…

LeetCode 884. 两句话中的不常见单词

1. 题目 给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。 返回所有不常用单词的列表。 您…

bigdecimal如何做除法_二胎家庭如何平衡两个孩子的关系?聪明的父母都懂这四个法则...

治愈系慢综艺《朋友请听好》上段时间一直霸榜热搜。其中有一集,一位二胎妈妈来电探讨两个孩子的相处问题,引发了网友热议。弹幕里有人说:“别人家的孩子兄友弟恭,其乐融融,我们家永远是你来我往的大型武斗场景。”对此…

操作注册表

操作注册表 Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\MyKey"); RegistryKey rk Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\MyKey", true); rk.SetValue("姓名", "小芳"); …

LeetCode 893. 特殊等价字符串组

1. 题目 你将得到一个字符串数组 A。 如果经过任意次数的移动,S T,那么两个字符串 S 和 T 是特殊等价的。 一次移动包括选择两个索引 i 和 j,且 i % 2 j % 2,交换 S[j] 和 S [i]。 现在规定&#xff…

知识图谱论文阅读(十三)【2020 arXiv】Attentive Knowledge Graph Embedding for Personalized Recommendation

题目: Attentive Knowledge Graph Embedding for Personalized Recommendation 论文链接: 代码链接: 知识图谱特征学习在推荐系统中的应用步骤大致有以下三种方式: BPThrough Time 【5】Backpropagation: theory, architecture…

ad批量走线_AD PCB直角布线批量改为圆角,怎么批量修改呢?

1.拖动器件不让连接线跟着一起走,怎么设置呢?答:执行快捷键OP,将Always Drag选项的勾掉即可,如图所示:2.如图中所示,有很多元件位号重复或者位号需要重新编辑命名,请哪位大神有什么快…

[转帖]Mootools源码分析-02 -- Utils

原帖地址:http://space.flash8.net/space/?uid-18713-action-viewspace-itemid-400118 原作者:我佛山人 //检查对象是否已经定义或者已经赋值function$chk(obj) { return!!(obj ||ōbj 0);};//通用清除计时器的方法,即能清setTimeout,又能清setIn…

ios realm 文件_iOS Realm数据库使用

Realm 是 SQLite 和 Core Data 的替代者,得益于其零拷贝的设计,Realm 比任何 ORM 都要快很多。Objective‑C版本的 Realm 能够让您以一种安全、耐用以及迅捷的方式来高效地编写应用的数据模型层,如下例所示:Dog.hinterface Dog : …

李宏毅机器学习(十一)meta-learning和ML一样是三个步骤

Meta-learning就是教会它怎么学! 大家以为AI都是很牛,但其实就是在调参,在工业界怎么样子调参呢? 使用1000GPUs,而学业界只有一张! 我们知道Machine learning可以学出来,那么hyperparameters是…