《Graph attention networks》
卷积神经网络(Convolutional Neural Network: CNN)已经成功应用于图像分类、语义分割以及机器翻译之类的问题,其底层数据结构为网格状结构(grid-like structure)。这些架构通过将它们应用于所有的 input position 从而有效地 reuse 具有可学习参数的局部滤波器( local filter)。
然而,许多人们感兴趣的任务涉及的数据无法以网格状结构来表达,而是位于不规则域(irregular domain)。例如,3D mesh、社交网络、电信网络、生物网络、脑连接组(brain connectome)等等。这些数据通常可以通过 graph 的形式来表达。
有一些文献尝试扩展神经网络从而处理任意结构的图。
早期的工作使用递归神经网络(recursive neural network: RNN )来处理 graph domain 中表示为有向无环图的数据。
《A new model for learning in graph domains》 和 《The graph neural network model》 提出了图神经网络(Graph Neural Network: GNN )作为 RNN 的泛化,从而可以直接处理更通用的 graph 类型,如:循环图、有向图、无向图。
GNN 包含一个迭代过程,该迭代过程传播节点状态直到达到平衡。然后是一个神经网络,它根据每个节点的状态为每个节点生成一个输出。
这个思想被 《Gated graph sequence neural networks》 所采纳和改进,该方法提出在传播过程中使用门控循环单元(gated recurrent unit: GRU)。
然而,人们将卷积推广到 graph domain 的兴趣越来越大。这个方向的进展通常分为谱方法(spectral approach )和非谱方法 (non-spectral approach)。
一方面,谱方法与图的谱表示(spectral representation)一起工作,并已成功应用于节点分类的 context 中。
在 《Spectral networks and locallyconnected networks on graphs》 中,卷积运算是通过计算图拉普拉斯矩阵(graph Laplacian)的特征分解(eigen decomposition)从而在傅里叶域 (Fourier domain)中定义的,这导致潜在的稠密计算以及非空间局部化的滤波器(non-spatially localized filter)。 这些问题在随后的工作中得到解决。
《Deep convolutional networks on graph-structured data》 引入了具有平滑系数的谱滤波器(spectral filter)的参数化(parameterization),使得滤波器在空间上局部化。
后来,《Convolutional neural networks on graphs with fast localized spectral filtering》 提出通过图拉普拉斯矩阵的切比雪夫展开来近似滤波器,从而无需计算图拉普拉斯矩阵的特征向量从而生成空间局部化的滤波器。
最后,《Semi-supervised classification with graph convolutional networks》 通过限制滤波器仅操作每个节点周围的 1-step 邻域内来简化之前的方法。
然而,在所有上述谱方法中,学到的滤波器依赖于拉普拉斯矩阵的特征基(Laplacian eigenbasis),而这个特征基依赖于图结构。因此,在特定图结构上训练的模型无法直接应用于具有不同结构的其它的图。
另一方面,我们有非谱方法,该方法直接在图上定义卷积从而操作空间近邻的节点集合。这些方法的挑战之一是:定义一个与不同规模的邻域一起工作,并能保持 CNN 的权重共享属性的算子。
在某些情况下,这需要为每个节点 degree 学习一个特定的权重矩阵(《Convolutional networks on graphs for learning molecular fingerprints》),或者需要使用转移矩阵(transition matrix)的幂来定义邻域并同时针对每个输入通道和邻域 degree 来学习权重(《Diffusion-convolutional neural networks》),或者需要抽取和归一化邻域从而包含固定数量节点(《Learning convolutional neural networksfor graphs》)。
《Geometric deep learning on graphs and manifolds using mixture model cnns》 提出了 mixture model CNN (MoNet),这是一种空间方法,可以将 CNN 架构统一泛化到图。
最近,《representation learning on largegraphs》 提出了 GraphSAGE,这是一种以归纳式的方式计算 node representation 的方法。该技术通过对每个节点采样固定尺寸邻域,然后该邻域执行特定的聚合器(如,均值池化聚合器,或 LSTM 聚合器)。GraphSAGE 在多个大规模归纳式 benchmark 中取得了令人印象深刻的性能。
GAT无需对邻域进行采样,能够处理可变邻域。
在许多 sequence-based 任务中,注意力机制几乎已经成为事实上的标准。注意力机制的好处之一是:注意力机制允许处理可变尺寸的输入,并聚焦于输入中最相关的部分从而作出决策。当使用注意力机制来计算单个序列的 representation 时,它通常被称作 self-attention 或 intra-attention 。与 RNN 或卷积一起,self-attention 已被证明对机器阅读、sentence representation 学习等任务很有用。而且,《Attention is all you need》 表明:self-attention 不仅可以改进基于 RNN 或卷积的方法,而且足以构建一个强大的模型并且在机器翻译任务上获得 SOTA 的性能。
受最近这项工作的启发,论文《Graph attention networks》 引入了一种 attention-based 架构来执行图结构数据的节点分类。基本思想是:遵从 self-attention 策略,可以通过 attend 节点的邻居来计算图中每个节点的 hidden representation 。注意力架构有几个有趣的特性:
操作是高效的,因为它可以跨 node-neighbor pair 进行并行化。
self-attention 通过给邻居赋予可学习的、任意的权重,从而可以应用于具有不同 degree 的图节点。
该模型直接适用于归纳式的学习问题,包括模型必须泛化到完全 unseen 的图的任务。
作者在四个具有挑战性的 benchmark 上验证了所提出的方法,实现或接近 SOTA 的结果。实验结果凸显了 attention-based 模型在处理任意结构的图时的潜力。
注:
inductive learning和transductive learning的区别:
inductive learning是从具体样本中总结普适性规律,然后泛化到训练中unseen的样本。
transductive learning是从具体样本中总结具体性规律,它用于预测训练集中已经出现过的unlabelled样本,常用于半监督学习。
相关工作:
正如 《Semi-supervised classification with graph convolutional networks》 和 《Diffusion-convolutional neural networks》 一样,我们的工作也可以重新表述为 MoNet 的一个特定实例。
此外,我们跨 edge 共享神经网络计算(neural network computation)的方法让人联想起关系网络(relational network )(《A simple neural network module for relational reasoning》)和 VAIN (《Vain: Attentional multi-agent predictive modeling》)的公式,其中 object 或 agent 之间的relation 是通过采用一种共享机制来 pair-wise 聚合的。
同样地,我们提出的注意力模型可以与 《One-shot imitation learning》 和 《Programmable agents》 等工作联系起来,它们使用邻域注意力操作(neighborhood attention operation)来计算环境中不同对象之间的注意力系数。
其它相关方法包括局部线性嵌入( locally linear embedding: LLE)、记忆网络 (memory network) 。
LLE 在每个 data point 周围选择固定数量的邻居,并为每个邻居学习一个权重系数,从而将每个 point 重构为其邻居的加权和。然后第二步优化是抽取 point 的 feature embedding 。
memory network也与我们的工作有一些联系。具体而言,如果我们将节点的邻域解释为 memory,那么该 memory 被用于通过 attend memory 的 values 来计算 node feature (READ 过程),然后通过将新的特征存储在 node 对应的位置从而进行更新(WRITE 过程)。
这里我们介绍用于构建任意 graph attention network: GAT 的 building block layer(通过堆叠该层),即 graph attentional layer: GAL 。然后我们概述与神经图处理(neural graph processing)领域的先前工作相比,这种 layer 的理论和实践上的优势和局限性。
我们将从描述单个 graph attentional layer: GAL 开始,其中GAL 作为我们实验中使用的 GAT 架构中使用的唯一一种 layer 。我们使用的特定的 attentional setup 与 《Neural machine translation by jointly learning to align and translate》 的工作密切相关,但是 GAT 框架与注意力机制的特定选择无关。
GAL 的输入为一组节点特征:representation 维度。GAL 输出这些节点的新的representation:representation 维度(可能与
为了获得足够的表达能力(expressive power)从而将 input feature 转化为 higher-level feature ,至少需要一个可学习的线性变换。为此,作为初始的 step ,我们首先对所有节点应用一个共享权重的线性变换,权重为 self-attention attentional mechanism ) :attention 系数:
其中
理论上讲,我们允许每个节点关注图中所有其它的节点,因此这可以完全忽略所有的图结构信息。实际上,我们采用 masked attention 机制将图的结构信息注入到 attention 机制:对于节点 attention 系数
注意:这里
包含节点 在内。因为我们需要计算 。
为使得系数可以在不同节点之间比较,我们使用 softmax 函数对所有的
在我们的实验中,注意力机制 LeakyReLU 激活函数,其中负轴斜率
其中:
注意:这里的节点
作为 query,邻域内节点作为 key。query节点的 representation和每个key的representation进行拼接。

