(论文速读)GATv2:你的图注意力网络其实并不“注意”

📅 发布时间:2026/7/12 19:13:55
(论文速读)GATv2:你的图注意力网络其实并不“注意” 论文题目HOW ATTENTIVE ARE GRAPH ATTENTION NETWORKS?图形注意力网络的注意力有多集中会议ICLR 2022摘要图注意网络(GATS)是最流行的GNN体系结构之一被认为是利用图进行表征学习的最先进的体系结构。在GAT中每个节点关注其邻居给出它自己的表示作为查询。然而在本文中我们证明了GAT计算的关注度非常有限关注度分数的排名是无条件的取决于查询节点。我们正式将这种受限的注意定义为静态注意并将其与严格意义上更具表现力的动态注意区分开来。由于GAT使用静态注意机制因此存在GAT无法表达的简单图形问题在受控问题中我们证明静态注意阻碍GAT甚至无法匹配训练数据。为了消除这一限制我们通过修改操作顺序引入了一个简单的修复方法并提出了GATv2一种严格比GAT更具表现力的动态图注意变量。我们进行了广泛的评估表明GATv2在12个OGB和其他基准测试中的性能优于GAT而我们的参数成本与其相当。我们的代码可在https://github.com/tech-srl/how_attentive_are_Gats.GATv2作为PyTorch几何库、深度图形库和TensorFlow GNN库的一部分提供。你的图注意力网络其实并不注意——GATv2论文详解一、引言一个让人意外的发现图注意力网络Graph Attention NetworkGAT自2018年由Veličković等人提出以来迅速成为图神经网络GNN领域最流行的架构之一被认为是图表示学习的最优架构并被PyTorch Geometric、DGL、TensorFlow GNN等主流库作为默认实现。GAT的核心思想很直观每个节点在聚合邻居信息时根据自身表示作为查询query对不同邻居赋予不同的注意力权重从而自适应地选择最相关的邻居。这听起来和Transformer、Bahdanau注意力机制一脉相承。然而这篇论文提出了一个令人震惊的问题GAT真的在做注意力吗答案是并没有。至少不是我们以为的那种注意力。二、核心问题GAT只能计算静态注意力2.1 什么是动态注意力 vs 静态注意力论文给出了严格的形式化定义静态注意力Static Attention对于给定的键向量集合存在一个得分最高的键无论查询是什么这个键的得分永远最高。也就是说注意力的排名与查询无关。动态注意力Dynamic Attention对于任意一种查询→键的映射关系都存在参数使得每个查询能选出自己对应的键。也就是说不同的查询可以关注不同的键。直观地理解静态注意力是全图有一个公认的最重要节点动态注意力是每个节点根据自身情况选择最相关的邻居。【配图论文 Figure 1——左图GAT的静态注意力热力图和右图GATv2的动态注意力热力图对比。左图中所有查询节点q0~q9的注意力几乎都集中在k8上曲线几乎重叠右图中每个查询节点各自关注不同的键热力图呈近似单位矩阵形状。】2.2 GAT为什么只能计算静态注意力定理1回顾GAT的注意力评分函数Equation 2论文证明定理1将a拆分为[a1 ‖ a2]则e(hi, hj) LeakyReLU( a1^T·W·hi a2^T·W·hj )关键在于a2^T·W·hj这一项完全不依赖查询节点 hi。因此存在一个节点j_max使得a2^T·W·hj对所有 j 中取到最大值由于 LeakyReLU 和 softmax 都是单调函数j_max对所有查询节点的注意力得分也都是最高的。换句话说GAT中hi 只影响注意力分布的锐利程度sharpness而不影响注意力的排名ranking。全图只有一个全局排名与查询无关——这正是静态注意力的定义。多头注意力也不能改变这一本质每个头各自有一个固定排名不同头的排名可能不同但每个头内部仍然是静态的。三、解决方案GATv2——仅改变操作顺序3.1 一个极简的修复GAT问题的根源在于线性变换W和向量a被连续应用两者可以合并为一个线性层导致 hi 和 hj 的贡献在非线性激活之前就已经解耦。修复方法极其简单——调换非线性激活的位置模型评分函数GATVeličković et al., 2018e(hi, hj) LeakyReLU( a^T · [W·hi ‖ W·hj] )GATv2本文提出e(hi, hj) a^T · LeakyReLU( W · [hi ‖ hj] )GATv2将非线性激活 LeakyReLU 移到了a^T之前、拼接[hi ‖ hj]之后。这使得 W 先作用于拼接向量LeakyReLU 在 hi 和 hj 的混合结果上引入非线性之后再由a^T计算标量得分。这样评分函数本质上变成了一个对(hi, hj)联合输入的 MLP可以近似任意连续函数万能近似定理从而实现真正的动态注意力。3.2 GATv2计算动态注意力定理2论文证明定理2GATv2对任意节点表示集合都能计算动态注意力。证明思路是对任意目标映射φ: [n]→[n]构造一个目标函数 g选中的 (i, φ(i)) 对得分为1其余为0由于 GATv2 的评分函数本质上是一个作用于[hi ‖ hj]的 MLP由万能近似定理可以以任意精度近似 g因此存在参数使得e(hi, hφ(i)) e(hi, hj)对所有j ≠ φ(i)成立即实现了动态注意力。3.3 复杂度分析几乎没有额外代价GATv2与GAT的时间复杂度完全相同均为 O(|V|dd |E|d)。参数量上GATv2的 W 矩阵作用于拼接向量官方参数量略多d 2dd但论文在所有实验中通过约束W [W ‖ W]将参数量控制为与GAT相当d dd以排除参数量差异对实验结果的影响。四、实验结果4.1 合成基准DictionaryLookup——GAT的阿喀琉斯之踵论文设计了一个专门测试动态注意力能力的合成任务DictionaryLookup。任务设置一个完全二部图底层为 k 个键节点每个有字母属性A/B/C...和数值1/2/3...顶层为 k 个查询节点只有字母属性。目标是让每个查询节点根据属性匹配并预测对应键节点的数值。每张图的属性→数值映射不同因此模型必须根据查询动态选择正确的键。【配图论文 Figure 2——DictionaryLookup问题示意图展示k4时的二部图结构。】实验结果【配图论文 Figure 3——不同k值下各模型的训练/测试准确率曲线。】GAT单头GAT₁ₕ对任意 k 值无论训练多少轮、尝试何种训练方法均无法拟合训练集准确率始终在低水平徘徊。GAT8头GAT₈ₕ能拟合训练集但严重过拟合测试准确率差。GATv2单头对所有 k 值包括k100均轻松达到100%训练准确率和100%测试准确率。附录D.1还显示GIN被认为比GAT更具表达力的模型在 k≥20 时同样无法完美拟合训练集而GATv2依然轻松应对。【配图论文 Figure 6附录——GATv2 vs GIN在DictionaryLookup上的对比GATv2在k100仍达100%精度GIN从k20起开始失败。】这一结果清晰揭示了GAT静态注意力的根本局限它根本无法表达需要动态选择邻居的问题。4.2 鲁棒性实验动态注意力更能抵抗噪声论文测试了模型对结构噪声的鲁棒性在原始图 G(V,E) 中随机加入比例为 p 的噪声边观察测试准确率随噪声比例 p 增大的变化。【配图论文 Figure 4正文或 Figure 9附录含p值——ogbn-arxiv 和 ogbn-mag 上GATv2 vs GAT随噪声比例变化的准确率曲线以及各点的统计显著性p值。】在 ogbn-arxiv 和 ogbn-mag 两个数据集上随着噪声比例 p 从0增大到0.5两个模型准确率均下降但 GATv2 的下降幅度明显更小所有差异均具有统计显著性p值均 0.001。论文假设GAT由于静态注意力无法区分真实边和噪声边因为它对源节点和目标节点分别打分而非联合打分而GATv2的动态注意力能够联合评估节点对从而更好地抑制噪声边的影响。4.3 程序理解任务VarMisuseVarMisuse是一个对程序中变量误用进行归因的归纳式节点预测任务涉及11种句法和语义交互类型具有复杂的节点间关系。论文直接使用了Brockschmidt (2020)对GAT进行30组超参数搜索后得到的最优超参数无需为GATv2另行调参公平性有保证。【配表论文 Table 5Figure 5或 Table 10附录——VarMisuse上各模型在SeenProj和UnseenProj测试集上的准确率均值±标准差5次运行。】GATv2在SeenProj测试集上准确率为88.0±1.1UnseenProj测试集上为82.8±1.7均优于所有对比模型GCN、GIN、GAT、DPGAT在泛化性更强的UnseenProj集上GATv2相比GAT提升了1.6%p值0.049显示出GATv2在应对未见过的程序项目时的强泛化能力。4.4 节点预测OGB基准在OGB的四个节点预测数据集ogbn-arxiv、ogbn-products、ogbn-mag、ogbn-proteins上对比了GATv2、GAT、GCN、GraphSAGE。【配表论文 Table 1——四个OGB节点预测数据集上各模型的准确率和ROC-AUC10次运行±标准差。】核心结论所有数据集、所有设置下GATv2均优于GAT在ogbn-arxiv、ogbn-products、ogbn-mag上单头GATv2甚至超过了8头GAT在ogbn-proteins上增加注意力头数对GAT带来显著提升从70.77到78.63而GATv2单头即可获得接近最优的效果77.23展示了单头动态注意力的效率优势。【配表论文 Table 15附录统计显著性——30次运行下GATv2 vs GAT的差异p值ogbn-arxiv: p0.0022ogbn-products: p0.0001ogbn-mag: p0.0018ogbn-proteins: p0.0349均显著。】4.5 图预测QM9量子化学数据集QM9数据集包含约13万个分子图目标是回归预测13个量子化学属性。论文同样沿用Brockschmidt (2020)500组超参数搜索后的GAT最优配置直接用于GATv2。【配表论文 Table 2——QM9数据集上13个属性的平均误差率5次运行越低越好以及相对GAT的综合误差变化。】GATv28头在13个预测目标上综合平均误差比GAT8头降低了11.5%GAT8头在属性6上误差高达52.39方差极大±42.58说明其训练不稳定而GATv28头在该属性上误差仅为16.37±0.97大幅改善部分属性上GCN或GIN表现更好作者认为这些属性可能不需要注意力机制。【配表论文 Table 17附录——20次运行下GATv2 vs GAT在QM9各属性上的统计显著性p值大多数属性 p0.05。】4.6 链路预测在OGB的两个链路预测数据集ogbl-collab、ogbl-citation2上同样进行了对比。【配表论文 Table 3——Hits50和MRR指标10次运行±标准差。】GATv2在两个数据集上均优于GAT但非注意力模型GraphSAGE在ogbl-collab上表现最好作者推测这些数据集中节点平均度数较低ogbl-collab仅8.2ogbl-citation2仅20.7注意力机制的优势在邻居较少时不明显作者假设动态注意力在高度数多邻居场景下优势最为突出如ogbn-products平均度50.5和ogbn-proteins平均度597。4.7 与Transformer风格注意力DPGAT的对比论文还与点积注意力DPGAT即e(hi, hj) (hi^T Q)(hj^T K)^T / √dk进行了对比并从理论上证明当节点表示线性无关时DPGAT可以计算动态注意力定理3但当节点表示线性相关时DPGAT存在某些键永远无法被选中的情况因此严格弱于GATv2GATv2对任意节点表示集合都能计算动态注意力无此限制。实验结果Table 10, 11, 12也印证了这一点GATv2在VarMisuse的UnseenProj集上82.8明显优于DPGAT81.5在ogbn-products上80.63 vs 76.49差距更为显著。五、讨论什么时候该用GATv2论文给出了实用性建议理论上更强不代表实践中总是更好对于过于简单的任务更强的模型可能反而过拟合判断依据如果问题中节点存在全局统一的重要性排名即所有查询都应关注同一类邻居GAT足够如果不同节点需要关注不同邻居则应选用GATv2实际建议节点间交互越复杂、图的节点度数越高GATv2的优势越明显。GAT的原作者Veličković也在Twitter上确认GAT最初是针对Cora、Citeseer、PubMed等易过拟合的小型数据集设计的这些数据集可能本身存在静态的全局节点重要性排名。新的、更具挑战性的基准测试需要更强的注意力机制。六、总结维度GATGATv2注意力类型静态排名与查询无关动态每个查询独立排名核心公式差异先线性后非线性先非线性后线性时间复杂度O(|V|dd |E|d)O(|V|dd |E|d)相同参数量2d ddd dd实验中约束是否万能近似否是DictionaryLookup单头完全失败单头100%准确12项基准测试基准线全面超越GAT这篇论文用一个极简的操作顺序调整揭示并修复了过去4年间被广泛使用的GAT的根本性缺陷。其贡献不仅在于提出了GATv2更在于提供了分析图注意力机制表达力的形式化框架静态/动态注意力的定义以及一个可复用的合成测试基准DictionaryLookup。如果你的项目正在使用GAT可以直接替换为GATv2——PyTorch Geometric、DGL、TensorFlow GNN均已支持# PyTorch Geometric from torch_geometric.nn.conv.gatv2_conv import GATv2Conv # DGL from dgl.nn.pytorch import GATv2Conv # TensorFlow GNN from tensorflow_gnn.graph.keras.layers.gat_v2 import GATv2Convolution相同的参数量、相同的时间复杂度、更强的表达力——没有理由不升级。