JavaSE Zookeeper使用 Gitlab Logstash scipy Netty class perl configuration Vanilla JS Normalizecss vue框架 vue基础教程 vue特点 vue表单提交 bootstrap后台模版 photoshop视频教程全集下载 bootstrap图表 cpm怎么计算 linux管道符 lora开发 cmd清空命令 完美解决cpu利用率低 react python的数据类型 python3正则表达式 python定义一个变量 java实例方法 java调用方法 linux系统安装 怎么安装linux系统 图吧导航怎么样 flash实例教程 脚本下载 自动喊话器 电脑密码查看器 谷歌地球用不了 bz2解压命令 思源字体 扫微信二维码诈骗原理
当前位置: 首页 > 学习教程  > 编程语言

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

2020/7/24 11:07:46 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

在这里插入图片描述
论文链接: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, …\}
项目集 V={v1,v2,}V = \{ v1, v2, …\}
用户-项目 交互矩阵 Y={yuvuU,vV}Y = \{ y_{uv} | u ∈ U, v ∈ V\}
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.

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

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

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

3、RippleNet模型

3.1、水波纹集Ripple Set

定义1(相关实体):给定交互矩阵YY和知识图GG,用户uukk-hop相关实体集被定义为:εuk={t(h,r,t)Gandhεuk1},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,Hk=0k=0时,表示用户历史点击项目,被视为KG中用户uu的种子集:εu0=Vu={vyuv=1}\varepsilon_u^0=\mathcal{V}_u=\{v|y_{uv}=1\}定义2(纹波集):用户uukk-hop纹波集被定义为从εuk1\varepsilon_u^{k-1}开始的知识三元组:Suk={(h,r,t)(h,r,t)Gandhεuk1},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,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所示:
在这里插入图片描述
输入:用户uu 和 预测项vv
输出:用户uu 点击 项vv 的可能性分数

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

3.3、偏好传播Preference Propagation

每个项目vv 与项目嵌入vRdv∈R^d 相关联,其中dd是嵌入的维度。项目嵌入可以基于应用场景包含 one-hot ID,属性,bag-of-words 或上下文信息。 给定项目嵌入vv 和用户uu的1-hop纹波集合Su1\mathcal{S}_u^1,通过将项目vv与头部hih_i和关系rir_i进行比较(hih_irir_iSu1\mathcal{S}_u^1中的每个三元组(hi,ri,ti)(h_i, r_i, t_i))分配一个关联概率(蓝色块):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)}

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

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

vvou1o_u^1取代可计算出ou2o_u^2,同理可以计算出ou3,,ou4o_u^3,\cdots,o_u^4

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

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

3.4、学习算法Learning Algorithm

在给定知识图谱GG,用户的隐式反馈YY时,我们希望最大化后验概率:maxp(ΘG,Y)\text{max}\quad p(\Theta|\mathcal{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(Θ)p(Θ)是测量模型参数ΘΘ的先验概率,我们认为参数的先验概率服从零均值和对角协方差矩阵的高斯分布:p(Θ)=N(0,λ11I)p(\Theta)=\mathcal{N}(0,\lambda_1^{-1}I)

第二项是给定ΘΘ的观察知识图G\mathcal{G}的似然函数,在RippleNet中,我们使用three-way张量分解方法来定义KGE的似然函数:p(GΘ)=(h,r,t)ε×R×εp((h,r,t)Θ)=(h,r,t)ε×R×εN(Ih,r,thTRt,λ21)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})

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

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

因此,我们可以得到RippleNet的损失函数形式如下:minL=log(p(YΘ,G)p(GΘ)p(Θ))=(u,v)Y(yuvlogσ(uTv)+(1yuv)log(1σ(uTv)))+λ22rRIrETRE22+λ12(V22+E22+rRR22)\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)

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

直接解决上述问题是难以处理的,因此,我们采用随机梯度下降(SGD)算法来迭代地优化损失函数。 RippleNet的学习算法在算法1中给出。在每次训练迭代中,为了使计算更有效,我们采用负采样策略随机采样来自YY的正/负相互作用的小批量和来自GG的真/假三元组。然后,我们计算损失L\mathcal{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种关系。
在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_50370.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?