一旦得到归一化的注意力得分,我们就可以用它对相应的邻居节点的特征进行加权线性组合,从而得到每个节点的final output feature:
其中
理论上也可以使用不同的
,此时模型容量会得到进一步提升。
我们使用 multi-head attention 来稳定 self-attention 的学习过程。我们采用 head,然后将它们的输出拼接在一起:
其中:
head 的归一化的注意力得分。
head 的权重矩阵。
最终的输出
但是,如果 GAL 是网络最后一层(即输出层),我们对 multi-head 的输出不再进行拼接,而是直接取平均,因为拼接没有意义。同时我们延迟使用最后的非线性层,对分类问题通常是 softmax 或者 sigmoid :
理论上,最后的
GAL也可以拼接再额外接一个输出层。例如,实验部分作者就在最后一层使用个 attention head。
如下图所示为 multi head = 3,当且节点 head 。

GAL 解决了现有的、基于神经网络对图结构数据建模的方法的问题。
GAL 计算高效:
self-attentional layer 的操作可以跨所有 edge 并行化,输出特征的计算可以跨所有节点并行化。
即,单个
self-attention内部的、计算的操作可以并行化。不同节点之间计算 self-attention也可以并行化。
不需要特征分解(eigen decomposition)或类似的昂贵矩阵计算。
单个 attention head 计算 baseline 方法(如 GCN )差不多。
首先计算所有节点的
,计算复杂度为 。 再计算所有的
,计算复杂度为 。 再计算所有的
,计算复杂度为 ,其中 为节点的平均 degree,则的计算复杂度为 。 最终计算复杂度为
。
应用 multi-head attention 将存储需求和参数需求乘以 head 的计算是完全独立的并且可以并行化。
GCN:和 GCN 相比,GAT 模型允许为同一个邻域内的节点分配不同的重要性,从而实现模型容量(model capacity)的飞跃。另外,和机器翻译领域一样,对学到的注意力权重进行分析可能会带来可解释性的好处。
注意力机制以共享的方式应用于图的所有边,因此它不需要预先得到整个图结构或者所有节点(这是许多现有技术的局限性)。这有几个理想的含义:
图可以是有向图,也可以是无向图。如果边
GAT 可以直接应用到归纳式学习( inductinve learning ):模型可以预测那些在训练期间中 unseen 的图。
GraphSAGE :最近发表的归纳式方法 GraphSAGE 对每个节点采样固定大小的邻域,从而保持计算足迹( computational footprint)的一致性。这使得模型无法在测试期间访问整个邻域。
注意:由于训练期间训练多个
epoch,则GraphSAGE可能访问到节点的整个邻域。
此外,当使用 LSTM-based 邻域集合器时,GraphSAGE 取得了一些最强的结果。LSTM 假设在邻域之间存在一致的节点排序,并且作者通过向 LSTM 持续地提供随机排序的序列来使用 LSTM 。
GAT 没有这两个问题:GAT 作用在完整的邻域上,并且不假设邻域内有任何节点的排序。
注意:虽然
GAT作用在完整的领域上,但是在大型图的训练过程中可能还需要对邻域进行采样。因为对于大型图,对于每个mini-batch,我们不仅要提供 ,我们还需要提供 的邻域、以及它的邻域的邻域,... 。如果 GAT有层,那么需要覆盖 的 阶邻域。 如果使用完整的邻域,那么每个
mini-batch所需要的节点可能就是整个大图。这对于大型图而言是无法接受的(空间复杂度太高)。
MoNet:如前所述,GAT 可以重写表述为 MoNet 的特定实例。更具体而言:
设定伪坐标函数(pseudo-coordinate function)为 MLP 变换而来),
设定权重函数为 softmax 。
此时,这种 MoNet 的补丁算子 (patch operator)将类似于我们的方法。
然而,应该注意的是:与这个 MoNet 实例相比,我们的模型使用节点特征来计算相似性,而不是节点的结构属性(假设预先知道图结构)。
我们可以使用一种利用稀疏矩阵操作的 GAL 层,它可以将空间复杂度下降到节点和边的线性复杂度,从而使得模型能够在更大的图数据集上运行。但是我们的 tensor 计算框架仅支持二阶tensor 的稀疏矩阵乘法,这限制了当前版本的 batch 处理能力,特别是在具有很多图的数据集上。解决该问题是未来一个重要的方向。另外,根据现有图结构的规律,在稀疏矩阵的情况下,GPU 的运算速度并不会比 CPU 快多少因此无法提供主要的性能优势。
还应该注意的是,我们模型的感受野 (receptive field)的大小是网络深度的上限(类似于 GCN 或类似的模型)。然而,诸如 skip connection 之类的技术可以解决该问题,从而允许 GAT 使用更深的网络。
最后,跨图中所有 edge 的并行化,尤其是以分布式方式,可能会涉及大量冗余计算,因为图中邻域通常高度重叠。
一些有待改进的点:
如何处理更大的 batch size 。
如何利用注意力机制对模型的可解释性进行彻底的分析。
如何执行graph-level 的分类,而不仅仅是node-level 的分类。
如何利用边的特征,而不仅仅是节点的特征。因为边可能蕴含了节点之间的关系,边的特征可能有助于解决各种各样的问题。
数据集:三个标准的引文网络数据集Cora, Citeseer,Pubmed。
每个节点表示一篇文章、边(无向)表示文章引用关系。每个节点的特征为文章的 BOW representation。每个节点有一个类别标签。
Cora 数据集:包含2708 个节点、5429 条边、7 个类别,每个节点 1433 维特征。
Citeseer 数据集:包含3327 个节点、4732 条边、6 个类别,每个节点 3703 维特征。
Pubmed 数据集:包含19717 个节点、44338 条边、3 个类别,每个节点 500 维特征。
对每个数据集的每个类别,我们使用20 个带标签的节点来训练,然后在 1000 个测试节点上评估模型效果。我们使用额外的 500 个带标签节点作为验证集(与 GCN 论文中使用的相同)。
注意:训练算法可以利用所有节点的结构信息和特征信息,但是只能利用每个类别
20个节点的标签信息。

