论文链接:https://arxiv.org/pdf/1803.03467.pdf
代码链接:https://github.com/qibinc/RippleNet-PyTorch
参考文档:https://zhuanlan.zhihu.com/p/73716930

导读

将知识图谱特征学习和推荐算法的目标函数结合,使用端到端(end-to-end)的方法进行联合学习。

1、引言

推荐系统中,协同过滤(Collaborative Filtering,简称CF)根据用户的历史交互数据,并根据用户的潜在共同爱好进行推荐。然而CF算法也有一些问题:用户数据稀疏(Sparsity),以及冷启动(Cold-start)问题。

为了解决这些问题,研究者们提出在CF模型的基础上加入额外信息。比如社交网络、用户/商品属性、图片信息以及文字信息等。本文考虑将知识图谱(Knowledge Graph,KG)作为额外信息,融入到推荐系统中。

前人将KG融合到推荐系统的相关工作,主要分为两种类别:

  • embedding-based methods:万物皆可embedding

Deep Knowledge-aware Network (DKN)中,实体embeddings和词embeddings当做不同的通道,然后用CNN网络将他们两者结合到一起(用来新闻推荐)。

Collaborative Knowledge base Embedding (CKE)中,CF模型结合了知识embeddings、文本embeddings,图片embeddings。

Signed Heterogeneous Information Network Embedding (SHINE) 中,模型将情感网络、社会网络、个人网站都进行深度编码。模型用于名人推荐。

优点:embedding-based方法在利用KG辅助推荐系统表现出很高的灵活性

缺点:但这些方法中采用的KGE(Knowledge Graph Embedding)算法通常更适用于图形内链路预测应用(何为图内链路预测:通过已知的网络节点及网络结构等信息,预测网络中尚未产生连接的两个节点之间产生连接的可能性),而推荐场景我们需要更多的去发现潜在用户感兴趣的点,而不仅仅是利用当前也有的节点连接,所以学习好的实体embeddings对于表征实体间的关系作用不大。

  • path-based method:探索KG中各个实体之间的各种联系,为推荐系统提供额外的指导。

Personalized Entity Recommendation(PER)和Meta-Graph Based Recommendation 将KG视为异构信息网络(Heterogeneous Information networks,HIN),通过关系路径、图表的类型提取基于元路径/元图的潜在特征来表示user和item之间的连接。

优点:path-based 方法以更自然和更直观的方式使用KG。

缺点:但它们严重依赖于手动设计的元路径,这在实践中很难优化。 另一个问题是,在实体和关系不在一个域内的某些场景(例如,新闻推荐)中设计手工制作的元路径是不可能的。

为了解决前人方法中的问题,作者提出RippleNet:

思路:借鉴水波(Ripple)的传播,以user感兴趣的items为种子(seed),在商品知识图谱上,用seed items向外一圈一圈的扩散到其他的items上,这个过程称之为偏好传播(Preference Propagation)。该模型认为外层的items同样属于用户潜在的偏好,因此在刻画user的时候,需要将其考虑进去,而不能仅仅使用观测到的items去表示user偏好。

RippleNet与前人工作的差异:

(1)RippleNet通过偏好传播方法,很自然地将KGE方法融入到推荐系统中;

(2)RippleNet可以从用户历史的item中,发现用户到候选item的可能路径,不需要任何手工设计;

RippleNet 的贡献:

(1)首次将基于embedding-based和path-based的方法结合到基于知识图谱的推荐系统中;

(2)提出了RippleNet模型,这是一个利用知识图谱实现推荐系统的端到端框架,RippleNet通过在KG中偏好传播的方法,不断自动的发现用户的潜在的层级兴趣;

(3)对三个真实世界的推荐场景(电影、图书、新闻)进行了实验,结果证明RippleNet在几个最好的基线上都是有提高的。

2、问题定义

