RippleNet:Propagating User Preferences on the KnowLedge Graph for Recommender Systems PPT讲稿

PPT下载链接:RippleNet
声明:我上传时候设置的无需c币,但是csdn设置成了需要c币
如有需要的相关小伙伴欢迎私信我wx:15665827620
因为博文评论我大概率不会及时查收到

page 1

今天主要介绍的论文是发表在CIKM2018上的RippleNet
首先这个题目就比较绕
翻译:在推荐系统上使用知识图谱来推测用户的偏好
这篇论文有三个keywords:
Recommender systems; knowledge graph; preference propagation

page 2

接下来将通过6个方面来分别剖析这篇论文以及相关的概念

page 3

推荐系统的任务:
推荐系统的任务就是联系用户和信息一方面帮助用户发现对自己有价值的信息,而另一方面让信息能够展现在对它感兴趣的用户面前从而实现信息消费者和信息生产者的双赢
从而解决information overload的状况

我们也时常讲推荐系统与搜索引擎做比较
因为他们是同一个问题的两种解决方法

相同点:帮助用户快速发现有用信息的工具
不同点:和搜索引擎不同的是推荐系统不需要用户提供明确的需求而是通过分析用户的历史行为来给用户的兴趣建模从而主动给用户推荐出能够满足他们兴趣和需求的信息。

首先来看一下推荐系统的分类
推荐系统简单可分为三大类:
1.协同过滤推荐系统
又分memory-based CF 和 model-based CF
而memory-based CF
包括user-based CF和item-based CF
user-based算法核心:当一个用户A需要个性化推荐时,可以先找到他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没听过的物品推荐给A。
a) 找到和目标用户兴趣相似的用户集合
b) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

item-based算法核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品。
第一步:计算物品之间的相似度;
第二步:根据物品的相似度和用户的历史行为给用户生成推荐列表;
2.基于内容过滤的推荐系统
使用不同的模型来查找文本项目之间的相似性。它可以使用向量空间模型( Vector Space Model),如关键词权重计算法(TF / IDF,Term Frequency Inverse Document Frequency),或概率模型,如朴素贝叶斯分类器、决策树、或神经网络,在语料库中模拟不同文本项目之间的关系。之后,通过统计分析或机器学习技术来学习基础模型,从而生成推荐结果。
3.混合方法的推荐系统

机器学习中有所谓的集成学习(Ensemble Learning),广泛应用于分类和回归问题,本质上是利用多个分类或者回归算法,通过这些算法的有效整合获得更好的分类或者预测效果。集成方法之所以有效,是因为通过不同的算法组合可以有效地降低系统性误差(方差),最终达到更好的效果。在理财投资中也有类似的思路,通过分散投资,构建多类别的投资组合来降低风险

4.最后我们生活中常见的推荐系统的实际应用场景有很多
RippleNet:Propagating User Preferences on the KnowLedge Graph for Recommender Systems PPT讲稿_第1张图片


待定讲不讲
推荐系统所做的事情就是通过发掘用户的行为找到用户的个性化需求从而将长尾中的商品准确地推荐给需要它们的用户帮助用户发现那些他们感兴趣但很难发现的商品。

page 4

接下来我们引入知识图谱的概念
上世纪提出的语义网络和专家系统都可以看到知识图谱的影子

直到2012年5月16日,谷歌为了提升自己搜索返回结果的质量和保证用户查询的高效性,写了一篇文章来叫做:introducing
the KG:things, not strings提出了知识图谱的概念,并明确区分其与字符串的不同

在本篇论文中所涉及的知识图谱是一个异构网络
为了解决推荐系统传统算法中存在的用户数据稀疏和冷启动问题
我们一般会把知识图谱作为side-information

  1. 冷启动问题
    冷启动一般分为新用户冷启动和新”标的物”冷启动。对于新用户,由于没有相关行为或者行为很少,无法获得该用户的兴趣偏好,因而无法为他进行有效的推荐。对于新入库/上线的标的物,由于没有用户或者很少用户对它进行操作(点击、浏览、评论、购买等),我们不知道什么类型的用户喜欢它,因而也很难将它推荐出去。

  2. 数据稀疏性问题
    由于很多推荐应用场景涉及到的“标的物”数量巨大(头条有百亿级规模的文章、淘宝有千万级的商品等),导致用户行为稀少,对于同一个“标的物”,只有很少用户有相关行为,这让构建推荐算法模型变得非常困难。

一般认为知识图谱由SPO三元组构成,即subject- predict - object 并用资源描述框架RDF来进行标准的统一

在右下角的知识图谱表示中

每一个节点对应一个实体,比如这里的cast away(荒岛余生) back to the future (回到未来)等
这里有些是电影明星有些是电影导演(指)

这幅图里面还有的其他元素就是边
每条边携带一种语义,即表示一种实体之间关系,这就是典型的知识图谱的组成形式

举tom hanks和cast away之间的关系是演出与被演出
这里的语义都比较直接

