KGAT: Knowledge Graph Attention Network forRecommendation——学习笔记

Knowledge Graph Attention Network for Recommendation:字面意思:用于推荐的知识图谱注意力网络,是基于知识图谱的图神经网络在推荐系统中的应用。

一、文章摘要

摘要的翻译如下:

“为了提供更准确、多样化和可解释的推荐,必须超越对用户-项目交互建模并考虑辅助信息。因子分解机 (FM) 等传统方法将其视为监督学习问题,假设每个交互都是一个独立的实例,并编码了边信息。由于忽略了实例或项目之间的关系(例如,一部电影的导演也是另一部电影的演员),这些方法不足以从用户的集体行为中提取协作信号。在这项工作中,我们研究了知识图谱 (KG) 的效用,它通过将项目与其属性联系起来打破独立交互假设。我们认为,在 KG 和用户项目图的这种混合结构中,高阶关系——将两个项目与一个或多个链接属性连接起来——是成功推荐的重要因素。我们提出了一种名为知识图谱注意网络(KGAT)的新方法,它以端到端的方式显式地对 KG 中的高阶连接进行建模。它递归地从节点的邻居(可以是用户、项目或属性)传播嵌入以改进节点的嵌入,并采用注意力机制来区分邻居的重要性。我们的 KGAT 在概念上优于现有的基于 KG 的推荐方法,后者要么通过提取路径来利用高阶关系,要么通过正则化对其进行隐式建模。三个公共基准的经验结果表明,KGAT 显着优于 Neural FM [11] 和 RippleNet [29] 等最先进的方法。进一步的研究验证了嵌入传播对高阶关系建模的有效性以及注意力机制带来的可解释性优势。我们在 https://github 上发布代码和数据集。 com/xiangwang1223/knowledge_graph_attention_network。”

在推荐系统中,users和items很少交互的情况下,CF仅仅通过已有的user和item间的交互信息来预测用户将对其它物品的交互概率将表现很差,此时应该考虑item的side information,对这些辅助信息的建模就可以看成监督学习,传统的因子分解机(FM)考虑到了item的属性,将item的多个属性加权平均后同user的属性一起来分析user将对item的一个交互情况。推荐系统的有监督模型在工业界已经被广泛的使用,其中常见的几种有FM(矩阵分解)、NFM(neural FM)、Wide&Deep和xDeepFM等等。但是它们都将每一次交互看成一次独立的数据实例,忽视了不同item间的属性是有可能存在内在关联的,这使得模型不足以从用户的集体行为中获取基于属性的协作信息,文章中举例了一个电影的director也可能是另一部电影的actor来说明。基于这种缺陷,本文提出了KGAT,用图神经网络来建模知识图谱,同时在推荐系统中使用到了知识图谱来优化。

二、KGAT模型总体介绍

模型的输入:CKG图

KGAT: Knowledge Graph Attention Network forRecommendation——学习笔记_第1张图片

                                                                      图1

这是一个users和items的一个二部图与KG进行了一个组合,即CKG图。

模型的输出:users将和某item交互的一个概率。

KGAT: Knowledge Graph Attention Network forRecommendation——学习笔记_第2张图片

                                                                               图2

此图以u_{1},i_{3}为例,embedding就是将实体映射成向量,u_{1}向量e^{\left ( 0 \right )}_{u_{1}}与经过三层迭代后得到三个向量 拼接成一个向量,该向量与i_{3}经过同样过程得到的向量进行一个内结,得到一个预测的概率y\widehat{}_{u_{1}i_{3}}

KGAT: Knowledge Graph Attention Network forRecommendation——学习笔记_第3张图片

                                                               图3

在图3的信息传播过程中,引入了注意力机制。见图4

KGAT: Knowledge Graph Attention Network forRecommendation——学习笔记_第4张图片

                                                   图4

文章举例说明了i_{3}有两个邻居节点e_{1},u_{2},在信息传播过程中,引入注意力机制,先算出一个权重\pi,再作一个加权平均,得到一个新的embedding,这里用到了LeakRelu激活函数(可以先了解一下Relu、LeakReluctant、sigmoid、hanH等激活函数) 。

三、模型详细介绍

1、Embedding Layer嵌入层

