KGAT - Knowledge Graph Attention Network for Recommendation[KDD'19]

KDD19一篇将知识图谱与GNN融合的论文

解决的问题

在推荐系统中,如何将用户-物品交互信息与物品自身的属性相结合以做出更好的推荐,从另一个角度来说,即如何融合用户-物品交互图与知识图谱

BnaHGn.png

以上面的图为例,在电影推荐场景中,用户对应于观众,物品对应于电影,实体Entities可以有多种含义,例如导演、演员、电影类别等,对应的就会有多种关系,对应图中的$r_1-r_4$。对于用户$u_1$,协同过滤更关注于他的相似用户,即同样看过$i_1$的$u_4$与$u_5$;而有监督学习方法例如因子分解机等会更关注物品之间的联系,例如$i_1$与$i_2$同样有着属性$e_1$,但它无法进一步建模更高阶的关系,例如图中黄色圈内的用户$u_2$与$u_3$观看了同一个导演$e_1$的电影$i_2$,而这名导演$e_1$又作为演员参演了灰色圈内的电影$i_3$与$i_4$。图中上半部分对应于用户-物品交互图,下半部分对应于知识图谱。

做法及创新

BnDu0f.png

CKG Embedding Layer

知识图谱的一般形式可以表示为三元组的集合$\{(h,r,t)\}$,表示头实体$h$与尾实体$t$之间有关系$r$,例如$\text{(Hugh Jackman,ActorOf,Logan)}$表示狼叔是电影罗根的演员,这是一种主动的关系,自然就有逆向的被动关系。而对于用户-物品交互信息来说,通常的表示形式为一个矩阵$R$,$R_{ui}$表示用户$u$与物品$i$的关系,有交互则值为1,否则为0。因此,为了统一两种表示形式,论文中将用户-物品交互信息同样改成三元组的集合$\text$,这样一来得到的统一后的新图称之为Collaborative Knowledge Graph(CKG)。

第一个步骤是对CKG做embedding,得到图中顶点和边的向量表示形式。论文使用了知识图谱中常用的一个方法$\text{TransR}$,即对于一个三元组$(h,r,t)$,目标为:

其中$e_h,e_t\in \mathbb{R}d、e_r\in \mathbb{R}k$分别为$h、t、r$的embedding,而$e_h^r,e_t^r$为$e_h、e_t$在$r$所处空间中的投影,损失函数定义为:

值越小说明该三元组在知识图谱中更可能存在,即头实体$h$与尾实体$t$之间更可能有关系$r$。经过这一步骤之后,CKG中所有的顶点及边我们都得到了它们的embedding。

Attentive Embedding Propagation Layers

第二个步骤直接用的GCN与GAT的想法,在一层embedding propagation layer中,利用图卷积网络在邻域中进行信息传播,利用注意力机制来衡量邻域中各邻居顶点的重要程度。再通过堆叠$l$层来聚合$l$阶邻居顶点的信息。

在每一层中,首先将顶点$h$的邻域以向量形式表示,系数$\pi(h,r,t)$还会进行$\text{softmax}$归一化:

通过堆叠$l$层来聚合$l$阶邻居顶点的信息:

论文中所使用的聚合函数$f$在GCN与GraphSage的基础上,还额外地引入了第二项中$e_h$与$e_{N_h}$的交互,这使得聚合的过程对于两者之间的相近程度更为敏感,会在更相似的顶点中传播更多的信息。

Model Prediction

在得到$L$层embedding propagation layer的表示后,使用JK-Net中的LSTM-attention进行聚合,在通过点积的形式给出预测分数:

数据集

Amazon-book、Last-FM、Yelp2018