GAT
将卷积泛化到图表数据领域的方法可以分类为谱方法和非谱方法。其中,谱方法是基于图的谱表达,这类方法已经成功的运用在上下文节点分类上。非谱方法直接在graph上定义卷积,核心是定义一个函数,它作用在中心节点的邻居集合上,并且保留权重共享的属性,这个里每个中心节点邻居集合的大小不确定。Attention机制多用于基于序列的任务中。Attention机制的特点是,它的输入向量长度可变,通过将注意力集中在最相关的部分,以此做出决定。attention机制结合RNN或者CNN的方法,在许多任务上取得了不错的表现。
基于这两个方面的工作,作者提出了基于attention的图卷积架构,在图结构数据上实现节点的分类。主要方法是,通过遵循self-attention策略,邻域节点参与计算每个中心节点的隐含表达。
先构建一个基础的block,整个graph attention网络都是基于这个block叠加构建的。这个基础block叫做graph attention layer。
layer的输入是N个长度为F的特征向量,。输出是N个长度为F'的特征向量,。要得到充分的,将输入特征转化为高级特征的表达能力,至少需要一个线性变换。共享线性变换权重矩阵,运用在所有节点上。再为每个节点加上self-attention。这是一个共享的attention机制,a将两个长度为F'的向量转化为一个标量,作为attention系数。
上式表示的意义是,节点j的特征,对节点i的重要性。在普遍情况下,对于注意力机制,允许其他所有节点参与目标节点特征的计算,也就是说不考虑图结构信息。这里,通过masked attention注入图结构信息,这样一来,对于节点j,只计算节点j的邻居节点i 的注意力系数。这里邻居节点只考虑一度邻居,为了使注意力系数更容易比较,使用softmax将其归一化。
作者的实验中,注意力机制a是一个权重向量a参数化的单层前馈神经网络。网络使用非线性函数LeakyReLU作为激活函数。注意力系数的完整计算公式如下。
其中表示转置,||代表连接操作。
一旦得到归一化的关注系数,就利用关注系数与对应的节点特征做线性变换,再进行一次非线性变换后,作为节点特征的输出。
对于节点i,它的一阶邻居节点集合为,根据节点i对每个邻居节点j的关注系数,计算节点i的输出。
为了保证注意力机制的稳定性,执行mult-head attention,同时执行三个相互独立的attention机制,并将三次的输出结果concat或者计算平均。
在最后一层网络,如果执行多头attention机制,concat将不再合适,此时,在最终的非线性判断函数之前,计算平均 :
实验
作者设计了四个graph based数据任务,执行了GAT模型与一系列强大的baseline方法的比较评估。在Transductive和Inductive的配置下,GATs方法均达到state-of-art的效果。
在transductive的任务中,比较平均分类准确度。为了公平的评估注意力机制的优势,作者进一步评估了一个计算64个隐含特征的GCN模型,并同时尝试了ReLU和ELU激活。由表1,GAT方法在数据集Cora、Citeseer的分类准确度比GCNs高1.5%和1.6%。这说明,将不同的权重分配给邻域内不同的邻居能够有效提高模型表达能力。
对于Inductive任务,取两个模型从未见过的graph测试,比较节点的F1-score。在PPI数据集上,GAT模型的表现比GraphSAGE的最好成绩还要高20.5%,GAT模型具有良好的inductive setting运用潜力。
参考论文:
https://arxiv.org/pdf/1710.10903.pdf