当前位置: 代码迷 >> 综合 >> KGAT 2019(KDD)Knowledge Graph Attention Network for Recommendation
  详细解决方案

KGAT 2019(KDD)Knowledge Graph Attention Network for Recommendation

热度:51   发布时间:2023-12-18 06:52:10.0

提出背景

  • 基于CF的方法无法利用用户和物品的辅助信息,像用户简介,物品属性,以及上下文环境,在用户和无匹交互较少的情况下表现较差。
  • FM,NFM,Wide&Deep等模型将用户和物品表示为向量,同时将辅助信息表示为特征向量与用户,物品向量相结合,提高推荐的准确性。
  • 上述方法对用户与物品的每一个交互独立处理,并没有考虑他们之间的联系。

从知识图谱中更加充分的可以挖掘用户和用户,物品和物品之间的关系。如图所示,该图由用户物品交互图和异构知识图谱组成,称作协作知识图谱(CKG)。目标用户为u1u_1u1?,传统的user-based CF方法考虑具有相似历史行为的用户为相似用户,比如u1u_1u1?u4u_4u4?h和u5u_5u5?都购买了i1i_1i1?,这三个用户为相似用户,item-based CF考虑物品的相似性,例如i1i_1i1?i2i_2i2?具有相同的属性e1e_1e1?,这两个物品属于相似物品。然而,我们可以探索更高层次的交互,比如,用户u2u_2u2?u3u_3u3?与物品i2i_2i2?交互,而物品i2i_2i2?和物品i1i_1i1?和实体e1e_1e1?具有相同的关系,所以从某种程度上说明u1u_1u1?u2,u3u_2,u_3u2?,u3?也是相似用户,因此,我们需要充分发掘high-order relation高阶连通性,例如
u1?r1i1??r2e1?r2i2??r1{u2,u3},u1?r1i1??r2e1?r3{i3,i4},\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??r1??i1???r2??e1??r2??i2???r1??{ u2?,u3?},u1??r1??i1???r2??e1??r3??{ i3?,i4?},?
什么是高阶连通性?
定义两个节点之间的L-order连通性
e0?r1e1?r2??rLeLe_{0} \stackrel{r_{1}}{\longrightarrow} e_{1} \stackrel{r_{2}}{\longrightarrow} \cdots \stackrel{r_{L}}{\longrightarrow} e_{L} e0??r1??e1??r2????rL??eL?

  • 发掘高阶关系面临的挑战
    • 随着层次加深,节点数量急剧上涨,计算开销大
    • 高阶关系对预测的贡献不同,需要权衡。

现有的基于知识图谱的推荐方法的缺点

基于路径的方法

两个节点之间拥有大量的可选择路径,需要设计选择算法选择较优的路径,或者定义源路径模式对路径进行约束,这两种方法的缺点是,选择算法的性能影响推荐的性能;源路径的设计需要领域专业知识,需要大量的人工劳动力。

基于正则的方法

基于正则的方法设计了其他的损失函数项,这些方法没有直接将高阶关系嵌入为推荐而优化的模型中,而是仅以隐式方式对它们进行编码。 由于缺少显式建模,因此不能保证可以捕获远程连接性,也不能解释高阶建模的结果。

本文贡献

  • 我们强调了在协作知识图中显式建模高阶关系的重要性,利附加信息提高更好的推荐。
  • 我们开发了一种新的方法KGAT,它在图神经网络框架下以显式且端到端的方式实现了高阶关系建模。
  • 我们在三个公开基准上进行了广泛的实验,证明了KGAT的有效性及其在理解高级关系重要性方面的可解释性。

基本架构

Embedding Layer

将CKG中的每一个节点,关系表示为一个向量,以此保留知识图谱的结构信息。本文采用transR进行Knowledge graph embedding,对于给定的三元组,得分函数为
g(h,r,t)=∥Wreh+er?Wret∥22g(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)=Wr?eh?+er??Wr?et?22?
损失函数为
LKG=∑(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))

Attentive Embedding Propagation Layers

我们在图卷积网络GCN的架构基础上,沿着高阶连通性递归传播嵌入;此外,通过利用图注意力网络的思想,我们生成级联传播的注意力权重,以揭示这种连通性的重要性。
在这里,我们首先描述一个单层,它由信息传播、知识感知注意力和信息聚合三个部分组成,然后讨论如何将其推广到多层。

Information Propagation

