人工智能

图注意力网络

2021-09-26  本文已影响0人  酷酷的群

论文标题:GRAPH ATTENTION NETWORKS
论文链接:https://arxiv.org/abs/1710.10903
论文来源:ICLR 2018

一、概述

为了将卷积操作泛化到图数据上,研究人员做了一些努力。一些基于频域图卷积的GCN被研发了出来,然而在所有这些方法中,卷积核都依赖于拉普拉斯特征基,也就是依赖于图结构。也就是说,在一个特定图结构上训练的GCN无法被应用在其他不同的结构上,因此GCN的方法是transductive的。另外一些空域上的图卷积方法也存在,这些方法面临的挑战是处理不同size的邻域并且保持CNN的参数共享特性。

在许多基于序列的任务中,注意力机制几乎已经成为事实上的标准。注意力机制的一个好处是可以处理可变大小的输入,然后通过关注在最相关的部分来做出决策。当一个注意机制被用来计算一个单一序列的表示时,它通常被称为self-attention或者intra-attention。

本文提出了一种基于注意力机制的网络架构来处理图结构的数据,称为graph attention networks(GATs),主要思想是借助self-attention机制通过attend到节点的邻域来计算每个节点的隐层表示。这种基于注意力机制的架构有以下几个特点:
①操作是高效的,因为在节点的邻域之间以及节点之间都是并行化的;
②能够应用到不同节点度的图节点上;
③能够直接应用到inductive学习问题,包括需要泛化到完全未见图上的任务。

二、方法

  1. 图注意力层

图注意力层是GAT中采用唯一层,其输入为h=\left \{\vec{h_{1}},\vec{h_{2}},\cdots ,\vec{h_{N}}\right \},\vec{h_{i}}\in \mathbb{R}^{F}N是节点的数量,F是每个节点的特征数量,该层生成一个新的节点特征集合h^{'}=\left \{\vec{h_{1}^{'}},\vec{h_{2}^{'}},\cdots ,\vec{h_{N}^{'}}\right \},\vec{h_{N}^{'}}\in \mathbb{R}^{F^{'}}作为输出,F^{'}可能是与F不同的节点特征数。

为了获得足够的表达能力将输入特征转换为更高层次的特征,至少需要一次可学习的线性变换。为了这个目的,作为初始步骤,一个共享的线性变换,参数为W\in \mathbb{R}^{F^{'}\times F},会被应用到每个节点上。然后执行节点的self-attention,也就是一个共享的注意力机制a:\mathbb{R}^{F^{'}}\times \mathbb{R}^{F}\rightarrow \mathbb{R}

e_{ij}=a(W\vec{h_{i}},W\vec{h_{j}})

e_{ij}代表的是节点j的特征对节点i的重要性。目前的设置允许节点attend到图中的每个其他节点,没有考虑图的结构信息(也就是边的连接)。我们通过直接masked attention来将图结构信息注入到机制中,具体的也就是我们只计算节点j\in N_{i}e_{ij}N_{i}代表节点i的邻域。在本文的所有实验中采用的是节点i的1阶邻域(包括节点i本身)。

为了使注意力权重在不同节点之间容易比较,我们使用softmax函数对所有j的选择进行标准化:

\alpha _{ij}=softmax_{j}(e_{ij})=\frac{exp(e_{ij})}{\sum _{k\in N_{i}}exp(e_{ik})}

在本文实验中,注意力机制a是一个单层前馈神经网络,参数记作\vec{a}\in \mathbb{R}^{2F^{'}},同时使用LeakyReLU激活函数(负输入斜率\alpha =0.2)。注意力机制的完全形式为:

\alpha _{ij}=\frac{exp\left (LeakyReLU(\vec{a}^{T}[W\vec{h_{i}}||W\vec{h_{j}}])\right )}{\sum _{k\in N_{i}}exp\left (LeakyReLU(\vec{a}^{T}[W\vec{h_{i}}||W\vec{h_{k}}])\right )}

||代表拼接操作。接着按照注意力权重来将节点的邻域表示线性累加起来得到最终的输出表示:

\vec{h_{i}^{'}}=\sigma \left (\sum _{j\in N_{i}}\alpha _{ij}W\vec{h_{j}}\right )

为了稳定学习的过程,我们发现扩展上述注意力机制为multi-head attention机制更为有效,类似Transformer架构中所做的。具体的,使用K代表head的个数,每个head都执行前述attention操作,最终将得到的表示拼接起来:

\vec{h_{i}^{'}}=||_{k=1}^{K}\sigma \left (\sum _{j\in N_{i}}\alpha _{ij}^{k}W^{k}\vec{h_{j}}\right )

注意最终的输出h^{'}将会包括KF^{'}个特征(并不是F^{'})。特别的,如果我们对最后一层(预测层)执行multi-head attention,那么拼接操作就不是合适的了,我们可以采用平均的方式,并且延迟使用非线性函数(对于分类任务来说通常是softmax或者sigmoid函数)来获得最终表示:

\vec{h_{i}^{'}}=\sigma \left (\frac{1}{K}\sum_{k=1}^{K}\sum _{j\in N_{i}}\alpha _{ij}^{k}W^{k}\vec{h_{j}}\right )

需要注意的是,我们模型的感受野的大小是由网络的深度所决定的。跳跃连接等技术可以很容易地用于适当扩展深度。

上述注意力机制以及multi-head输出的聚合过程,如下图所示:

图示
  1. 相关工作对比

GAT解决了以往方法中存在的一些问题:
①计算上GAT是高效的,无论是对于所有的边的计算还是输出特征的所有节点的计算,都是并行化的。不需要特征分解或类似的代价高昂的矩阵运算。一个注意力head的计算复杂度为O(|V|FF^{'}+|E|F^{'})|V||E|是图中节点和边的数量,这种复杂度与GCN相当。
②与GCN不同,GAT允许对邻域节点的不同重要性,这提升了模型的容量。另外,注意力权重可以对模型的可解释性有一定的帮助。
③注意机制以共享的方式应用于图中的所有边,因此它不依赖于对全局图结构或所有节点(特征)的预先访问(这是许多先前技术的限制)。具体来说,首先不要求边是无向的,另外GAT可以直接应用于inductive学习,即使模型在完全未见图上进行测试。
④GraphSAGE的方法在邻域中采集固定样本,并且最有效的LSTM聚合函数的版本假设了邻域节点存在顺序。GAT并没有上述问题,GAT能够在节点的所有邻域上进行操作,并且没有假设节点的顺序。
⑤与之前MoNet方法相比,我们的模型使用节点特征进行相似性计算,而不是节点的结构属性(这将假设预先知道图结构)。

三、实验

本文在Cora,Citeseer,Pubmed,PPI四个数据集上进行实验。其中前三个是transductive的数据集,PPI是inductive的数据集。数据集情况如下:

数据集

transductive实验结果如下:

transductive

inductive实验结果如下:

inductive

最后使用t-SNE可视化了一下在Cora数据集上的GAT第一层的特征:

可视化
上一篇下一篇

猜你喜欢

热点阅读