用户集 U={u1,u2,…}U = \{ u1, u2, …\}U={u1,u2,}
项目集 V={v1,v2,…}V = \{ v1, v2, …\}V={v1,v2,}
用户-项目 交互矩阵 Y={yuv∣u∈U,v∈V}Y = \{ y_{uv} | u ∈ U, v ∈ V\}Y={yuvuU,vV}
yuv={1,if interaction (u,v)is observed0,otherwisey_{uv}=\left\{ \begin{aligned} 1 &,\quad \text{if interaction $(u,v)$ is observed} \\ 0 &,\quad \text{otherwise} \end{aligned} \right.yuv={10,if interaction(u,v)is observed,otherwise

知识图谱 G={(h,r,t)∣h,t∈E,r∈R}G = \{ (h,r,t) | h, t ∈ E, r ∈ R \}G={(h,r,t)h,tE,rR}

在许多推荐场景中,item v∈Vv ∈ VvV 可能与知识图谱中的一个或多个 entity相关

目标:学习预测函数y^uv=F(u,v;Θ)\hat{y}_{uv} =F( u, v ; Θ )y^uv=F(u,v;Θ)y^uv\hat{y}_{uv}y^uv表示用户 uuu 点击项目 vvv 的可能性

3、RippleNet模型

3.1、水波纹集Ripple Set

定义1(相关实体):给定交互矩阵YYY和知识图GGG,用户uuukkk-hop相关实体集被定义为:εuk={t∣(h,r,t)∈Gandh∈εuk−1},k=1,2,⋯,H\varepsilon_u^k=\{t|(h,r,t)\in\mathcal{G}\quad and \quad h\in\varepsilon_u^{k-1}\},k=1,2,\cdots,Hεuk={t(h,r,t)Gandhεuk1},k=1,2,,Hk=0k=0k=0时,表示用户历史点击项目,被视为KG中用户uuu的种子集:εu0=Vu={v∣yuv=1}\varepsilon_u^0=\mathcal{V}_u=\{v|y_{uv}=1\}εu0=Vu={vyuv=1}定义2(纹波集):用户uuukkk-hop纹波集被定义为从εuk−1\varepsilon_u^{k-1}εuk1开始的知识三元组:Suk={(h,r,t)∣(h,r,t)∈Gandh∈εuk−1},k=1,2,⋯,H\mathcal{S}_u^k=\{(h,r,t)|(h,r,t)\in\mathcal{G}\quad and\quad h\in\varepsilon_u^{k-1}\},k=1,2,\cdots,HSuk={(h,r,t)(h,r,t)Gandhεuk1},k=1,2,,H

3.2、框架Framwork

知识图谱通常包含有较多实体和实体之间的联系, 例如如图3所示,电影“Forrest Gump”(阿甘正传)与“Robert Zemeckis”(导演)、“Tom Hanks”(明星)、“U.S.“(国家)和“Drama”(戏剧)联系在一起,而“Tom Hanks”则与他主演的电影“The Terminal”(幸福终点站)和“Cast Away”(荒岛余生)联系在一起。这些复杂的联系为我们提供了一个深刻而潜在的视角来探索用户喜好。 例如,如果用户曾经观看过“阿甘正传”,他可能会成为Tom Hanks(汤姆.汉克斯)的粉丝并对“The Terminal“或“Cast Away”也感兴趣。

模型框架图如图2所示:

输入:用户uuu 和 预测项vvv
输出:用户uuu 点击 项vvv 的可能性分数

对于每一个输入用户uuu,他的历史兴趣集Vu\mathcal{V}_uVu被视为KG中的种子,然后沿着KG链接迭代地扩展用户的兴趣,形成多个水波纹集Suk(k=1,2,…,H)\mathcal{S}_u^k( k = 1,2,…,H)Suk(k=1,2,,H)。一个水波纹集Suk\mathcal{S}_u^kSuk是距离种子集Vu\mathcal{V}_uVukkk-hop(s)距离的一组知识三元组。这些水波纹集迭代地与项 vvv (黄色竖条块)进行交互来获取用户关于项 vvv 的响应(绿色竖条块),然后将这些响应结合形成user embedding(灰色竖条块),最后使用 user embedding 和 item embedding 计算可能性分数y^uv\hat{y}_{uv}y^uv

3.3、偏好传播Preference Propagation

每个项目vvv 与项目嵌入v∈Rdv∈R^dvRd 相关联,其中ddd是嵌入的维度。项目嵌入可以基于应用场景包含 one-hot ID,属性,bag-of-words 或上下文信息。 给定项目嵌入vvv 和用户uuu的1-hop纹波集合Su1\mathcal{S}_u^1Su1,通过将项目vvv与头部hih_ihi和关系rir_iri进行比较(hih_ihirir_iriSu1\mathcal{S}_u^1Su1中的每个三元组(hi,ri,ti)(h_i, r_i, t_i)(hi,ri,ti))分配一个关联概率(蓝色块):pi=softmax(vTRihi)=exp(vTRihi)∑(h,r,t)∈Su1exp(vTRh)p_i=softmax\left(v^TR_ih_i\right)=\frac{exp\left(v^TR_ih_i\right)}{\sum_{(h,r,t)\in\mathcal{S}_u^1}exp\left(v^TRh\right)}pi=softmax(vTRihi)=(h,r,t)Su1exp(vTRh)exp(vTRihi)

Note:pip_ipi可以看作在关系空间Ri∈Rd×dR_i∈ R^{d×d}RiRd×d中,item vvv 和 entity hih_ihi 的相似度。注意,在计算项目vvv和实体hhh的相关性时,有必要考虑嵌入矩阵RRR ,因为项目 - 实体对在通过不同关系测量时可能具有不同的相似性。 例如,“Forrest Gump”和“Cast Away”在考虑他们的导演或明星时非常相似,但如果按流派或作家来衡量,则没有共同之处。

然后将尾部tit_iti和相关权重pip_ipi相乘再求和得到向量ou1o_u^1ou1ou1=∑(hi,ri,ti)∈Su1pitio_u^1=\sum_{(h_i,r_i,t_i)\in\mathcal{S}_u^1}p_it_iou1=(hi,ri,ti)Su1piti用户的兴趣从他的历史集合Vu\mathcal{V}_uVu沿着Su1\mathcal{S}_u^1Su1中的链路转移到他的1-hop相关实体εu1\varepsilon_u^1εu1的集合,这在RippleNet中称为偏好传播。

vvvou1o_u^1ou1取代可计算出ou2o_u^2ou2,同理可以计算出ou3,⋯,ou4o_u^3,\cdots,o_u^4ou3,,ou4

然后user embedding 可以用各阶响应之和表示:u=ou1+ou2+⋯+ouHu=o_u^1+o_u^2+\cdots+o_u^Hu=ou1+ou2++ouHNote:尽管在理论上最后一步ouHo_u^HouH包含了之前每一步的信息,但还是有必要把之前的ouko_u^kouk加入计算,因为之前的ouko_u^kouk的信息传到最后被稀释了。

最后user embedding 和 item embedding一起来预测uuu点击vvv的可能性:y^uv=σ(uTv)\hat{y}_{uv}=\sigma(u^Tv)y^uv=σ(uTv)

3.4、学习算法Learning Algorithm

在给定知识图谱GGG,用户的隐式反馈YYY时,我们希望最大化后验概率:maxp(Θ∣G,Y)\text{max}\quad p(\Theta|\mathcal{G},Y)maxp(ΘG,Y)

其中Θ\ThetaΘ包括所有实体,关系和项目的嵌入,后验概率展开后相当于最大化p(Θ∣G,Y)p(Θ,G,Y)p(G,Y)∝p(Θ)⋅p(G∣Θ)⋅p(Y∣Θ,G)p(\Theta|\mathcal{G},Y)\frac{p(\Theta,\mathcal{G},Y)}{p(\mathcal{G},Y)}\propto p(\Theta)\cdot p(\mathcal{G}|\Theta)\cdot p(Y|\Theta,\mathcal{G})p(ΘG,Y)p(G,Y)p(Θ,G,Y)p(Θ)p(GΘ)p(YΘ,G)

第一项p(Θ)p(Θ)p(Θ)是测量模型参数ΘΘΘ的先验概率,我们认为参数的先验概率服从零均值和对角协方差矩阵的高斯分布:p(Θ)=N(0,λ1−1I)p(\Theta)=\mathcal{N}(0,\lambda_1^{-1}I)p(Θ)=N(0,λ11I)

第二项是给定ΘΘΘ的观察知识图G\mathcal{G}G的似然函数,在RippleNet中,我们使用three-way张量分解方法来定义KGE的似然函数:p(G∣Θ)=∏(h,r,t)∈ε×R×εp((h,r,t)∣Θ)=∏(h,r,t)∈ε×R×εN(Ih,r,t−hTRt,λ2−1)p(\mathcal{G}|\Theta)=\prod_{(h,r,t)\in\varepsilon\times\mathcal{R}\times\varepsilon}p\left((h,r,t)|\Theta\right)\\=\prod_{(h,r,t)\in\varepsilon\times\mathcal{R}\times\varepsilon}\mathcal{N}(I_{h,r,t}-h^TRt,\lambda_2^{-1})p(GΘ)=(h,r,t)ε×R×εp((h,r,t)Θ)=(h,r,t)ε×R×εN(Ih,r,thTRt,λ21)

Note:其中如果(h,r,t)∈G(h,r,t)\in\mathcal{G}(hrt)G,指标 Ih,t,rI_{h,t,r}Ih,t,r 等于1,否则为0。因此可以在相同的计算模型下统一KGE中的实体-实体对和偏好传播中的项目 - 实体对的评分函数。

第三项是给定ΘΘΘ和KG的观察隐式反馈的似然函数,KG被定义为伯努利分布的乘积:p(Y∣Θ,G)=∏(u,v)∈Yσ(uTv)yuv⋅(1−σ(uTv))1−yuvp(Y|\Theta,\mathcal{G})=\prod_{(u,v)\in Y}\sigma(u^Tv)^{y_{uv}}\cdot(1-\sigma(u^Tv))^{1-y_{uv}}p(YΘ,G)=(u,v)Yσ(uTv)yuv(1σ(uTv))1yuv

因此,我们可以得到RippleNet的损失函数形式如下:minL=−log⁡(p(Y∣Θ,G)⋅p(G∣Θ)⋅p(Θ))=∑(u,v)∈Y−(yuvlog⁡σ(uTv)+(1−yuv)log⁡(1−σ(uTv)))+λ22∑r∈R∣∣Ir−ETRE∣∣22+λ12(∣∣V∣∣22+∣∣E∣∣22+∑r∈R∣∣R∣∣22)\text{min}\quad\mathcal{L}=-\log(p(Y|\Theta,\mathcal{G})\cdot p(\mathcal{G}|\Theta)\cdot p(\Theta))\\=\sum_{(u,v)\in Y}-\left(y_{uv}\log\sigma(u^Tv)+(1-y_{uv})\log(1-\sigma(u^Tv))\right)\\+\frac{\lambda_2}{2}\sum_{r\in\mathcal{R}}||I_r-E^TRE||_2^2+\frac{\lambda_1}{2}\left(||V||_2^2+||E||_2^2+\sum_{r\in\mathcal{R}}||R||_2^2\right)minL=log(p(YΘ,G)p(GΘ)p(Θ))=(u,v)Y(yuvlogσ(uTv)+(1yuv)log(1σ(uTv)))+2λ2rRIrETRE22+2λ1(V22+E22+rRR22)

Note:第一项可以看作是推荐系统的交叉熵损失,第二项可以看作是知识图谱的平方误差,第三个项是防止过度拟合的正则化项。

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

3.5、相关问题

纹波集的大小可能随着hop数k的增加而变得太大问题

  • 真实KG中的大量实体是sink实体,这意味着它们只有传入链接但没有传出链接,如图3中的“2004”和“PG-13”。
  • 在诸如电影或书籍推荐的特定推荐场景中,关系可以限于与场景相关的类别,以减小波纹集的大小并提高实体之间的相关性。例如,在图3中,所有关系都与电影有关,并且在其名称中包含单词“film”。
  • 最大hop数H在实践中通常不会太大,因为距离用户历史太远的实体可能带来比positive signal还要多的噪声。我们将在实验部分讨论H的选择。
  • 在RippleNet中,我们可以采样固定大小的邻居集,而不是使用完整的纹波集以此来减少计算开销。设计这样的采样器是未来工作的重要方向,尤其是非均匀采样器,以便更好地捕获用户的hierarchical潜在兴趣。

3.6、讨论

(1) 可解释性。RippleNet基于KG探索用户的兴趣,它通过跟踪从用户历史到KG中具有高关联概率的项目的路径,提供了一个新的可解释性观点。

(2)ripple叠加。用户点击历史记录中不同项目的相关实体常常高度重叠。换句话说,从用户的点击历史记录开始,可以通过KG中的多个路径访问实体。

4、实验

三个场景:电影、书籍、新闻推荐,具体的数据集信息和对应的超参数如下:

  • Movielens-1M是电影推荐中广泛使用的基准数据集,评分1-5.
  • Book-Crossing数据集包含对图书交叉社区图书的1149780个明确评分(从0到10不等)。
  • Bing News数据集包含从2016年10月16日至2017年8月11日Bing News的服务器日志中收集的1025192条隐含反馈。每条新闻都有标题和片段。

输入:

对于MovieLens-1M和Book Crossing,我们使用用户和项目的ID embedding作为原始输入,而对于Bing News,我们将一条新闻的ID embedding和其标题的平均单词embedding连接为项目的原始输入,因为新闻标题通常比电影或书籍的名称长得多。

构造知识图谱:

我们使用Microsoft Satori为每个数据集构造知识图。

对于MovieLens-1M和Book Crossing,我们首先从KG集中选择 关系名包含“movie”或“Book”且置信度大于0.9的三元组子集。

给定子KG,我们通过将所有有效电影/书籍的名称与三元组的尾部(head,film.film.name,tail)或(head,book.book.title,tail)匹配来收集它们的ID。为简单起见,排除没有匹配或多个匹配实体的项目。

然后,我们将ID 与所有KG三元组的头和尾匹配,从子KG中选择所有匹配良好的三元组,并将实体集迭代扩展到四跳。

Bing新闻的构造过程与以上相似,不同之处在于:

(1)我们使用实体链接工具来提取新闻标题中的实体;

(2)由于新闻标题中的实体不在一个特定的域内,因此我们不限制关系的名称。三个数据集的基本统计数据见表1。

基线方法:

CKE、SHINE、DKN、PER、LibFM、Wide&Deep

实验设置:

设置高的H性能不能提升且计算量大。

训练集:验证集:测试集 = 6:2:2

指标:

准确性和AUC评估CTR预估性能。

精度、召回、F1评估推荐性能。

实验结果:

CTR预测实验

位置推荐实验:

5、实验代码

数据下载地址为:https://pan.baidu.com/share/init?surl=3vL-z5Wk3jQFfmVIPXDovw 密码:infx

在对数据进行预处理后,我们得到了两个文件:kg_final.txt和rating_final.txt

rating_final.txt数据形式如下,三列分别是user-id,item-id以及label(1表示正样本,0是负样本。0是通过负采样得到的,正负样本比例为1:1)。label表示用户与项目的偏好和不偏好。

kg_final.txt格式如下,三类分别代表h,r,t(这里entity和item用的是同一套id):

h和 t都是有关于item的实体,类似于 “4657 film.actor.film 64604” 。 电影 id 为4657的导演是 电影id 64604。

以下的关系 r 为film.actor.film等,比如 “film.film.star”、“film.film.writer”、“film.person_or_entity_appearing_in_film.film”。共有25种关系。

RippleNet:知识图谱与推荐系统联合学习 CIKM 2018相关推荐

  1. 推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现

    作者:石晓文 Python爱好者社区专栏作者个人公众号:小小挖掘机 添加微信sxw2251,可以拉你进入小小挖掘机技术交流群哟!博客专栏:wenwen 在本系列的上一篇中,我们大致介绍了一下知识图谱在 ...

  2. 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现

    学习的博客: 推荐系统遇上深度学习(二十六)–知识图谱与推荐系统结合之DKN模型原理及实现 知识图谱特征学习的模型分类汇总 知识图谱嵌入(KGE):方法和应用的综述 论文: Knowledge Gra ...

  3. 如何将知识图谱引入推荐系统?

    分享嘉宾:王鸿伟 斯坦福大学 博士后 编辑整理:屈垠岑 出品平台:DataFunTalk 导读:在信息爆炸的互联网时代,推荐系统可以理解用户的个性化偏好和需求,帮助用户筛选出自己感兴趣的产品和服务.然 ...

  4. 知识图谱与推荐系统之《Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation》MKR

    依次训练的方法主要有:Deep Knowledge-aware Network(DKN) 联合训练的方法主要有:Ripple Network 交替训练主要采用multi-task的思路,主要方法有:M ...

  5. 知识图谱与推荐系统综述

    1. 知识图谱的起源 知识图谱(Knowledge Graph),最早起源于Google Knowledge Graph.知识图谱本质上是一种语义网络.其结点代表实体(entity)或者概念(conc ...

  6. 论文浅尝 | 中科院百度微软等学者最新综述论文40+最新方法阐述知识图谱提升推荐系统准确性与可解释性...

    本文转载自公众号:先知. [导读]近来,知识图谱用于推荐系统是关注的焦点,能够提升推荐系统的准确性与可解释性.如何将知识图谱融入到推荐系统呢?  最近中科院计算所百度微软等学者最新综述论文<A ...

  7. A Survey on Knowledge Graph-Based Recommender Systems 知识图谱提升推荐系统准确性与可解释性ArXiv 2020

    论文链接:https://arxiv.org/pdf/2003.00911.pdf 导读 近来,知识图谱用于推荐系统是关注的焦点,能够提升推荐系统的准确性与可解释性.如何将知识图谱融入到推荐系统呢? ...

  8. 《知识图谱》赵军 学习笔记

    知识图谱读书笔记 文章目录 知识图谱读书笔记 一. 概述 1.1 什么是知识图谱 1.2 知识图谱发展历程 1.3 知识图谱类型 1.4 知识图谱生命周期 知识体系构建 知识获取 知识融合 知识存储 ...

  9. 知识图谱用于推荐系统问题(MKR,KTUP,KGAT)

    前一篇文章介绍了知识图谱用于推荐系统问题(CKE,RippleNet),这一篇博文目整理对KG和RC融合的更加深入的两篇文章MKR,KTUP.MKR利用一个Cross单元使两者融合,KTUP则是相互补 ...

最新文章

  1. 深圳某女孩身家上千万,却称自己不配追求大厂程序员
  2. Linux下的DNS服务器搭建
  3. ViewPager+TabLayout
  4. php return 变量,php内核笔记–函数返回变量return_value
  5. c 获取mysql安装路径_linux查看mysql安装路径
  6. python语言为何不受待见_程序员为什么讨厌这些语言
  7. protobuf 编码实现解析(java)
  8. Elasticsearch版本控制理解
  9. 计算机毕业设计-JSP+Servlet网上会议室预约系统-JavaWeb会议室预约系统
  10. R语言plot函数参数合集
  11. ALEVEL经济ESSAY题写作技巧
  12. python函数进阶小结_python函数的进阶
  13. [附源码]java毕业设计校园征兵及退役复原管理系统
  14. 遇见狂神说HTML笔记1
  15. Kubernetes(k8s)的Secret以密文的方式存储数据
  16. jsp全是问号_JSP response,request中文乱码(出现问号)总结
  17. 2022.02.23_HTML+CSS学习总结_CSS初识、选择器与标签的分类
  18. 基于控制台的c语言游戏常用操作
  19. 解决语雀导出markdown后图片无法显示问题(无需运行脚本)
  20. IOS-10.0~10.2越狱后使用ssh链接

热门文章

  1. K8S 核心组件 kubelet 与 kube-proxy 分析
  2. AngularJS 国际化 支持记录语言刷新后语言不变
  3. golang for range原理(转载)
  4. 正则表达式表示的IP
  5. Spring Boot+Maven将配置文件打包到Jar包外方便运维修改配置
  6. DDD领域模型、贫血模型、充血模型概念总结
  7. html高度的属性的值,html – 行高属性是否可以继承父Div的高度属性或其所属Div的访问高度属性?...
  8. Scrapy复习总结
  9. 在scrapy上使用cookie模拟登录
  10. IDEA依赖冲突分析神器—Maven Helper