论文标题 | Graph Attention Networks
论文来源 | ICLR 2018
论文链接 | https://arxiv.org/abs/1710.10903
源码链接 | https://github.com/PetarV-/GAT

TL;DR

论文中提出基于注意力机制的图神经网络,利用一个隐藏的 self-attention 层,来处理一些图卷积中的问题。不需要复杂的矩阵运算或者对图结构的事先了解,通过叠加self-attention层,在卷积过程中将不同的重要性分配给邻域内的不同节点,同时处理不同大小的邻域。作者分别设计了inductive setting和transductive setting的任务实验,GATs模型在基线数据集Cora、Citeseer、Pubmed citation和PPI数据集上取得了state-of-the-art的结果。

Algorithm/Model

将卷积泛化到图表数据领域的方法可以分类为谱方法和非谱方法。其中,谱方法是基于图的谱表达,这类方法已经成功的运用在上下文节点分类上。非谱方法直接在graph上定义卷积,核心是定义一个函数,它作用在中心节点的邻居集合上,并且保留权重共享的属性,这个里每个中心节点邻居集合的大小不确定。Attention机制多用于基于序列的任务中。Attention机制的特点是,它的输入向量长度可变,通过将注意力集中在最相关的部分,以此做出决定。attention机制结合RNN或者CNN的方法,在许多任务上取得了不错的表现。

基于这两个方面的工作,作者提出了基于attention的图卷积架构,在图结构数据上实现节点的分类。主要方法是,通过遵循self-attention策略,邻域节点参与计算每个中心节点的隐含表达。

先构建一个基础的block,整个graph attention网络都是基于这个block叠加构建的。这个基础block叫做graph attention layer。

图注意力网络

layer的输入是NN 个长度为FF 的特征向量h={h1,h2,,hN},hiRF\mathbf{h}=\left\{\vec{h}_{1}, \vec{h}_{2}, \ldots, \vec{h}_{N}\right\}, \vec{h}_{i} \in \mathbb{R}^{F}。输出是NN 个长度为FF' 的特征向量h={h1,h2,,hN},hiRF\mathbf{h}^{\prime}=\left\{\vec{h}_{1}^{\prime}, \vec{h}_{2}^{\prime}, \ldots, \vec{h}_{N}^{\prime}\right\}, \vec{h}_{i}^{\prime} \in \mathbb{R}^{F^{\prime}}。要得到充分的,将输入特征转化为高级特征的表达能力,至少需要一个线性变换。共享线性变换权重矩阵,运用在所有节点上。再为每个节点加上 self-attention,这是一个共享的attention机制:a:RF×RFRa: \mathbb{R}^{F^{\prime}} \times \mathbb{R}^{F^{\prime}} \rightarrow \mathbb{R}aa 将两个长度为FF' 的向量转化为一个标量,作为attention系数。

eij=a(Whi,Whj)e_{i j}=a\left(\mathbf{W} \vec{h}_{i}, \mathbf{W} \vec{h}_{j}\right)

上式表示的意义是,节点jj 的特征,对节点ii 的重要性。在普遍情况下,对于注意力机制,允许其他所有节点参与目标节点特征的计算,也就是说不考虑图结构信息。这里,通过masked attention注入图结构信息,这样一来,对于节点jj ,只计算节点j的邻居节点ii 的注意力系数eije_{ij} 。这里邻居节点只考虑一度邻居,为了使注意力系数更容易比较,使用softmax将其归一化。

αij=softmaxj(eij)=exp(eij)kNiexp(eik)\alpha_{i j}=\operatorname{softmax}_{j}\left(e_{i j}\right)=\frac{\exp \left(e_{i j}\right)}{\sum_{k \in \mathcal{N}_{i}} \exp \left(e_{i k}\right)}

作者的实验中,注意力机制aa 是一个权重向量aa 参数化的单层前馈神经网络。网络使用非线性函数LeakyReLU作为激活函数。注意力系数的完整计算公式如下:

αij=exp(LeakyReLU(aT[WhiWhj]))kNiexp(LeakyReLU(aT[WhiWhk]))\alpha_{i j}=\frac{\exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{j}\right]\right)\right)}{\sum_{k \in \mathcal{N}_{i}} \exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{k}\right]\right)\right)}

其中.T.T 表示转置,|| 代表连接操作。

一旦得到归一化的关注系数,就利用关注系数与对应的节点特征做线性变换,再进行一次非线性变换后,作为节点特征的输出:

hi=σ(jNiαijWhj)\vec{h}_{i}^{\prime}=\sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j} \mathbf{W} \vec{h}_{j}\right)

对于节点ii,它的一阶邻居节点集合为Ni\mathcal{N}_{i},根据节点i对每个邻居节点j的关注系数,计算节点ii 的输出hi\vec{h}_{i}

为了保证注意力机制的稳定性,执行mult-head attention,同时执行三个相互独立的attention机制,并将三次的输出结果concat或者计算平均:

hi=k=1Kσ(jNiαijkWkhj)\vec{h}_{i}^{\prime}=\|_{k=1}^{K} \sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \vec{h}_{j}\right)

在最后一层网络,如果执行多头attention机制,concat将不再合适,此时,在最终的非线性判断函数之前,计算平均 :

hi=σ(1Kk=1KjNiαijkWkhj)\vec{h}_{i}^{\prime}=\sigma\left(\frac{1}{K} \sum_{k=1}^{K} \sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \vec{h}_{j}\right)

Experiments

作者设计了四个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运用潜力。

实验结果

Thoughts

大佬们开创性的作品!

联系作者