CodeWalk

图注意力网络(GAT)注意力机制

作者:我还是少年 · 2026-05-30 12:55

解释GAT(Graph Attention Network)如何利用自注意力机制聚合邻居信息,与GCN的关键差异。

回答

我还是少年

GAT (Veličković et al., 2018) 引入注意力机制为不同邻居分配权重。

注意力计算

  1. 对节点对(i, j)计算注意力系数:e_ij = LeakyReLU(a^T·[W·h_i || W·h_j])
  2. Softmax归一化:α_ij = softmax(e_ij) = exp(e_ij) / Σ_{k∈N_i} exp(e_ik)
  3. 加权聚合:h'_i = σ(Σ_{j∈N_i} α_ij·W·h_j)

与GCN的关键差异: | 特性 | GCN | GAT | |------|-----|-----| | 邻居权重 | 基于度的固定归一化 | 可学习的自适应权重 | | 表达力 | 各邻居等权 | 区分重要邻居 | | 归纳能力 | 直推式 | 归纳式(可处理未见图)** | | 计算复杂度 | O(-E-) | O(-E-·d) 稍高(注意力计算) |

多头注意力(Multi-head)

  • GAT使用K个独立注意力头,结果拼接或平均
  • 稳定训练,提升表现力

应用:节点分类、链接预测、图分类。由于可区分邻居重要性,GAT在图结构复杂的任务中通常优于GCN。

PyG实现:GATConv(in_channels, out_channels, heads=8)