图注意力网络(GAT)是一种图神经网络(GNN),它在消息传递过程中融入了注意力机制。在标准GNN中,每个节点通过聚合其邻居的信息来更新自身的表示,通常使用相等或预定义的权重。而GAT则计算注意力系数,为每个邻居分配不同的重要性,使模型能够针对特定任务聚焦于图中最相关的部分。这一方法由Petar Veličković及其同事于2018年提出,已成为几何深度学习中的基础架构,广泛应用于从社交网络分析到分子性质预测等多个领域。
GAT的核心思想是将最初在Transformer (architecture)模型中用于自然语言处理的注意力机制应用于图结构数据。在Transformer中,注意力权重是在序列中所有标记对之间计算的。而在GAT中,注意力仅在节点与其直接邻居之间计算,使其成为一种局部且置换等变的操作。这种设计保留了GNN的关键特性:输出对节点顺序不变,这对于图没有规范节点顺序的事实至关重要。
背景:图神经网络
图神经网络是一类人工神经网络,专为输入为图的任务设计,例如分子、社交网络或引文网络。与图像或文本不同,图缺乏固定的网格或序列结构,节点可以具有不同数量的连接。GNN通过使用置换等变层来解决这一问题,这些层通过成对消息传递更新节点表示。每个节点聚合来自其邻居的消息,经过多层后,感受野扩展到更远的节点。
早期GNN架构(如图卷积网络(GCN))的一个关键限制是,它们在聚合信息时对所有邻居一视同仁。例如,在分子图中,碳原子可能同时连接氢原子和氧原子,但氧原子在预测毒性方面可能更具化学重要性。GCN会对两个邻居分配相同权重,而GAT可以学习为氧原子分配更高的注意力。
GAT中的注意力机制
GAT中的注意力机制运作如下。对于具有特征向量\(\mathbf{x}_u\)的节点\(u\)及其邻居\(v\),模型使用共享线性变换和可学习权重向量计算注意力系数\(e_{uv}\)。该系数通常通过softmax函数在所有邻居中进行归一化,确保注意力权重之和为1。归一化系数随后用于计算邻居变换特征的加权和,这成为节点\(u\)的更新表示。
形式上,注意力系数计算如下:
\[ e_{uv} = \text{LeakyReLU}(\mathbf{a}^T [\mathbf{W}\mathbf{x}_u \| \mathbf{W}\mathbf{x}_v]) \]
其中\(\mathbf{W}\)是共享权重矩阵,\(\mathbf{a}\)是可学习向量,\(\|\\)表示拼接。系数通过softmax在所有邻居\(v \in N_u\)上归一化。更新后的节点表示为:
\[ \mathbf{h}_u = \sigma\left(\sum_{v \in N_u} \alpha_{uv} \mathbf{W}\mathbf{x}_v\right) \]
其中\(\alpha_{uv}\)是归一化注意力系数,\(\sigma\)是非线性函数。
该机制类似于Transformer中的多头注意力,其中使用多个独立注意力头来捕获不同类型的关系。在GAT中,可以通过并行计算多个注意力加权聚合并拼接或平均其输出来应用多头注意力。这增加了模型的表达能力并稳定了训练。
架构变体
自2018年原始论文以来,已提出了多种GAT变体。一个显著变体是GATv2,于2021年引入,它解决了原始GAT中注意力系数在拼接后使用线性操作计算的限制。GATv2使用更具表达力的注意力机制,使模型能够计算对输入特征更敏感的注意力分数,从而在需要细粒度区分的任务上提高性能。
另一个变体是带边特征的图注意力网络,它将边特征纳入注意力计算。在分子图中,边特征可能表示键类型(单键、双键、芳香键),纳入这些特征使模型能够根据连接性质对邻居进行不同加权。这在化学和生物学应用中特别有用。
此外,GAT可以与残差连接和层归一化等其他GNN组件结合,以提高训练稳定性和性能。这些增强在现代GNN架构中很常见。
应用
GAT已应用于广泛领域。在分子生物学和药物发现中,GAT用于预测分子性质,如溶解度、毒性或对特定细菌(如大肠杆菌)的功效。分子表示为以原子为节点、键为边的图,GAT可以学习关注对生物活性至关重要的官能团。
在社交网络分析中,GAT用于节点分类和链接预测。例如,在引文网络中,GAT可以通过关注最具影响力的引用论文来对论文进行分类。在推荐系统中,GAT可以将用户-物品交互建模为二分图,其中注意力有助于识别对用户最相关的物品。
GAT还用于计算机视觉中的目标检测和场景图生成等任务,其中图像表示为对象及其关系的图。在物理学中,GAT已应用于粒子轨迹重建和动态系统建模。
与Transformer的关系
GAT与Transformer (architecture)模型之间存在密切关系。正如2022年一篇关于几何深度学习的立场论文所指出的,Transformer层可以解释为应用于完全图的GNN,其中每个标记都与其他每个标记相连。在这种观点下,Transformer中的自注意力机制是一种带注意力权重的消息传递形式。相反,GAT可以视为适应任意图结构的Transformer,其中注意力仅限于现有边而非所有对。
这种联系促进了两领域之间的交叉融合。为Transformer开发的技术,如位置编码和交叉注意力,已被改编用于GNN。例如,基于图拉普拉斯特征向量的位置编码可以提供补充基于注意力的消息传递的结构信息。
实现与库
多个开源库实现了GAT和其他GNN架构。PyTorch Geometric(PyG)是一个基于PyTorch的流行库,提供高效的GAT层实现以及处理图数据的工具。TensorFlow GNN为TensorFlow生态系统提供类似功能。Deep Graph Library(DGL)是一个框架无关的库,支持PyTorch和TensorFlow后端。对于JAX用户,jraph库提供GNN实现,对于Julia用户,GraphNeuralNetworks.jl和GeometricFlux.jl可用。
这些库通常包含预构建的GAT层,可轻松集成到自定义模型中。它们还提供用于评估GNN的数据集和基准,如引文网络(Cora、CiteSeer)和分子性质预测数据集。
局限性与扩展
与所有消息传递GNN一样,GAT受Weisfeiler-Lehman图同构测试的表达能力限制。这意味着存在GAT无法区分的非同构图对,这对于需要细粒度结构区分的任务可能是一个限制。为克服这一问题,研究人员提出了高阶GNN,这些GNN在单纯复形上操作或使用具有全局注意力的图Transformer,尽管这些通常伴随更高的计算成本。
另一个限制是可扩展性。对于高度节点,计算所有邻居的注意力可能代价高昂,尽管这通常比完整Transformer的二次成本轻。采样邻居或使用稀疏注意力等技术可以缓解这一问题。
截至2024年,GAT仍然是广泛使用且积极研究的架构。它们自适应加权邻居重要性的能力使其成为GNN工具箱中的标准工具,并继续激发机器学习和人工智能领域的新变体和应用。