经典论文阅读-16:GAT

400 阅读11分钟

图注意力网络

论文地址:[PDF] Graph Attention Networks | Semantic Scholar

摘要

我们提出图注意力网络 Graph Attention Networks GATs,一种新的神经网络架构,处理图结构数据,使用 Masked Self Attention 层解决之前图卷积方法的缺点。通过堆叠这些能使节点在其邻居特征上获得注意力的层,我们可以针对同一个邻居,给不同节点分配不同权重,不需要任何耗时的矩阵运算或预先了解图结构。通过这种方法,我们同时解决了谱图神经网络的几个关键挑战,使我们的模型能用于归纳或直推问题。GATs 模型在四个归纳和直推问题的图基准上,Core、Citeseer、Pubmed、Protein-protein Interaction,获得了最好的效果。

简介

卷积神经网络 Convolutional Neural Networks CNNs 已经成功用于解决图像分类、语义划分、机器翻译等问题,其处理的低层数据表示有方格类结构。这类模型高效地在所有输入位置上重用局部过滤器,共享过滤器学到的参数。

然而,许多有趣的任务所涉及的数据并不具有方格类结构,而是不规则结构。这种数据包括 3D 形状、社交网络、电话网络、生物网络、大脑连接等,此类数据通常用图的形式表示。

有一些文献尝试扩展神经网络来直接处理图结构数据。早期研究里有使用 RNN 来处理图形式的有向无环图数据。Gori 等人提出的图神经网络 GNN 是一种 RNN 的泛化版本,可直接处理更通用的图类型,如有环、有向、无向图。GNNs 由迭代过程构成,传播节点状态,直到其到达平衡状态,其后接一个神经网络,根据每个节点状态产生对应输出。该思路被 Li 等人采用与发扬,提出在传播过程中使用门循环单元 Gated Recurrent Units。

此外,还有越来越多的研究尝试将卷积泛化到图领域。这类研究通常被分为谱方法与非谱方法。

一方面,谱方法处理图的谱表示,成功应用于图节点分类。在 Bruna 等人的研究中,将卷积运算定义为在傅立叶域中计算图拉普拉斯矩阵的特征分解,产生潜在的高强度计算与非空间局部过滤器。这些问题在后续研究中被解决,Henaff 等人引入具有平滑系数的参数化谱过滤器,使其更具空间局部性。后来,Defferrard 等人提出使用图拉普拉斯的切比雪夫展开的均值来估计过滤器,避免计算特征分解,产生空间局部化过滤器。最后,Kipf 与 Welling 简化该方法,限制过滤器只计算节点的一跳邻居。然而,所有这些谱方法,其学到的过滤器都依赖于拉普拉斯特征,即依赖网络结构。因此,在某个结构的图上训练的模型不能直接用在另一个结构的图上。

另一方面,非谱方法直接在图上定义卷积,处理空间近邻小组。这类方法的一个挑战是如何定义能处理各种邻居规模的运算,同时维持 CNNs 的权重共享特性。在一些情况下,需要学习每个节点度的权重矩阵,使用过渡矩阵学习每个输入通道权重来定义邻居与邻居度,或者抽取与归一化包含固定数量节点的邻居。Monti 等人提出一种混合模型 CNNs(MoNet),一种针对图的统一泛化 CNN 架构的空间方法。更近一些,Hamilton 等人提出 GraphSAGE,用归纳方式计算节点表示。该模型对每个节点采样固定数量的邻居,然后基于采样后的节点图计算某种聚合。该方法在一些大规模归纳基准数据集上取得了令人印象深刻的效果。

Attention 机制已经成为处理序列任务的事实标准。注意力机制的优点之一是,它能处理各种大小的输入,使用输入最相关的部分来下判断。当注意力机制用于计算单个序列的表示时,通常被称为 Self-Attention/Intra-Attention 自注意力。将自注意力与 RNNs 或 CNNs 结合起来使用,通常可在机器阅读和学习句子特征表示方法非常有效。然而,Vaswani 等人展示了自注意力不只可以提升 RNNs 或 CNNs 模型性能,其自身就可以构成强效模型来处理机器翻译任务,并获得最先进的性能结果。

