【论文笔记和代码梳理】RippleNet:基于知识图谱的用户偏好传播

【导读】这个是CIKM2018的论文,论文提出了一种RippleNet结构,是一个能够把知识图谱(KG)自然地融入推荐系统(RS)的一个端到端的框架。类似于水面上的波纹一圈又一圈的向外扩展一样,RippleNet可以在以三元组(实体,关系,实体)构成的知识图谱(KG)上沿着实体与实体之间的联系去寻找user潜在的喜好,好比水波一圈又一圈的扩散,逐步迭代寻找最有可能clickitem.

   

输入:user-item pairs

输出:user点击item的概率

动机

尽管collaborative filtering(CF) 算法已经在解决这个问题上取得了很大的成功,但是它本身依旧存在交互矩阵稀疏性和冷启动的问题。而加入一些辅助信息可以有效的解决这个问题。在各种类型的辅助信息中。KG在实体方面具有得天独厚的优势:

  1. KG可以提供相关实体间的语义关系,通过发掘这层联系有助于提升推荐的items的精度。

  2. KG由各种类型的关系组成,有助于探寻user的深层次兴趣点和增加推荐项目的选择性。

  3. KGuser的历史记录和推荐结果联系到一起,使得个性化推荐有了explainability.



KG-aware recommendation

  1. embedding-basedmethods:KGE(knowledge graph embedding)KG预处理,并把学习学习到的entity embedding结合到推荐系统框架中。以Deep Knowledge-aware Network(DKN)为例,DKN把实体embedding和word embedding当做不同的通道,然后设计一个CNN网络把他们结合到一起用于新闻推荐。

  2. path-basedmethods:通过在KG中探索实体之间各种不同的联系来为推荐提供额外的指导。缺点主要是(1)严重依赖手动设计meta-paths,而这在实际当中很难去优化。(2)在一些实体和关系不在同一个域中的场景不可能去手动设计meta-paths

  3. 基于二者的局限性提出了RippleNet(1)RippleNet通过perference propagationKGE方法用到了推荐中。(2).RippleNet可以根据user的历史点击记录自动寻找候选itempath,不用手动设置。


RippleNet框架

1.Framework

对于RippleNet:给定交互矩阵Y和知识图谱G,目标是学习一个预测函数F来预测用户u对项目v的点击概率,其中Θ为F的参数:


参数表示:

user:U = {u1,u2,u3.....}

item:V = {v1,v2,v3......}

user-item交互矩阵Y = {yuv|uU,vV}

 

知识图谱G用三元组表示:(h,r,t),其中h,tE,rRE是图谱中的实体,即entity,R为图谱中的关系,即relation.给定交互矩阵和知识图谱,用户userk-hop相关实体集定义为:


2.Ripple Set

Ripple set中随着hop数量的增加,每一轮hopuser的潜在爱好的权重也会随之减小。


3.PreferencePropagation


损失函数



损失函数分为三部分:

第一部分

是交互矩阵Y(隐式反馈矩阵)RippleNet预测结果之间的交叉熵。

第二部分表示学习到的特征向量多大程度上可以代表原来知识图谱KG的结构。

第三部分用来防止过拟合的正则项


数据集处理

实验结果



RippleNet基于三种数据集进行评测,分别是movie,book,news recommendation


Baselines :

    CKE: 表现差于其他baselines

    SHINE:moviebook数据集上的表现好于在news数据集

    DKN:在新闻推荐中的表现好于moviebook

    PER: moviebook推荐中差强人意

    LibFMWide&Deep:因为在算法中充分利用了KG,表现可以

    RippleNet:在三种数据集上表现最佳


从图4可知,当Ripple set的大小为32时,Movie推荐的AUC表现最好

             Ripple set的大小为16时,Book推荐的AUC表现最好

             Ripple set的大小为32  news推荐的AUC表现最好

从图5可知,当hop number2时,Movie推荐的AUC表现最好

             hop number3时,Book推荐的AUC表现最好

             hop number3时,News推荐的AUC表现最好


部分代码解析

原文链接:

https://arxiv.org/abs/1803.03467

代码链接:

https://github.com/hwwang55/RippleNet

-END-

专 · 知

专知《深度学习:算法到实战》课程全部完成!520+位同学在学习,现在报名,限时优惠!网易云课堂人工智能畅销榜首位!

欢迎微信扫一扫加入专知人工智能知识星球群,获取最新AI专业干货知识教程视频资料和与专家交流咨询!

请加专知小助手微信(扫一扫如下二维码添加),加入专知人工智能主题群,咨询《深度学习:算法到实战》课程,咨询技术商务合作~

请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料!

点击“阅读原文”,了解报名专知《深度学习:算法到实战》课程

展开全文
Top
微信扫码咨询专知VIP会员