一、背景
为了解决协同过滤的稀疏性和冷启动问题,研究人员通常利用诸如社交网络或项目属性等辅助信息来提高推荐性能。 本文将知识图谱视为边信息的来源。 为了解决现有的基于嵌入和基于路径的知识图感知推荐方法的局限性,我们提出了 RippleNet,这是一个端到端的框架,可以自然地将知识图合并到推荐系统中。类似于在水面上传播的实际涟漪,RippleNet 通过沿知识图谱中的链接自动且迭代地扩展用户的潜在兴趣来刺激用户偏好在知识实体集上的传播。 由用户历史点击项目激活的多个“涟漪”因此叠加形成用户对候选项目的偏好分布,可用于预测最终点击概率。
知识图谱可以从三个方面受益于推荐:(1)KG 引入项目之间的语义相关性,有助于发现它们的潜在联系,提高推荐项目的精度; (2) KG由多种类型的关系组成,有利于合理扩展用户兴趣,增加推荐项目的多样性; (3) KG 将用户的历史记录和推荐的历史记录联系起来,从而为推荐系统带来可解释性。
RippleNet 背后的关键思想是偏好传播:对于每个用户,RippleNet 将他的历史兴趣视为 KG 中的种子集,然后沿着 KG 链接迭代地扩展用户的兴趣,以发现他对候选项目的分层潜在兴趣。
二、问题定义
三、模型结构
RippleNet 以用户 u 和项目 v 作为输入,并输出用户 u 将点击项目 v 的预测概率。对于输入用户 u,他的历史兴趣集
V
u
V_u
Vu? 被视为 KG 中的种子,然后沿链接扩展 k 形成多个波纹集合
S
u
k
S_u^k
Suk? (k = 1, 2, …, H )。 ripple set
S
u
k
S_u^k
Suk?是距离种子集
V
u
V_u
Vu?有 k 跳的知识三元组的集合。 这些ripple set用于迭代地与项目嵌入(黄色块)交互,以获得用户 u 对项目 v(绿色块)的响应,然后将它们组合形成最终的用户嵌入(灰色块) . 最后,我们使用用户 u 和项目 v 的嵌入来计算预测概率
y
u
v
y^{uv}
yuv
在图2中,每个项目 v 都与一个项目嵌入 v ∈
R
d
R^d
Rd 相关联,其中 d 是嵌入的维度。 项目嵌入可以根据应用场景结合项目的one-hot ID、属性 、词袋或上下文信息。 给定项目嵌入 v 和用户 u 的 1 跳波纹集 ripple set
S
u
1
S_u^1
Su1?,通过将项目 v 与头实体 hi 和该三元组中的关系 ri 进行比较,为
S
u
1
S_u^1
Su1?中的每个三元组 (hi , ri , ti ) 分配一个相关概率: 其中
R
i
∈
R
d
×
d
R_i ∈ R^{d ×d}
Ri?∈Rd×d 和
h
i
∈
R
d
h_i ∈ R^d
hi?∈Rd 分别是关系
r
i
r_i
ri? 和 head
h
i
h_i
hi? 的嵌入。 相关概率
p
i
p_i
pi? 可以看作是项目 v 和实体
h
i
h_i
hi? 在关系
R
i
R_i
Ri? 的空间中测量的相似度。 请注意,在计算项目 v 和实体
h
i
h_i
hi? 的相关性时,有必要考虑嵌入矩阵
R
i
R_i
Ri?,因为在通过不同的关系衡量时,项目-实体对可能具有不同的相似性。 例如,“阿甘正传”和“弃儿”在考虑其导演或明星时非常相似,但如果按类型或作家衡量,则它们的共同点较少。 得到相关概率后,我们取
S
u
1
S_u^1
Su1? 中的尾部和对应的相关概率加权,返回向量
o
u
1
o_u^1
ou1?: 通过将等式4中的 v 替换为
o
u
1
o_u^1
ou1?,我们可以重复偏好传播的过程来获得用户 u 的二阶响应
o
u
2
o_u^2
ou2?,并且该过程可以在用户 u 的ripple set
S
u
i
S_u^i
Sui? 上迭代执行, i = 1,…,H。 因此,用户的偏好被传播到远离他的点击历史的 H 跳,我们观察到用户 u 以不同顺序的多个响应:
|