1. 背景:GAT 的问题
GAT(Velickovic et al., ICLR 2018)通过 自注意力机制 在图结构上聚合邻居节点信息,每条边的权重由注意力函数计算:
\alpha_{ij} = \text{softmax}_j \left( \text{LeakyReLU}(a^T [W h_i \, || \, W h_j]) \right)
其中 h_i 是节点特征,W 是线性变换,a 是可学习参数。 但 GAT 有一个限制:注意力权重的计算公式在 输入的线性变换 之后才进入非线性函数,因此注意力分布空间受到限制,不能区分一些对称情况。例如:
a^T (W h_i \, || \, W h_j) = a^T (W h_j \, || \, W h_i)
→ 可能导致表达能力不足。
2. GATv2 的改进
GATv2(Brody et al., ICLR 2021)在注意力机制上进行了关键修改: 把 非线性函数移到线性变换之前,得到更强的表达能力。
注意力计算公式:
\alpha_{ij} = \text{softmax}_j \left( a^T \, \text{LeakyReLU}( W [h_i \, || \, h_j] ) \right)
区别:
- GAT:先对每个节点分别线性变换,再拼接,再做非线性。
- GATv2:直接拼接原始特征,再做线性变换 + 非线性 → 更灵活。
==这使得 GATv2 可以学习到 非对称的注意力模式,从而提升了表达能力。==
3. 特点总结
- 更强表达能力:能捕捉 GAT 无法区分的模式。
- 兼容 GAT:如果权重矩阵退化,GATv2 可退化为 GAT。
- 性能提升:在多个数据集上比 GAT 表现更好,尤其在异质关系或需要方向性建模的任务上。
- 简单易用:代码和参数量与 GAT 几乎相同。
4. 公式回顾
节点更新公式:
h_i' = \sigma \left( \sum_{j \in \mathcal{N}(i)} \alpha_{ij} W h_j \right)
其中注意力:
\alpha_{ij} = \frac{\exp\left( \text{LeakyReLU}(a^T W [h_i \, || \, h_j]) \right)}{\sum_{k \in \mathcal{N}(i)} \exp\left( \text{LeakyReLU}(a^T W [h_i \, || \, h_k]) \right)}
和 GAT 的区别就在于 LeakyReLU 放在更前的位置。
5. 应用场景
- 知识图谱问答(KGQA):处理图谱中的实体关系,建模方向性边。
- 图分类 / 节点分类:尤其是图结构复杂、关系非对称的任务。
- 图生成 / 图谱结构学习:对边关系敏感时,GATv2 的非对称注意力很有优势。

![[算法]GATv2图注意力网络](/images/banner7.webp)

说些什么吧!