而以知识图谱为基础的推荐系统就是把知识图谱作为side information来像用户推荐
对于电影而言,这里的relation和其他一些entities都可以作为side-information来丰富影片本身的feature的表征

page 5

比如说这个用户看了这里的三部电影
我们可以通过知识图谱得到左侧这些电影和所有其他电影之间的关系
如果一个用户更关注电影明星而不是一类电影,那么相比insteller,阿甘正传更容易被推荐给这个用户
或者说在推荐的列表上,阿干正转的排名要更前

page 6

我们也可以把知识图谱看作两层的一个结构

在上层我们放置一个kg,在这一层我们会有很多的节点和连接关系
在用户层上,每一个节点就对应一个用户

两层之间的连接就是用户的历史点击
可以认为是用户和电影之间的联系

就我放出的图而言,一个用户看了三部电影

我们KG-based推荐系统的目标就是推测出用户看除这三部电影之外所有其他电影的概率

好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现他们可能会感兴趣,但却不那么容易发现的东西

page 7

我们现在介绍这篇paper之前已经有的一些结合了kg和推荐系统的工作

首先是基于embedding的方法,这些方法是基于KG中节点的邻居关系学习一个entity-embedding出来,之后把学出来的embedding用于推荐
这个方法的问题在于它比较适合一些图上的任务,比如link-prediction,直接拿来用未必非常适合推荐系统

第二类是基于路径的方法
也就是在图上进行随机游走或者基于meta-path采样一些路径
然后建模路径中节点的共性关系等等
这个方法的问题是你需要手工设计一些meta-path,这在实际当中比较困难,因为你不知道你手工设计出来的meta-path是不是合适,也不一定全面

page 8

所以这篇工作的motivation就是结合上面的两个方法,它不仅仅是靠邻居关系学一个embedding出来,而且是引入了多跳的类似于路径的信息
这篇paper的关键idea就是用户的兴趣沿着边(relation)在知识图谱上进行扩散,扩散到的节点就可以认为是side-information,与用户兴趣有关,可以用来加强用户兴趣的表征,这个过程就像是水波扩散一样,所以叫做ripplenet

讲图:
起点是用户看过的电影 阿甘正转
从这个点出发,沿着KG上面的这些边即relation向外扩散
1,2,3跳一直扩散出去,扩散到的节点就可以作为side-information作为用户兴趣的表征

page 9

我们来看一下ripplenet的整体架构
先看这个图的上半部分,也就是用户兴趣扩散的这个过程,从左到右,我们把用户的点击历史作为种子节点
从这些种子节点出发,往外跳,每条一下拿到这一条的rippleset,head是起点,tail是重点
接下来就是representation aggregation (表征聚合)
也就是说我们要把多跳拿到的信息聚合起来,变成一个表征作为用户的兴趣表征,对于每一跳的rippleset中的item,它利用一种加权和的形式拿到统一的表征,这样的过程迭代多次就能拿到高阶的表征

page 10

接下来我们用一个实例来讲解模型的细节
我们假设一个用户看了两部电影
下一步我们需要衡量用户看的电影与其他可能实体之间的偏好可能性
介绍h r t,这个图中有1-hop的rippleset有6个三元组
但我们的目标是推测用户偏好,拿1-hop来说
我们接下来需要衡量的就是用户看的这个电影与1-hop away实体之间的关联度来试探出用户的可能偏好
因为不是所有1-hop away的节点都有同样高的重要性,有些重要,有些就不重要或者说不符合用户偏好

解释三个相乘 分别是什么
从右向左开始讲
最右侧是head (hi)
中间d*d维的事relation 即公式中的r_i
最左侧为item-embedding 即v
这里的item-embedding根据不同的应用场景来决定使用什么编码方式,常见的就是我们平时经常听到的比如效果不是很好的one-hot啊,还有bow(bag-of-words)模型

接下来就跟框架总体图中展示的内容一致,通过embedding矩阵相乘,使用softmax来normlize,得到attention结果,比如在这里就是6个attention score,也就是归一化相似度

问题一:算pi为什么要加上relation?
因为item-entity 对 在使用不同relation度量的时候可能有不同的relevance
就比如你看上面的图,额,《阿甘正传》和《荒无人烟》在考虑演员时非常相似,但如果以流派(genre)来衡量,它们就没有那么相似了,所以需要加上relation来算pi

page 11

在得到相关概率后,即归一化相似度之后,我们对第一层Ripple set 的(t)进行加权求和,得到的结果作为这一层的输出o

如果有人问相关问题,那么讲法如下:
本质上属于Attention,Q=v,K=h*r,V=t);这里用到了图谱假设hR=t

page 12

接下来的Hop2过程,用户可能不只是对与自己1-hop away的entity感兴趣,所以我们需要继续传播

重复Hop1过程,将第一层的Ripple set的tail作为第二层的head,先取出第二层的Ripple set,然后用用第二层的Ripple set跟item的相似度及加权表示作为输出o

page 13 14 15