Baseline 模型:
我们对比了论文 《Semi-supervised classification with graph convolutional networks》 中指定的相同的 baseline 。包括:标签传播模型(label propagation: LP)、半监督嵌入模型( semi-supervised embedding: SemiEmb)、流型正则化模型 (manifold regularization: ManiReg)、基于SkipGram 的graph embeding 模型(如 DeepWalk)、迭代式分类算法模型( iterative classification algorithm: ICA ),Planetoid 模型。
我们也直接对比了 GCN模型、利用高阶切比雪夫的图卷积模型Chebyshev filter-based(《Convolutional neural networks on graphs with fast localized spectral filtering》)、以及 MoNet 模型。
我们还提供了每个节点共享 MLP 分类器的性能,该模型完全没有利用图的结构信息。
参数配置:
我们使用一个双层的 GAT 模型,它的架构超参数已经在 Cora 数据集上进行了优化,然后被 Citeseer 复用。
第一层包含 attention head,每个 head 得到 64 个特征。第一层后面接一个exponential linear unit: ELU 非线性激活层。
第二层用作分类,采用一个 attention head 计算 softmax 激活函数。
当处理小数据集时,我们在模型上施加正则化:
我们采用
两个层的输入,以及 normalized attention coefficient 都使用了 dropout 。即每轮迭代时,每个节点需要随机采样邻居(因为有些邻居被 dropout 了)。
对于60 个样本的 Pubmd 数据集,我们需要对 GAT 架构进行微调:
输出为 attention head ,而不是一个。
除此之外都和 Cora/Citeseer 的一样。
所有模型都采用 Glorot 初始化方式来初始化参数,优化目标为交叉熵,使用 Adam SGD 优化器来优化。初始化学习率为:Pubmed 数据集为 0.01,其它数据集为 0.005 。
我们在所有任务上执行早停策略,在验证集上的交叉熵和accuracy 如果连续 100 个 epoch 没有改善,则停止训练。
我们报告了 GAT 随机执行 100 次实验的分类准确率的均值以及标准差,也使用了 GCN 和 Monet 报告的结果。
对基于切比雪夫过滤器的方法,我们提供了
我们进一步评估了 GCN 模型,其隐层为 64 维,同时尝试使用 ReLU 和 ELU 激活函数,并记录执行 100 次后效果最好的那个(实验表明 ReLU 在所有三个数据集上都最佳),记作 GCN-64* 。
结论:GAT 在 Cora 和 Citeseer 上超过 GCN 分别为 1.5%, 1.6% ,这表明为邻域内节点分配不同的权重是有利的。

