从知识图谱中更加充分的可以挖掘用户和用户,物品和物品之间的关系。如图所示,该图由用户物品交互图和异构知识图谱组成,称作协作知识图谱(CKG)。目标用户为 u 1 u_1 u1,传统的user-based CF方法考虑具有相似历史行为的用户为相似用户,比如 u 1 u_1 u1和 u 4 u_4 u4h和 u 5 u_5 u5都购买了 i 1 i_1 i1,这三个用户为相似用户,item-based CF考虑物品的相似性,例如 i 1 i_1 i1和 i 2 i_2 i2具有相同的属性 e 1 e_1 e1,这两个物品属于相似物品。然而,我们可以探索更高层次的交互,比如,用户 u 2 u_2 u2和 u 3 u_3 u3与物品 i 2 i_2 i2交互,而物品 i 2 i_2 i2和物品 i 1 i_1 i1和实体 e 1 e_1 e1具有相同的关系,所以从某种程度上说明 u 1 u_1 u1和 u 2 , u 3 u_2,u_3 u2,u3也是相似用户,因此,我们需要充分发掘high-order relation高阶连通性,例如
u 1 ⟶ r 1 i 1 ⟶ − r 2 e 1 ⟶ r 2 i 2 ⟶ − r 1 { u 2 , u 3 } , u 1 ⟶ r 1 i 1 ⟶ − r 2 e 1 ⟶ r 3 { i 3 , i 4 } , \begin{array}{l} u_{1} \stackrel{r_{1}}{\longrightarrow} i_{1} \stackrel{-r_{2}}{\longrightarrow} e_{1} \stackrel{r_{2}}{\longrightarrow} i_{2} \stackrel{-r_{1}}{\longrightarrow}\left\{u_{2}, u_{3}\right\}, \\ u_{1} \stackrel{r_{1}}{\longrightarrow} i_{1} \stackrel{-r_{2}}{\longrightarrow} e_{1} \stackrel{r_{3}}{\longrightarrow}\left\{i_{3}, i_{4}\right\}, \end{array} u1⟶r1i1⟶−r2e1⟶r2i2⟶−r1{u2,u3},u1⟶r1i1⟶−r2e1⟶r3{i3,i4},
什么是高阶连通性?
定义两个节点之间的L-order连通性
e 0 ⟶ r 1 e 1 ⟶ r 2 ⋯ ⟶ r L e L e_{0} \stackrel{r_{1}}{\longrightarrow} e_{1} \stackrel{r_{2}}{\longrightarrow} \cdots \stackrel{r_{L}}{\longrightarrow} e_{L} e0⟶r1e1⟶r2⋯⟶rLeL
两个节点之间拥有大量的可选择路径,需要设计选择算法选择较优的路径,或者定义源路径模式对路径进行约束,这两种方法的缺点是,选择算法的性能影响推荐的性能;源路径的设计需要领域专业知识,需要大量的人工劳动力。
基于正则的方法设计了其他的损失函数项,这些方法没有直接将高阶关系嵌入为推荐而优化的模型中,而是仅以隐式方式对它们进行编码。 由于缺少显式建模,因此不能保证可以捕获远程连接性,也不能解释高阶建模的结果。
将CKG中的每一个节点,关系表示为一个向量,以此保留知识图谱的结构信息。本文采用transR进行Knowledge graph embedding,对于给定的三元组,得分函数为
g ( h , r , t ) = ∥ W r e h + e r − W r e t ∥ 2 2 g(h, r, t)=\left\|\mathbf{W}_{r} \mathbf{e}_{h}+\mathbf{e}_{r}-\mathbf{W}_{r} \mathbf{e}_{t}\right\|_{2}^{2} g(h,r,t)=∥Wreh+er−Wret∥22
损失函数为
L K G = ∑ ( h , r , t , t ′ ) ∈ T − ln σ ( g ( h , r , t ′ ) − g ( h , r , t ) ) \mathcal{L}_{\mathrm{KG}}=\sum_{\left(h, \boldsymbol{r}, t, t^{\prime}\right) \in \mathcal{T}}-\ln \sigma\left(g\left(h, r, t^{\prime}\right)-g(h, r, t)\right) LKG=(h,r,t,t′)∈T∑−lnσ(g(h,r,t′)−g(h,r,t))
我们在图卷积网络GCN的架构基础上,沿着高阶连通性递归传播嵌入;此外,通过利用图注意力网络的思想,我们生成级联传播的注意力权重,以揭示这种连通性的重要性。
在这里,我们首先描述一个单层,它由信息传播、知识感知注意力和信息聚合三个部分组成,然后讨论如何将其推广到多层。
如图所示,一个实体可以被包含在多个三元组中,充当多个三元组链接和传播信息的桥梁,例如实体 i 2 i_2 i2, e 1 ⟶ r 2 i 2 ⟶ − r 1 u 2 e_{1} \stackrel{r_{2}}{\longrightarrow} i_{2} \stackrel{-r_{1}}{\longrightarrow} u_{2} e1⟶r2i2⟶−r1u2和 e 2 ⟶ r 3 i 2 ⟶ − r 1 u 2 e_{2} \stackrel{r_{3}}{\longrightarrow} i_{2} \stackrel{-r_{1}}{\longrightarrow} u_{2} e2⟶r3i2⟶−r1u2, i 2 i_2 i2具有属性 e 1 e_1 e1和 e 2 e_2 e2,因为 u 2 u_2 u2与 i 2 i_2 i2有交互,所以 e 1 e_1 e1和 e 2 e_2 e2体现了 u 2 u_2 u2的偏好,即 e 1 e_1 e1, e 2 e_2 e2的信息可以传播到 u 2 u_2 u2
定义
给定一个实体 h h h,以 h h h为头实体的三元组的集合定义为
N h = { ( h , r , t ) ∣ ( h , r , t ) ∈ G } \mathcal{N}_{h}=\{(h, r, t) \mid(h, r, t) \in \mathcal{G}\} Nh={(h,r,t)∣(h,r,t)∈G}
实体 h h h的一阶连通性定义为
e N h = ∑ ( h , r , t ) ∈ N h π ( h , r , t ) e t \mathbf{e}_{\mathcal{N}_{h}}=\sum_{(h, r, t) \in \mathcal{N}_{h}} \pi(h, r, t) \mathbf{e}_{t} eNh=(h,r,t)∈Nh∑π(h,r,t)et
其中, π ( h , r , t ) \pi(h, r, t) π(h,r,t)控制着边(h,r,t)上每次传播的衰减因子,表示在关系r的条件下,从t传播到h的信息量。
通过注意力机制实现,我们将 t t t到 h h h的注意力得分取决于在关系 r r r空间下 e t e_t et和 e h e_h eh的距离,越近的实体传播越多的信息,在关系r空间中,采用内积衡量两个实体的距离。最后通过softmax函数标准化注意力得分。公式如下
π ( h , r , t ) = ( W r e t ) ⊤ tanh ( ( W r e h + e r ) ) \pi(h, r, t)=\left(\mathbf{W}_{r} \mathbf{e}_{t}\right)^{\top} \tanh \left(\left(\mathbf{W}_{r} \mathbf{e}_{h}+\mathbf{e}_{r}\right)\right) π(h,r,t)=(Wret)⊤tanh((Wreh+er))
π ( h , r , t ) = exp ( π ( h , r , t ) ) ∑ ( h , r ′ , t ′ ) ∈ N h exp ( π ( h , r ′ , t ′ ) ) \pi(h, r, t)=\frac{\exp (\pi(h, r, t))}{\sum_{\left(h, r^{\prime}, t^{\prime}\right) \in \mathcal{N}_{h}} \exp \left(\pi\left(h, r^{\prime}, t^{\prime}\right)\right)} π(h,r,t)=∑(h,r′,t′)∈Nhexp(π(h,r′,t′))exp(π(h,r,t))
最后一个阶段是将实体表示 e h e_h eh及其ego-network表示 e N h e_{N_h} eNh聚合为实体 h h h的新表示,即 e h ( 1 ) = f ( e h , e N h ) 。 e^{(1)}_h = f (e_h,e_{N_h} )。 eh(1)=f(eh,eNh)。我们使用三种类型的聚合器来实现 f ( ) f() f()。
通过高阶传播获取更多的高阶连接性信息,因此递归定义实体表示
e h ( l ) = f ( e h ( l − 1 ) , e N h ( l − 1 ) ) \mathbf{e}_{h}^{(l)}=f\left(\mathbf{e}_{h}^{(l-1)}, \mathbf{e}_{\mathcal{N}_{h}}^{(l-1)}\right) eh(l)=f(eh(l−1),eNh(l−1))
其中,实体 h h h在l-ego网络中信息传播定义如下:
e N h ( l − 1 ) = ∑ ( h , r , t ) ∈ N h π ( h , r , t ) e t ( l − 1 ) \mathbf{e}_{\mathcal{N}_{h}}^{(l-1)}=\sum_{(h, r, t) \in \mathcal{N}_{h}} \pi(h, r, t) \mathbf{e}_{t}^{(l-1)} eNh(l−1)=(h,r,t)∈Nh∑π(h,r,t)et(l−1)
用户表示和物品表示
e u ∗ = e u ( 0 ) ∥ ⋯ ∥ e u ( L ) , e i ∗ = e i ( 0 ) ∥ ⋯ ∥ e i ( L ) \mathbf{e}_{u}^{*}=\mathbf{e}_{u}^{(0)}\|\cdots\| \mathbf{e}_{u}^{(L)}, \quad \mathbf{e}_{i}^{*}=\mathbf{e}_{i}^{(0)}\|\cdots\| \mathbf{e}_{i}^{(L)} eu∗=eu(0)∥⋯∥eu(L),ei∗=ei(0)∥⋯∥ei(L)
采用内积实现用户对物品的预测
y ^ ( u , i ) = e u ∗ ⊤ e i ∗ \hat{y}(u, i)=\mathbf{e}_{u}^{* \top} \mathbf{e}_{i}^{*} y^(u,i)=eu∗⊤ei∗
采用BPR损失函数
L C F = ∑ ( u , i , j ) ∈ O − ln σ ( y ^ ( u , i ) − y ^ ( u , j ) ) \mathcal{L}_{\mathrm{CF}}=\sum_{(u, i, j) \in O}-\ln \sigma(\hat{y}(u, i)-\hat{y}(u, j)) LCF=(u,i,j)∈O∑−lnσ(y^(u,i)−y^(u,j))
最终端到端的训练损失函数为
L K G A T = L K G + L C F + λ ∥ Θ ∥ 2 2 \mathcal{L}_{\mathrm{KGAT}}=\mathcal{L}_{\mathrm{KG}}+\mathcal{L}_{\mathrm{CF}}+\lambda\|\Theta\|_{2}^{2} LKGAT=LKG+LCF+λ∥Θ∥22
论文开源