该层将图变向量,一开始向量可以随机赋值,经过该层后得到稳定合理非零的向量。深刻理解Embedding Layer需要了解知识图谱三元组(Head entity、Relation、Tail entity)概念和平移原理(e^{h}_{r}+e_{r}\approx e^{t}_{r})。

文章中的得分函数:

这里用到了transR,通过左乘一个变换矩阵将三元组的头节点h、尾节点t映射到了关系r所在向量空间。

1)KG里有n个Relation向量,就可以对应有n个向量空间

2)可以了解一下transE、transH、tansR等

3)为什么一个向量左乘一个矩阵就可以映射到另外一个向量空间?可以先理解在一个二维空间中一个点(点就可以当成是一个向量)经过平移后到达另外一个位置,平移后该点的坐标(向量)就可以通过该点原来的坐标(向量)左乘一个平移矩阵得到,实际上二维空间中一个点可以通过对应的平移矩阵、旋转矩阵、对称矩阵等来得到平移、旋转、对称等变换后的坐标(向量),这同样可以推广到三维空间。

使

最小为0,可以使式子中每个向量都为0就可以得到,这显然不行。所以得分函数引入了负采样。

 

 式子中的h,r,t{}'是一个伪三元组,h+r-t{}'是一个较大的值,h,r,t是一个真实的三元组,所以h+r-t较小,接近0,所以二者相减也是一个较大的值,函数ln是增函数,所以对数值也是一个较大的值,为了求得分函数的最小值,所以在前面加了一个负号,\sigma文章中指出是激活函数sigmoind函数,值域对应在(0,1)。

经过嵌入层,我们就可以由最先随机的一些向量得到非0的同时满足h+r\approx t 的embedding。(embedding你可以理解为就是向量)

   2、Information propagation 信息传播

通过embedding layer得到了每个结点的embedding,  信息在图中怎么传播的呢?

 上图式子表示所有以h结点为头结点的三元组的集合

    

上图式子表示所有h结点的邻居结点(尾结点)将自身的信息做一个加权平均,传播给头结点。\pi决定了多少信息从尾结点传播到头结点。

怎么理解权重\pi?这里就引入了注意力机制。

理解上面式子任然要知道transR,尾结点e_{t}通过左乘一个矩阵映射到r所在的向量空间得到一个向量,尾结点一样通过映射后得到一个向量 

两个向量做一个内积得到其相似度,如果h、r相似,就给其赋值一个较大的权重。

上面式子表示要对头结点对应的全部邻居结点(尾结点)计算权重 

并且通过softmax进行归一化处理。若不做归一化处理,通过多次迭代后 \pi可能会变得较大。

 3、information aggregation信息聚合

 

为了将头结点本身信息与邻居结点的信息聚合(向量聚合),文章中介绍了三种聚合方式。 一种是将向量相加、一种是将向量拼接、一种是双向聚合。

第一个式子就是将两组向量相加再左乘一个矩阵,再用激活函数LeakReLU处理。第三个式子是文章中提出的双向交互聚合,其中的\bigodot表示向量对应位置相乘,它可以提供一个非线性的交互。

4、High-order propagation高阶依赖传播

 上面式子表示第l-1 层的某头结点h得到的其全部尾结点通过注意力机制传播的信息(向量)

 上面式子表示将h结点信息和其邻居结点信息通过某种聚合方式f聚合后得到h结点在l层的embedding。同理可以得到l+1l+2层的embedding。

文章中举例:

 u_{2}通过四跳,编码进u_{1}

5、Model Prediction模型预测

上面式子表示将每一层的user和item的embedding拼接起来。

 

 上面式子表示将每一层的user和item的embedding拼接起来后做一个点乘计算相似度,得到一个概率。

6、Model optimization模型优化

假设观察到的交互(表明更多用户偏好)应该比未观察到的交互分配更高的预测值 ,其中 O = {(u,i, j)|(u,i) ∈ R+ , (u, j) ∈ R−} 表示训练集,R + 表示观察到的用户u 和项目 j 之间的(正)交互,而 R − 是采样的未观察(负)交互集; σ(·) 是 sigmoid 函数。

最终的函数包括transR的损失函数L_{KG}L_{CF}函数和一个L2正则。

 L2正则就是防止过拟合,让模型的参数变小,\lambda是正则强度。

你可能感兴趣的:(知识图谱,学习,人工智能)