受这些研究启发,我们提出基于注意力的模型来处理图数据中节点分类任务。主要思路是首先计算图中每个节点的隐藏表示,然后使用注意力机制让各节点注意其邻居节点。该注意力架构有几个有趣的属性:

  • 运算高效,因为可并行处理各节点邻居。

  • 可用于具有不同度的节点,只需给邻居分配一个权重值。

  • 模型可直接用于归纳学习问题,如生成原图中不可见的补充部分。

我们在四个数据集上测试了该模型,都达到了最先进的性能效果,显示了基于注意力模型直接处理图结构数据的潜力。

值得注意的是,我们的模型可看作 MoNet 的某种实例。而且,我们的模型中贡献神经网络边计算的方法会使人想起关系网络与 VAIN 等模型,都采用共享机制成对聚合对象之间的关系。相似地,我们提出的注意力模型也与 Duan 等人的研究有关,使用邻居注意力运算来计算同一环境中不同对象的注意力系数。其他相关方法包括局部线性嵌入 Locally Linear Embedding LLE 和记忆网络。LLE 在每个节点周围选择固定数量的邻居,计算各邻居权重系数,然后通过加权求和邻居表示来重构中心节点表示。记忆网络也与我们的研究有些关联,尤其是,在记忆中翻译某节点邻居表示时,使用节点表示注意其邻居表示,然后在记忆中更新对应邻居表示。

GAT 架构

本节介绍用于构建图注意力网络 GAT 的构建块层,强调其理论、实践优点、缺陷等。

图注意力层

我们从介绍单个图注意力层开始,即整个 GAT 架构等构建单元。我们按照 Bahdanau 等人提出的注意力设置来配置注意力,但框架对使用何种注意力机制是不作限制的。

