ripple net模型: 知识图谱结合推荐系统

ripple net模型: 知识图谱结合推荐系统

论文地址
这几天大概了解了推荐系统(下面简称RS)这块的几种算法,趁记忆还在,赶紧记录一下

ripple net 最直观的理解

ripple的中文是波纹。波纹是怎么来的呢?是你往水里面扔东西产生的。所以在这里ripple net与RS的结合,就相当于往水里投了一块石头(这里是石头就是波纹的中心,也就是RS中的用户历史点击矩阵)
扔石头就会激起一层又一层的波纹,这里被激起的波纹就对应了知识图谱(下面简称KG)一个又一个的实体。由用户的历史纪录激起的水波,就是用户潜在感兴趣的item
除此之外波纹还有一个特点,它会随着层数的变大而逐渐衰减,这里类比到ripplenet也是同样的
具体可以看下面论文中的图
ripple net模型: 知识图谱结合推荐系统_第1张图片

用公式描述ripple net

好了,通过刚刚对ripple net直观的认识,相信大家心里应该大概明白ripple net的作用机制了,那么接下来我们来看看ripple net的结构
ripple net模型: 知识图谱结合推荐系统_第2张图片
首先我们先来梳理一下大概的内容:
ripple net输入:

  • user的历史点击矩阵(点击则为1,没有点击则为0)
  • 知识图谱

ripple net输出:

  • user对item的潜在偏好,也就是预测矩阵

ripple net内部:
最终想要得到预测矩阵,其实就是要比较user embedding(特征)与item embedding的相似程度,可以用下面的公式来描述他们的相似度
u T v u^Tv uTv
其中 u u u 是user embedding matrix, v v v 是item embedding matrix,那么现在的关键就是要怎么得到这两个矩阵了
首先比较容易直接得到的是item embedding matrix,这里的item有可能是标题等等的内容,通过语义切分,KCNN之类的方法可以直接得到

论文里讲的是通过embedding层可以直接得到,我看了其他的资料有提到说是用KCNN进行语义切分,其实我自己也不是很清楚是不是这么得到item embedding matrix

那么接下来的关键就是要得到user embedding matrix了,user embedding matrix的获得方法比较复杂,需要通过用户历史点击记录,知识图谱以及item embedding matrix共同参与得到。下面详细展开

在解释方法之前先上一些定义

  • KG(知识图谱):KG是一种异构的有向图结构(这里不是很明白异构是什么意思),其中包含许多的三元组{entity,relation,entity},KG中的点为entity,边为ralation. 具体想了解的更清楚可以参考这篇博文当知识图谱遇上个性化推荐
  • relevant entity:通过上面类比水波我们可以知道,外层的水波其实是由内层水波传播的来的,因此这里采用的是递归定义的形式

ripple net模型: 知识图谱结合推荐系统_第3张图片
ripple net中第k层的节点由k-1层的来,其中第0层就是用户的历史纪录
ripple net模型: 知识图谱结合推荐系统_第4张图片
ripple net中第k层的关系
这里最大层数H一般不会设置的太大,一方面太大了计算量也会很大,另一方面如果设置的太大其实后面几层的概率也很小

形式化定义了ripple net中的点和关系,是为了下面计算ripple net的响应

接下来计算item embedding 与 head 的相似性(这里我也不是很明白为什么是计算这两者的相似性,大概意思是 由item embedding作为头传播得到的user embedding?)然后用softmax函数归一化一下。这个相似性就是下面我们要用到的权值
ripple net模型: 知识图谱结合推荐系统_第5张图片
注意论文中有提到,使用 v T R i h i v^TR_ih_i vTRihi 而不是直接用 v T h i v^Th_i vThi 计算相似性的原因是在ripple net中需要考虑路径
考虑了head和relation之后,我们通过加权所有tail 对应的embedding,就得到了用户兴趣通过ripple net之后得到的一阶响应
加权求和
把H阶响应都求和就得到了user embedding矩阵了
user embedding
最终的预测矩阵为(这里用的是sigmoid函数进行归一化)
在这里插入图片描述

ripple net 损失函数

这部分真的是看的最痛苦的地方了…数学功底不够啊…有空再回来写

多重ripple

论文后面还讨论了多重ripple的情形,这里也可以直接联想现实生活中的水波,水波会相互加强,也可能会衰弱产生噪声

你可能感兴趣的:(推荐系统)