数据集:protein-protein interaction: PPI 数据集,该数据集包含了人体不同组织的蛋白质的24 个图。其中20 个图为训练集、2 个图为验证集、2 个图为测试集。至关重要的是,这里测试的图在训练期间完全未被观测到。
我们使用 GraphSAGE 提供的预处理数据来构建图,每个图的平均节点数量为 2372 个,每个节点50 维特征,这些特征由 positional gene sets, motif gene sets, immunological signatures 组成。
从 Molecular Signatuers Database 收集到的gene ontology 有 121 种标签,这里每个节点可能同时属于多个标签。

Baseline 模型:我们对比了四个不同版本的监督 GraphSAGE 模型,它们提供了多种方法来聚合采样邻域内的节点特征:
GraphSAGE-GCN:将图卷积方式的操作扩展到归纳式 setting 。
GraphSAGE-mean:取特征向量的逐元素均值来聚合。
GraphSAGE-LSTM:通过将邻域特征馈入 LSTM 来聚合。
GraphSAGE-pool :采用共享非线性多层感知机转换后的特征向量的逐元素最大池化来聚合。
剩下的 transductinve 方法要么完全不适用于inductive 的情形,要么无法应用于在训练期间完全看不到测试图的情形,如 PPI数据集。
我们还提供了每个节点共享 MLP 分类器的性能,该模型完全没有利用图的结构信息。
参数配置:
我们使用一个三层GAT 模型:
第一层包含 attention head,每个 head 得到 1024 个特征。第一层后面接一个exponential linear unit:ELU 非线性激活层。
第二层和第一层配置相同。
第三层为输出层,包含 attention head ,每个 head 得到 121 个特征。
我们对所有 head 取平均,并后接一个 sigmoid 激活函数。
由于该任务的训练集足够大,因此我们无需执行 dropout 。
我们在 attention layer 之间应用 skip connection 。
训练的 batch size = 2 ,即每批2 个 graph 。
为评估 attention 机制的效果,我们提供了一个注意力得分为常数的模型进行对比(
所有模型都采用 Glorot 初始化方式来初始化参数,优化目标为交叉熵,使用 Adam SGD 优化器来优化。初始化学习率为:Pubmed 数据集为 0.01,其它数据集为 0.005 。
我们在所有任务上执行早停策略,在验证集上的交叉熵和micro-F1 如果连续 100 个 epoch 没有改善,则停止训练。
我们报告了模型在测试集(两个从未见过的 Graph )上的 micro-F1 得分。我们随机执行10 轮 “训练--测试”,并报告这十轮的均值。对于其它基准模型,我们使用 GraphSAGE 报告的结果。具体而言,由于我们的 setting 是有监督的,我们将与有监督的 GraphSAGE 方法进行比较。
为了评估聚合整个邻域的好处,我们进一步提供了GraphSAGE 架构的最佳结果,记作 GraphSAGE* 。这是通过一个三层GraphSAGE-LSTM 得到的,三层维度分别为 [512,512,726],最终聚合的特征为 128 维。
最后,我们报告常数的注意力系数为 Const-GAT 的结果。
结论:
GAT 在 PPI 数据集上相对于 GraphSAGE 的最佳效果还要提升 20.5% ,这表明我们的模型在inductive 任务中通过观察整个邻域可以获得更大的预测能力。
相比于 Const-GAT,我们的模型提升了 3.9%,这再次证明了为不同邻居分配不同权重的重要性。

注意:这里作者并未给出超参数研究的实验分析,包括:
GAT层数、multi-head数量、是否使用skip connection等等。
学到的feature representation 也可以进行定性研究。为此,我们采用 t-SNE 对学到的特征进行可视化。我们对 Cora 数据集训练的 GAT 模型的第一层的输出进行可视化,该 representation 在投影到的二维空间中表现出明显的聚类。这些簇对应于数据集的七种类别,从而验证了模型的分类能力。
此外我们还可视化了归一化注意力系数的相对强度(在所有8 个 attention head 上的均值)。如何正确的解读这些系数需要有关该数据集的进一步的领域知识。
下图中:颜色表示节点类别,线条粗细代表归一化的注意力系数均值:
