知识图谱引入推荐系统的优势
- 知识图谱提供了项目之间的语义相关性,可以帮助我们发现潜在的项目之间的关联性,从而提高推荐的准确性。
- 知识图谱由多种关系类型组成,有利于扩展用户的偏好和增加推荐的多样性。
- 知识图谱连接用户的历史交互和目标项目,可以解释推荐。
ripplenet核心思想
核心思想是偏好传播。对于每一个用户,将用户的交互历史作为种子集合,然后用户的偏好沿着知识图谱进行传播。我们类比偏好传播为水面涟漪,多个涟漪叠加在一起形成用户对知识的偏好分布。
- 用户的潜在兴趣由交互历史引发,然后沿着知识图谱由近及远进行传播,距离越远,用户的偏好越弱。实际上是在寻找和用户历史物品相似的物品。
- 本文重点是通过用户的交互历史及知识图谱提炼出用户的特定表示。
简要概述本文工作
王等人提出了ripplenet,这是利用用户偏好传播的一篇文章,将偏好传播类比为水纹涟漪传播,通过用户的交互历史数据逐层传播,最终获得用户的向量表示。给定用户u和物品v,首先获得用户u的一跳相关三元组
S
u
1
S_u^1
Su1,根据一跳三元组中的元素计算与物品v的相似度
p
i
=
softmax
(
v
T
R
i
h
i
)
=
exp
(
v
T
R
i
h
i
)
∑
(
h
,
r
,
t
)
∈
S
u
1
exp
(
v
T
R
h
)
p_{i}=\operatorname{softmax}\left(\mathbf{v}^{\mathrm{T}} \mathbf{R}_{i} \mathbf{h}_{i}\right)=\frac{\exp \left(\mathbf{v}^{\mathrm{T}} \mathbf{R}_{i} \mathbf{h}_{i}\right)}{\sum_{(h, r, t) \in \mathcal{S}_{u}^{1}} \exp \left(\mathbf{v}^{\mathrm{T}} \mathbf{R h}\right)}
pi=softmax(vTRihi)=∑(h,r,t)∈Su1exp(vTRh)exp(vTRihi)
然后获取用户u对物品v的一阶响应
o
u
1
=
∑
(
h
i
,
r
i
,
t
i
)
∈
S
u
1
p
i
t
i
\mathbf{o}_{u}^{1}=\sum_{\left(h_{i}, r_{i}, t_{i}\right) \in \mathcal{S}_{u}^{1}} p_{i} \mathbf{t}_{i}
ou1=(hi,ri,ti)∈Su1∑piti,重复上述过程,依次获得k跳的用户表示,最终用户的表示为
u
=
o
u
1
+
o
u
2
+
…
+
o
u
H
\mathbf{u}=\mathbf{o}_{u}^{1}+\mathbf{o}_{u}^{2}+\ldots+\mathbf{o}_{u}^{H}
u=ou1+ou2+…+ouH
预测评分为
y
^
u
v
=
σ
(
u
T
v
)
\hat{y}_{u v}=\sigma\left(\mathbf{u}^{\mathrm{T}} \mathbf{v}\right)
y^uv=σ(uTv)
trick
- 水波网络中所谓每一层向外扩散的操作,实际上每一次都会产生笛卡尔乘积数量级的新实体,即数量不断变大。
- 实际上,知识图谱中大量的实体是下沉实体,只有入链接没有出链接。
- 在特定领域的场景中,关系可以被限定为特定关系,如电影场景。
- 实际上,H的取值不会太大,因为距离越远,噪音越多。
- 操作时需要设定一个值来限定每一次扩散取得新实体的数量上限,每次进行随机采样,从而增加训练数据的覆盖率、
疑惑
- 按照文章意思,一个用户根据候选物品的不同会有不同的表示吗?即在训练阶段,对于(u,v1),(u,v2)相同的用户不同的物品,最终会训练出两个用户表示,是这样吗?
可改进的地方
- 本文利用知识图谱提炼了对用户表示,没有提炼对物品的表示。
- 文章用到了注意力机制,但是是手动计算的,而不是网络自己学习的。