论文链接: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 = { u 1 , u 2 , … } U = \{ u1, u2, …\} U={
u1,u2,…}
项目集 V = { v 1 , v 2 , … } V = \{ v1, v2, …\} V={
v1,v2,…}
用户-项目 交互矩阵 Y = { y u v ∣ u ∈ U , v ∈ V } Y = \{ y_{uv} | u ∈ U, v ∈ V\} Y={
yuv∣u∈U,v∈V}
y u v = { 1 , if interaction ( u , v ) is observed 0 , otherwise y_{uv}=\left\{ \begin{aligned} 1 &,\quad \text{if interaction $(u,v)$ is observed} \\ 0 &,\quad \text{otherwise} \end{aligned} \right. yuv={
10,if interaction (u,v) is observed,otherwise
知识图谱 G = { ( h , r , t ) ∣ h , t ∈ E , r ∈ R } G = \{ (h,r,t) | h, t ∈ E, r ∈ R \} G={ (h,r,t)∣h,t∈E,r∈R}
在许多推荐场景中,item v ∈ V v ∈ V v∈V 可能与知识图谱中的一个或多个 entity相关
目标:学习预测函数 y ^ u v = F ( u , v ; Θ ) \hat{y}_{uv} =F( u, v ; Θ ) y^uv=F(u,v;Θ), y ^ u v \hat{y}_{uv} y^uv表示用户 u u u 点击项目 v v v 的可能性
3、RippleNet模型
3.1、水波纹集Ripple Set
定义1(相关实体):给定交互矩阵 Y Y Y和知识图 G G G,用户 u u u 的 k k k-hop相关实体集被定义为: ε u k = { t ∣ ( h , r , t ) ∈ G a n d h ∈ ε u k − 1 } , 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,H εuk={ t∣(h,r,t)∈Gandh∈εuk−1},k=1,2,⋯,H当 k = 0 k=0 k=0时,表示用户历史点击项目,被视为KG中用户 u u u的种子集: ε u 0 = V u = { v ∣ y u v = 1 } \varepsilon_u^0=\mathcal{V}_u=\{v|y_{uv}=1\} εu0=Vu={ v∣yuv=1}定义2(纹波集):用户 u u u 的 k k