知识图谱特征学习在推荐系统中的应用步骤大致有以下三种方式:
![](http://upload-images.jianshu.io/upload_images/4155986-2b95f73d788a2357.png)
依次训练的方法主要有:Deep Knowledge-aware Network(DKN)
联合训练的方法主要有:Ripple Network
交替训练主要采用multi-task的思路,主要方法有:Multi-task Learning for KG enhanced Recommendation (MKR)
本文先来介绍联合训练的方法Ripple Network。
论文下载地址为:https://arxiv.org/abs/1803.03467
1、RippleNet原理
1.1 RippleNet背景
在上一篇中我们介绍了Deep Knowledge-aware Network(DKN),在DKN中,我们需要首先学习到entity的向量和relation的向量,但是学习到的向量,其目的是为了还原知识图谱中的三元组关系,而并非是为了我们的推荐任务而学习的。因此今天我们来介绍一下知识图谱和推荐系统进行联合训练的一种网络结构:RippleNet。
Ripple是波纹的意思,RippleNet就是模拟用户兴趣在知识图谱上的一个传播过程,如下图所示:
![](http://upload-images.jianshu.io/upload_images/4155986-9ce78dc2d25f2aaa.png)
如上图,用户的兴趣以其历史记录为中心,在知识图谱上逐层向外扩散,而在扩散过程中不断的衰减,类似于水中的波纹,因此称为RippleNet。
1.2 RippleNet网络结构
我们先来介绍两个相关的定义:Relevant Entity:在给定知识图谱的情况下,用户u的k-hop相关实体定义如下:
![](http://upload-images.jianshu.io/upload_images/4155986-97a81a280c801e8d.png)
特别地,用户u的0-hop相关实体即用户的历史记录。
Ripple Set:用户u的k-hop ripple set被定义为以k-1 Relevant Entity 为head的相关三元组:
![](http://upload-images.jianshu.io/upload_images/4155986-bff868eddc87d42a.png)
这里,为避免Ripple Set过大,一般都会设定一个最大的长度,进行截断。另一方面,构建的知识图谱都是有向图,只考虑点的出度。
接下来,我们来看看RippleNet的网络结构:
![](http://upload-images.jianshu.io/upload_images/4155986-ec734bf5b72d6bb8.png)
可以看到,最终的预测值是通过item embedding和user embedding得到的,item embedding通过embedding 层可以直接得到,关键是user embedding的获取。user embedding是通过图中的绿色矩形表示的向量相加得到的,接下来,我们以第一个绿色矩形表示的向量为例,来看一下具体是如何计算的。
第一个绿色矩形表示的向量,需要使用的是1-hop的ripple set,对于set中的每