如图所示,一个实体可以被包含在多个三元组中,充当多个三元组链接和传播信息的桥梁,例如实体i2i_2i2?e1?r2i2??r1u2e_{1} \stackrel{r_{2}}{\longrightarrow} i_{2} \stackrel{-r_{1}}{\longrightarrow} u_{2}e1??r2??i2???r1??u2?e2?r3i2??r1u2e_{2} \stackrel{r_{3}}{\longrightarrow} i_{2} \stackrel{-r_{1}}{\longrightarrow} u_{2}e2??r3??i2???r1??u2?i2i_2i2?具有属性e1e_1e1?e2e_2e2?,因为u2u_2u2?i2i_2i2?有交互,所以e1e_1e1?e2e_2e2?体现了u2u_2u2?的偏好,即e1e_1e1?e2e_2e2?的信息可以传播到u2u_2u2?

定义
给定一个实体hhh,以hhh为头实体的三元组的集合定义为
Nh={(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}
实体hhh的一阶连通性定义为
eNh=∑(h,r,t)∈Nhπ(h,r,t)et\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的信息量。

Knowledge-aware Attention

通过注意力机制实现,我们将ttthhh的注意力得分取决于在关系rrr空间下ete_tet?ehe_heh?的距离,越近的实体传播越多的信息,在关系r空间中,采用内积衡量两个实体的距离。最后通过softmax函数标准化注意力得分。公式如下
π(h,r,t)=(Wret)?tanh?((Wreh+er))\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)=(Wr?et?)?tanh((Wr?eh?+er?))
π(h,r,t)=exp?(π(h,r,t))∑(h,r′,t′)∈Nhexp?(π(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)Nh??exp(π(h,r,t))exp(π(h,r,t))?

Information Aggregation

最后一个阶段是将实体表示ehe_heh?及其ego-network表示eNhe_{N_h}eNh??聚合为实体hhh的新表示,即eh(1)=f(eh,eNh)。e^{(1)}_h = f (e_h,e_{N_h} )。eh(1)?=f(eh?,eNh??)我们使用三种类型的聚合器来实现f()f()f()

  • GCN聚合函数将两个表征相加,并进行非线性变换,如下所示
    fGCN=LeakyReLU (W(eh+eNh))f_{\mathrm{GCN}}=\text { LeakyReLU }\left(\mathbf{W}\left(\mathbf{e}_{h}+\mathbf{e}_{\mathcal{N}_{h}}\right)\right) fGCN?= LeakyReLU (W(eh?+eNh??))
  • GraphSage聚集函数将链接两个表示,然后通过一个非线性转换
    fGraphSage =LeakyReLU (W(eh∥eNh))f_{\text {GraphSage }}=\text { LeakyReLU }\left(\mathbf{W}\left(\mathbf{e}_{h} \| \mathbf{e}_{\mathcal{N}_{h}}\right)\right) fGraphSage ?= LeakyReLU (W(eh?eNh??))
  • Bi-Interaction聚集函数考虑ehe_heh?Nh{\mathcal{N}_{h}}Nh?两种不同的特征交互方法fBi-Interaction =LeakyReLU (W1(eh+eNh))+LeakyReLU?(W2(eh⊙eNh))\begin{aligned} f_{\text {Bi-Interaction }} &=\text { LeakyReLU }\left(\mathbf{W}_{1}\left(\mathbf{e}_{h}+\mathbf{e}_{\mathcal{N}_{h}}\right)\right)+\\ & \operatorname{LeakyReLU}\left(\mathbf{W}_{2}\left(\mathbf{e}_{h} \odot \mathbf{e}_{\mathcal{N}_{h}}\right)\right) \end{aligned} fBi-Interaction ??= LeakyReLU (W1?(eh?+eNh??))+LeakyReLU(W2?(eh?eNh??))?

高阶传播

通过高阶传播获取更多的高阶连接性信息,因此递归定义实体表示

eh(l)=f(eh(l?1),eNh(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)?)
其中,实体hhh在l-ego网络中信息传播定义如下:
eNh(l?1)=∑(h,r,t)∈Nhπ(h,r,t)et(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)?

模型预测

用户表示和物品表示
eu?=eu(0)∥?∥eu(L),ei?=ei(0)∥?∥ei(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)=eu??ei?\hat{y}(u, i)=\mathbf{e}_{u}^{* \top} \mathbf{e}_{i}^{*} y^?(u,i)=eu???ei??

模型优化

采用BPR损失函数
LCF=∑(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))
最终端到端的训练损失函数为
LKGAT=LKG+LCF+λ∥Θ∥22\mathcal{L}_{\mathrm{KGAT}}=\mathcal{L}_{\mathrm{KG}}+\mathcal{L}_{\mathrm{CF}}+\lambda\|\Theta\|_{2}^{2} LKGAT?=LKG?+LCF?+λΘ22?

数据集

开源代码地址

论文开源

  相关解决方案