下面我们介绍一下ripplenet的loss function
loss function采用交叉验证的方式并加上了正则项防止模型过拟合
我们的目标是最大化模型参数的后验概率
given知识图谱和用户的点击记录
条件概率通过贝叶斯定理展开可以发现正比于后面三项的乘积
theta是模型的所有参数,p_theta表示模型参数的先验概率我们通过一个高斯分布来对他进行建模
可以看到这里我们将p(Θ)设为具有零均值和对角协方差矩阵的高斯分布

第二项是给定模型的参数,我们观测到KG的概率
这里的I_h,r,t是一个indicater,如果三元组存在就为1,不存在就为0
实际上就是说通过embedding来重建这个kG

最后一项是用户点击行为的likelihood
这就是我们常见的likelihood的表示

那么我们就可以推导得到
maximize probability就是minimize log likelihood
第一个部分就是 cross-entropy 比较常见
后面是两个正则项,embedding表征E,relation表征R
乘在一起重建KG的一个平方误差的loss,第三个是embedding的l2-norm,加在一起构成了最后的loss

Learning algorithm就是说先准备好H个rippleset
sample好正负的点击记录
然后sample KG上的正负三元组

正的triple就是KG上存在的三元组
然后反向传播计算各个参数的导数,进行SGD 更新

page 16

我们接下来看一下实验结果
使用了三个数据集
真实世界的推荐场景(电影、图书、新闻)进行了实验

为什么只进行4-hop?
如果向外跳太多跳,数据量会很大,而且距离用户起点太远的点和用户兴趣就不是很大了,所以截断了一下只用了四跳的信息

超参数:H就是向外传播的次数
d是item-embedding 和 user-embedding的维度

page 17-18

推荐有两个场景或者说检验推荐系统性能的指标:
首先是CTR推荐
我们使用训练数据集进行训练直到模型收敛
这样我们就学到了user-embedding和item-embedding
然后我们就可以讲训练好的模型来预测对于某个用户推荐他点击历史以外的其他item的概率

如果推荐的概率是大于0.5的那么我们就say yes,否则就是say no
这里的检验指标选择了Accuracy和acc score
可以看到ripplenet在三个数据集上相比其他模型都有比较大的提升

另外一个推荐的场景就是TOP-k推荐
之前我们检验的标准是我们是否要向用户推荐该item
但是我们也想知道我们推荐的ranking-list是否准确
对于测试的推荐正负样本进行排序,最后选择前k个的样本
使用三个标准进行检验
分别是。。。。。。

page 19

每一行对应一个dataset,每一列对应一个evaluation metrics
可以看到对于precision@k而言,我们增加k就引入了更多的噪声,效果随着k的下降而变差,但是ripplenet也还是始终效果要比其他模型的baseline要好

page 20

在实际在数据集上进行模型训练的过程中
我们发现模型存在比较高的参数敏感性
首先我们可能会存在疑问,是否存在一个普适最优的H值呢
像上图所示,我们的推荐准确率在H的不断增大中必然会经历下降,就实验的数据而言,其中H为2或3时性能最佳。
论文上这样解释:
我们将这种现象归因于长距离依赖性的正信号与噪声的负信号之间的权衡
所以我们看到正如上面讲到的
H太小几乎无法探索实体间的相关性和长距离下的实体依赖性,而H太大会带来比有用信号更多的噪声

同理我们可以看到对于user和item-embedding的维度较小的时候我们通过提高维度可以实现性能的提升,但是过大的维度会同样带来噪声的引入,导致性能的下降

page 21

最后介绍一下可视化场景下的case study来展示ripplenet学到了什么信息,这是一个新闻推荐的场景
我们需要打分的candidate news是trump宣布美国警察击毙了一个枪手
上面click history展示了用户历史上看过的四个新闻
是有关像海豹突击队啊,朝核问题,朝鲜局势,微软笔记本电脑
那么我们把这些click history作为种子节点,在KG上进行扩散,算出来的没有进行归一化的权重就如图所示,连线的颜色越深就代表那个值越大,也就是越有关,越相关

我还发现从那四个历史点击过的新闻的节点出发,有几条颜色比较深的边
比如Navy SEAL 到Special Forces 到Gun 到 police
或者
Navy SEAL 到U.S.到Donald Trump

这些颜色比较深的路径延伸到了candidate新闻有关的节点,这样就能够说明ripplenet能够学到对某个candidate item应该如何传播用户的preference,证明了模型学到了一个有效的pattern

page 22

Conclusion:
RippleNet通过引入偏好传播,克服了现有的基于嵌入和基于路径的KG感知推荐方法的局限性,RippleNet可以自动传播用户的潜在偏好,并探索他们在KG中的层次性兴趣

RippleNet将偏好传播与KGE在贝叶斯框架中的正则化统一起来,预测了用于点击率。通过在三种实际应用场景下进行了大量的实验发现该方法比其他相关方法的baseline具有明显的优越性

你可能感兴趣的:(论文阅读)