基于KG推荐的优点
- KG中项目之间的丰富语义关联可以帮助探索用户物品间潜在的联系并提高结果的准确性。
- KG中的各种关系有助于合理地扩展用户的兴趣并增加推荐项目的多样性
- KG连接了用户的历史喜欢和推荐的商品,从而为推荐系统带来了可解释性。
本文的探索
本文主要的目标是利用知识图谱中高阶结构和语义信息提高推荐的准确性,并提供推荐合理的可解释性。受到了GCN的启发,对于知识图谱中的实体,利用其邻居信息和偏差计算该实体的表示,由于不同的邻居对实体的影响力不同,需要分配不同的权重来刻画邻居对实体产生的语义结果。由于一个实体的邻居众多,因此随机采样固定大小的邻居数量作为感受野;给定实体也可以通过多跳关系扩展到高阶实体,获取高阶实体的依赖关系。
基本架构
数学定义
用户集合:
U
=
{
u
1
,
u
2
,
…
,
u
M
}
\mathcal{U}=\left\{u_{1}, u_{2}, \ldots, u_{M}\right\}
U={u1,u2,…,uM}
物品集合:
V
=
{
v
1
,
v
2
,
…
,
v
N
}
V=\left\{v_{1}, v_{2}, \ldots, v_{N}\right\}
V={v1,v2,…,vN}
用户物品交互矩阵:
Y
∈
R
M
×
N
\mathrm{Y} \in \mathbb{R}^{M \times N}
Y∈RM×N
知识图谱:
G
\mathcal{G}
G
预测:
y
^
u
v
=
F
(
u
,
v
∣
Θ
,
Y
,
G
)
\hat{y}_{u v}=\mathcal{F}(u, v \mid \Theta, \mathbf{Y}, \mathcal{G})
y^uv=F(u,v∣Θ,Y,G)
KGCN层
实体的one-order邻域表示
KGCN来捕获知识图中实体之间的高阶结构邻近性。
N
(
v
)
\mathcal{N}(v)
N(v):与实体v直接相连的实体集合。
r
e
i
,
e
j
r_{e_{i}}, e_{j}
rei,ej:实体
e
i
e_i
ei和实体
e
j
e_j
ej之间的关系。
g
:
R
d
×
R
d
→
R
g: \mathbb{R}^{d} \times \mathbb{R}^{d} \rightarrow \mathbb{R}
g:Rd×Rd→R:计算用户和关系之间的得分刻画关系对用户的重要程度:
π
r
u
=
g
(
u
,
r
)
\pi_{r}^{u}=g(\mathbf{u}, \mathbf{r})
πru=g(u,r)其中
u
∈
R
d
\mathbf{u} \in \mathbb{R}^{d}
u∈Rd and
r
∈
R
d
\mathbf{r} \in \mathbb{R}^{d}
r∈Rd
为了刻画物品
v
v
v的拓扑邻近结构,我们计算
v
v
v的邻域的线性组合:
v
N
(
v
)
u
=
∑
e
∈
N
(
v
)
π
~
r
v
,
e
u
e
\mathbf{v}_{\mathcal{N}(v)}^{u}=\sum_{e \in \mathcal{N}(v)} \tilde{\pi}_{r_{v, e}}^{u} \mathbf{e}
vN(v)u=e∈N(v)∑π~rv,eue
π
~
r
v
,
e
u
=
exp
(
π
r
v
,
e
u
)
∑
e
∈
N
(
v
)
exp
(
π
r
v
,
e
u
)
\tilde{\pi}_{r_{v, e}}^{u}=\frac{\exp \left(\pi_{r_{v, e}}^{u}\right)}{\sum_{e \in \mathcal{N}(v)} \exp \left(\pi_{r_{v, e}}^{u}\right)}
π~rv,eu=∑e∈N(v)exp(πrv,eu)exp(πrv,eu)
由于一个实体的邻域大小差异较大,为了保持统一性进行约束,我们用
v
S
(
v
)
u
\mathbf{v}_{\mathcal{S}(v)}^{u}
vS(v)u来表示实体
v
v
v的邻域,
S
(
v
)
≜
{
e
∣
e
∼
N
(
v
)
}
\mathcal{S}(v) \triangleq\{e \mid e \sim \mathcal{N}(v)\}
S(v)≜{e∣e∼N(v)} and
∣
S
(
v
)
∣
=
K
|\mathcal{S}(v)|=K
∣S(v)∣=K规定邻域大小为K,并把
S
(
v
)
\mathcal{S}(v)
S(v)称为感受野,本文K=2。
如图所示,实体 e u [ h ] \mathrm{e}^{u}[h] eu[h]的邻域实体表示为绿色,经过一次迭代,即感受野的深度加深为1,实体 e u [ h ] \mathrm{e}^{u}[h] eu[h]变为 e u [ h + 1 ] \mathrm{e}^{u}[h+1] eu[h+1]。
聚集实体表示和邻域表示
- 相加聚集函数:将两个表示相加,进行非线性转换
a g g s u m = σ ( W ⋅ ( v + v S ( v ) u ) + b ) a g g_{s u m}=\sigma\left(\mathbf{W} \cdot\left(\mathbf{v}+\mathbf{v}_{\mathcal{S}(v)}^{u}\right)+\mathbf{b}\right) aggsum=σ(W⋅(v+vS(v)u)+b) - 拼接聚集函数:将连个表示连接,进行非线性转换
a g g concat = σ ( W ⋅ concat ( v , v S ( v ) u ) + b ) agg_{\text {concat }}=\sigma\left(\mathbf{W} \cdot \operatorname{concat}\left(\mathbf{v}, \mathbf{v}_{\mathcal{S}(v)}^{u}\right)+\mathbf{b}\right) aggconcat =σ(W⋅concat(v,vS(v)u)+b) - 邻域聚集函数:直接将邻域表示作为实体的表示
a g g neighbor = σ ( W ⋅ v S ( v ) u + b ) a g g_{\text {neighbor }}=\sigma\left(\mathbf{W} \cdot \mathbf{v}_{\mathcal{S}(v)}^{u}+\mathbf{b}\right) aggneighbor =σ(W⋅vS(v)u+b)
算法过程
损失函数
L = ∑ u ∈ U ( ∑ v : y u v = 1 J ( y u v , y ^ u v ) − ∑ i = 1 T u E v i ∼ P ( v i ) J ( y u v i , y ^ u v i ) ) + λ ∥ F ∥ 2 2 \mathcal{L}=\sum_{u \in \mathcal{U}}\left(\sum_{v: y_{u v}=1} \mathcal{J}\left(y_{u v}, \hat{y}_{u v}\right)-\sum_{i=1}^{T^{u}} \mathbb{E}_{v_{i} \sim P\left(v_{i}\right)} \mathcal{J}\left(y_{u v_{i}}, \hat{y}_{u v_{i}}\right)\right)+\lambda\|\mathcal{F}\|_{2}^{2} L=u∈U∑(v:yuv=1∑J(yuv,y^uv)−i=1∑TuEvi∼P(vi)J(yuvi,y^uvi))+λ∥F∥22
数据集
由于这三个数据集都是显示交互,因此把他们转为隐示交互。
知识图谱的构建
使用Microsoft Satori为每一个数据集构建知识图谱,首先从知识图谱中国选择置信度大于0.9的子图,然后手机所有有效的电影,图书,音乐的ID,去除具有多个实体匹配或者没有匹配的item,然后用三元组的头匹配item获取子知识图谱
开源代码地址
重点
这篇文章和KGAT十分相似。
在本文中,突出强调一个感受野,这个感受野类似于图像CNN中的filter,不同的感受野类比于不同的filter,获取的局部信息不同,如图所示,h代表感受野的深度,在每一个迭代的过程中,感受野不同扩大,从而获取high-order的信息,从而丰富表示。
在KGAT一文中,对于一个实体来说,每次只能从one-order获取信息,但是,由于每一个实体都从one-order(也就是h=1)获取信息,间接的,该实体也会获取到high-order实体的信息,从而丰富表示。
本文未来工作
目前所有的知识图谱都是利用item-end的知识图谱的附加信息,并没有利用user-end的知识图谱,是否可以利用user-end知识图谱或者结合item-end和user-end来提高推荐的准确性。