该注意力层的输入是一组节点向量 h={h1,...,hN},hiRFh=\{\vec h_1,...,\vec h_N\},\vec h_i\in\mathbb R^F 其中 N 是节点数量,F 是特征维度。该层产生新的一组节点向量 h={h1,...,hN},hiRFh'=\{\vec h_1',...,\vec h_N'\},\vec h_i'\in\mathbb R^{F'} 作为输出。

为了获得能将输入特征转换到高维特征的足够表示性,至少需要一个可学习的线性变换。为了实现该目标,在初始化步骤里,给每个节点做一次共享参数 W 的线性变换,WRF×FW\in\mathbb R^{F'\times F} 为权重矩阵。接着对节点再做一次自注意力变换 Self Attention,这也是一种共享的注意力机制 a:RF×RFRa:\mathbb R^{F'}\times\mathbb R^F\to\mathbb R 计算注意力系数。

eij=a(Whi,Whj)e_{ij}=a(W\vec h_i,W\vec h_j)

这得到节点 j 的特征对节点 i 的重要性。在注意力的最通用公式里,模型允许每个节点注意到其他任意节点,忽视所有结构信息。我们在该机制中注入图结构信息,使用遮罩注意力 Masked Attention,只对每个节点计算 jNij\in N_i 的注意力 eije_{ij}NiN_i 为该节点邻居集合。在我们的实验中,这表达了节点 i 的一阶邻居。为了使系数能更容易在节点之间比较,我们在所有可选的 j 上对其进行 softmax 归一化处理。

αij=softmaxj(eij)=exp(eij)kNiexp(eik)\alpha_{ij}=softmax_j(e_{ij})=\frac {\exp(e_{ij})} {\sum_{k\in N_i}\exp(e_{ik})}

在实验中,注意力机制 aa 是单层前向神经网络,使用权重矩阵 aR2F\vec a\in\mathbb R^{2F'} 做参数,使用 LeakyReLU 非线性激活。完整扩展后,系数计算公式变为下式。

αij=exp(LeakeyReLU(aT[WhiWhj]))kNiexp(LeakeyReLU(aT[WhiWhk]))\alpha_{ij}=\frac {\exp(LeakeyReLU(\vec a^T[W\vec h_i||W\vec h_j]))} {\sum_{k\in N_i}\exp(LeakeyReLU(\vec a^T[W\vec h_i||W\vec h_k]))}

其中 T 表示转置,|| 表示连接。

一旦计算出所有系数,可用其计算各特征的线性组合,并组合结果视为每个节点的最终输出特征。

hi=σ(jNiαijWhj)\vec h_i'=\sigma(\sum_{j\in N_i}\alpha_{ij}W\vec h_j)

pic1.png

为了稳定地学习自注意力,我们采用多头注意力机制 Multi-Head Attention。使用 K 个独立的注意力机制执行上述转换,然后将其输出连接在一起作为本层输出特征表示。

hi=k=1Kσ(jNiαijkWkhj)\vec h_i'=||_{k=1}^K\sigma(\sum_{j\in N_i}\alpha_{ij}^kW^k\vec h_j)

特别地,如果使用多头注意力机制作为网络的最后一层,那么连接各注意力的输出向量就不再合适了,这时要取其平均值,公式如下。

hi=σ(1Kk=1KjNiαijkWkhj)\vec h_i'=\sigma(\frac 1 K\sum_{k=1}^K\sum_{j\in N_i}\alpha_{ij}^kW^k\vec h_j)

与最近研究做对比

上一节介绍的图注意力层直接解决了之前使用神经网络建模图结构数据时遇到的问题。

  • 计算效率:自注意力层运算可在边上并行处理,输出向量计算也可在点上并行处理。不需要特征分解或类似的高运算量矩阵操作。单 GAT 的注意力计算时间复杂度为 O(VFF+EF)O(|V|FF'+|E|F') ,其中 F 是输入特征维度,F‘ 是输出特征维度,|V| 和 |E| 分别是节点数量与关系数量。该复杂度与基准模型 GCN 不相上下。使用多头注意力的时间复杂度再乘以 K ,而各注意力头直接是互相独立的,可并行计算。

  • 与 GCN 相比,GAT 可以给同一个邻居节点赋值多个重要性权重,使模型容量激增。而且,分析学到的注意力权重,其本身也会带来解释性收益,可用于机器翻译领域。

  • 注意力机制以共享的方式在图中所有边上使用,因此不依赖之前访问的全局图结构或节点结构。

  • 最近发布的归纳式方法从节点的周围采样固定数量的邻居,保持其计算幅度一致,这导致在推理时不能使用全部邻居信息。而且,该技术在用上基于 LSTM 的邻居聚合技巧后取得了更好的效果。这假设存在一致的有序节点序列,然后基于随机排序的节点序列训练 LSTM。我们的方法不会遇到该问题,它直接处理节点的所有邻居,并不假设邻居之间有顺序。

  • 之前提到 GAT 可视为某特殊的 MoNet,更确切地,设置伪坐标函数 u(x,y)=f(x)f(y)u(x,y)=f(x)||f(y) 其中 f(x)f(x) 表示节点特征,|| 表示向量连接,那么权重函数变成 wj(u)=softmax(MLP(u))w_j(u)=softmax(MLP(u)) 会使 MoNet 的卷积操作与我们模型相似。除此之外,还要注意到,在与 MoNet 对比时,我们的模型使用节点特征计算相似度,而不是节点的结构属性。

我们能够构造某种版本的 GAT 层来实现更好的稀疏矩阵运算,减少存储复杂度到与节点和边数量线性相关,能使 GAT 模型在大规模图上使用。然而,我们使用的张量操作框架只支持秩为 2 的张量的稀疏矩阵,限制了每层的批处理能力。恰当解决该约束是未来研究的重要方向。依赖图结构规则,GPU 在稀疏场景下可能不能提供比 CPU 多更多性能提升。还需要注意的是模型感知域大小受网络深度约束。如近路连接等技术也可以适当用于扩展模型深度。最后,基于边的并行计算,尤其是以分布式形式的计算,可能涉及许多冗余计算,因为在某些图中节点之间的邻居可能高度重叠。

评估模型

总结

我们提出 Graph Attention Networks GATs,新型基于图结构数据的图卷积网络,高效使用遮罩自注意力层。网络中到处使用的图注意力层是可以高效计算的,允许给不同节点的相同邻居设置不同的权重,因此可解决不同规模的邻居数量问题,而不依赖整个网络全局结构,解决了许多之前基于谱方法的理论问题。使用注意力机制的模型成功在四个数据集上的节点分类任务上达到最佳效果。

GAT 也有一些潜在提升与扩展可在未来研究中解决,如解决上文所说的大规模批处理问题。一个特别有趣的研究方向是利用注意力机制做模型解释性分析。此外,扩展模型做图分类任务而不只是节点分类任务可应用在许多实际场景中。最后,扩展模型处理边特征也可使我们解决更多类问题。