paper:https://arxiv.org/abs/1905.07854
code:https://github.com/xiangwang1223/knowledge_graph_attention_network
ABSTRACT
为了得到更准确、多样、可解释的推荐,需要超越对user-item的建模并引入其它信息。传统的一些方法如FM都忽略了items间的联系(例如一部电影的导演是另外一部电影的演员)。
在文章中,将item和attribute联系起来。提出KGAT,通过端到端的方式对KG中的高阶连通性建模。递归传播邻居节点(user、item、attribute)的embeddings以得到node embedding,并应用注意力机制区分邻居节点的重要性。在3个数据集上测试,优于SOTA。
INTRODUCTION
为user推荐item的做法有两种
- 协同过滤CF:核心思想是找出跟待推荐user具有相似行为(与相同的item存在链接)的其它user,然后推荐其它用户链接的item
- 有监督学习SL:核心思想是预测user是否会跟item产生交互,即二分类问题。有FM、NFM、Wide&Deep、xDeepFM
但这两种方法都很难去挖掘user-item间的高阶连通性。
基于其局限性,可以采用collaborative knowledge graph (CKG)的方法,最近的使用CKG的方法大致分为两种:基于路径的和基于正则化的。
- Path-based methods提取携带高阶信息的路径并输入预测模型。为了处理大量路径,使用了路径选择算法和元路径方法。路径选择算法对最终的性能有很大影响,但对推荐也并没有得到很好的优化。定义元路径的方法需要领域知识,这对包含多类实体和联系的KG来说可能需要大量人力(labor-intensive),因为元路径的定义需要确保模型的保真度。
- Regularization-based methods计算额外损失来捕获KG从而规范推荐模型的学习。由于缺乏显式建模,难以捕获长期链接和高阶联系。
考虑两种方法存在的问题,提出KGAT,包含两种设计
- 递归嵌入传播,通过邻居节点信息更新node embedding并递归执行,以线性时间复杂度捕获高阶联系。
- 基于注意力的聚合,采用注意力机制来学习邻居节点的权重。注意力的权重可以揭示高阶连通性的重要性。
KGAT对比path-based methods,避免了labor-intensive处理元路径,因此效率更改。对比regularization-based methods,直接将高阶关系纳入预测模型,因此所有参数都是为了优化推荐目标。
TASK FORMULATION
- user-item 二部图$G_1=\{(u,y_{ui},i) |u\in U,i\in I\},y_ui$表示连接
- KG:$G_2=\{(h,r,t),h,t\in E,r\in R\}$,$E$和$R$表示实体和联系集。此外还建立item-entity对齐集$A=\{(i,e)|i\in I,e\in E\}$,因为item在两个集合中的表示不一定相同。
- CKG:$G=\{(h,r,t)|h,t\in E',r\in R'\},E'=E\cup U,R'=R\cup \{Interact\}$,$y_{ui}=1$时表示user和item间的连接Interact。
Input:CKG
output:user采用item的概率
METHODOLOGY
KGAT可以分为三个主要组件
- embedding layer
- attention embedding propagation layers
- prediction layer
Embedding Layer
采用TransR方法,对于三元组$(h,r,t)$通过优化转换原则$e_h^r+e_r\approx e_t^r$来学习实体和联系的embedding,其似然性得分公式如下
$$ g(h,r,t)=||W_re_h+e_r-W_re_t|| $$
TransrR的训练考虑了有效三元组和无效三元组之间的相对顺序,并通过成对的排列损失来进行区分。
$$ L_{KG}=\sum_{(h,r,t,t')\in F}-ln\sigma(g(h,r,t')-g(h,r,t)) \\ F=\{(h,r,t,t')|(h,r,t)\in G,(h,r,t')\notin G\} $$
Attentive Embedding Propagation Layers
在图卷积的架构上,沿着高阶连通性递归传递嵌入信息,此外利用图注意力网络的思想生成级联传播的注意力权重来区分连通性的重要性。一个单层又三部分组成:信息传播,知识感知注意力以及信息聚合,如何讨论如何推广到多层。
Information Propagation
通过$N_h={(h,r,t)|(h,r,t)\in G}$表示一组,其中h是头实体,称为ego-network.计算h的ego-network线性组合如下
$$ e_{N_h}=\sum_{(h,r,t)\in N_h}\pi(h,r,t)e_t $$
$\pi(h,r,t)$用来控制衰减因子,表示通过关系关系r,t能传递多少信息到h。
Knowledge-aware Attention
通过注意力机制来得到$\pi(h,r,t)$
$$ \pi(h,r,t)=(W_re_t)^Ttanh((W_re_h+e_r)) $$
通过softmax归一化和h连接的所有三元组的信息
$$ \pi(h,r,t)=\frac{exp(\pi(h,r,t))}{\sum_{(h,r',t')\in N_h}exp(\pi(h,r',t'))} $$
不同于GCN和GraphSage指定两个节点间的衰减因子,KGAT学习邻居节点间的重要性。
Information Aggregation
最后一个阶段是聚合$e_h$和它的ego-network的信息表示$e_{N_h}$从而得到h的新表示。$e_h^{(1)}=f(e_h,e_{N_h})$。使用如下三种聚合器来实现$f(\cdot)$
- GCN Aggregator相加两个表示并采用非线性转化
$$ f_{GCN}=LeakyReLU(W(e_h+e_{N_h})) $$
- GraphSage Aggregator连接两个表示比采用非线性变换
$$ f_{GraphSage}=LeakyReLU(W(e_h||e_{N_h})) $$
- Bi-Interaction Aggregator考虑了两种交互
$$ f_{Bi-Ineraction}=LeakyReLU(W_1(e_h+e_{N_h}))+LeakyReLU(W_2(e_h\odot e_{N_h})) $$
##### High-order Propagation
高阶的信息也同理
$$ e^{(l)}_h=f(e^{(l-1)}_h,e_{N_h}^{(l-1)})\\ e^{(l-1)}_{N_h}=\sum_{(h,r,t)\in N_h}\pi(h,r,t)e^{l-1}_t $$
Model Prediction
连接向量做点积
$$ e^{*}_u=e_u^{0}||\cdots||e_u^{L},e^{*}_i=e^{(0)}_i||\cdots||e_i^{(L)} \\ \hat{h}(u,i)={e^*_u}^Te_i^* $$
Optimization
BPR损失
$$ L_{CF}=\sum_{(u,i,j)\in O}-ln\sigma(\hat{y}(u,i)-\hat{y}(u,j)) $$
其中$O=\{(u,i,j)|(u,i)\in R^+,(u,j)\in R^-\}$
总的目标函数
$$ L_{KGAT}=L_{KG}+L_{CF}+\lambda||\theta||_2^2 $$
$\theta=\{E,W_r,\forall l\in R,W_1^{(l)},W_2^{(l)},\forall l \in{1,\cdots,L}\}$,即为模型参数集,E是所有实体和联系的embedding table。对于进行$L_2$正则化可以放置过拟合。