图神经网络(GNN)中的图注意力网络(GAT)原理详解
字数 2654 2025-11-07 12:34:03

图神经网络(GNN)中的图注意力网络(GAT)原理详解

题目/知识点描述
图注意力网络(Graph Attention Network, GAT)是一种基于注意力机制的图神经网络模型。它通过自注意力机制,让图中的每个节点能够自适应地、差异化地聚合其邻居节点的信息,而不依赖于预先定义的图结构(如图的度)。GAT的核心思想是为每个邻居节点分配一个可学习的注意力权重,从而更有效地捕捉节点间的重要关系。

解题过程/原理讲解

1. 图神经网络的基本问题
在传统的图卷积网络(GCN)中,节点特征的聚合方式通常是均质的。例如,对于一个中心节点,其邻居节点在信息聚合时的重要性是相等的(或者仅由节点的度决定)。然而,在实际的图结构中,不同的邻居节点对中心节点的重要性往往是不同的。GAT的目标就是解决这种差异性,实现更精细化的信息聚合。

2. 注意力系数的计算
GAT的第一步是为每一对相邻的节点计算一个注意力系数(Attention Coefficient),这个系数表示邻居节点 j 对中心节点 i 的重要性。

  • 输入:首先,每个节点 i 都有一个初始的特征向量,记为 \(\mathbf{h}_i\)

  • 线性变换:为了增加模型的表达能力,我们首先用一个共享的权重矩阵 \(\mathbf{W}\) 对所有节点的特征进行线性变换:
    \(\mathbf{z}_i = \mathbf{W} \mathbf{h}_i\)
    这相当于将节点特征映射到一个新的、可能更高维的特征空间。

  • 注意力机制:然后,我们计算节点 i 和它的每一个邻居节点 j (包括节点 i 自身)之间的注意力分数 \(e_{ij}\) 。GAT采用一个单层的前馈神经网络 a 来计算这个分数,该神经网络的权重是一个向量 \(\overrightarrow{\mathbf{a}}\)
    \(e_{ij} = \text{LeakyReLU}\left( \overrightarrow{\mathbf{a}}^T [\mathbf{z}_i \, \Vert \, \mathbf{z}_j] \right)\)
    这里的 \(\Vert\) 表示向量拼接(Concatenation)操作。LeakyReLU 是一个非线性激活函数,确保分数可以是一个非零的实数。这个分数 \(e_{ij}\) 是未归一化的,它直接反映了节点 j 对于节点 i 的“原始”重要性。

3. 注意力权重的归一化
计算出的原始注意力分数 \(e_{ij}\) 通常在数值上差异很大且尺度不一。为了便于比较和模型稳定,我们需要对其进行归一化,使得所有对节点 i 有影响的邻居节点(包括 i 自己)的注意力权重之和为 1。GAT 采用 softmax 函数进行归一化。

  • Softmax归一化:节点 j 对于节点 i 的最终注意力权重 \(\alpha_{ij}\) 通过 softmax 计算得到:
    \(\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k \in \mathcal{N}(i)} \exp(e_{ik})}\)
    其中,\(\mathcal{N}(i)\) 表示节点 i 的邻居节点集合,通常包括节点 i 自身(这确保了模型在聚合信息时会考虑自身特征)。这个公式使得 \(\sum_{j \in \mathcal{N}(i)} \alpha_{ij} = 1\),且 \(0 \le \alpha_{ij} \le 1\)

4. 信息聚合与输出
得到归一化的注意力权重后,我们就可以对邻居节点的变换后特征进行加权求和,从而得到节点 i 的新特征表示。

  • 加权求和:节点 i 的新特征 \(\mathbf{h}_i'\) 是其所有邻居节点(包括自身)变换后特征 \(\mathbf{z}_j\) 的加权和,权重就是计算出的 \(\alpha_{ij}\)
    \(\mathbf{h}_i' = \sigma\left( \sum_{j \in \mathcal{N}(i)} \alpha_{ij} \mathbf{z}_j \right)\)
    这里的 \(\sigma\) 是一个非线性激活函数,如 ELU 或 ReLU。

5. 多头注意力(Multi-head Attention)
为了稳定注意力机制的学习过程并增强模型的表达能力(类似于 Transformer 模型),GAT 通常采用多头注意力。

  • 原理:我们独立地执行 K 次上述的注意力计算(即 K 个头)。每次计算都会得到一组不同的注意力权重和一个新的节点特征表示。
  • 聚合方式:对于最终输出的节点特征,有两种常见的聚合方式:
    1. 拼接(Concatenation)(常用于中间层):将 K 个头计算出的 K 个特征向量拼接起来。
      \(\mathbf{h}_i' = \Vert_{k=1}^{K} \sigma\left( \sum_{j \in \mathcal{N}(i)} \alpha_{ij}^k \mathbf{W}^k \mathbf{h}_j \right)\)
    2. 平均(Averaging)(常用于输出层):将 K 个头计算出的 K 个特征向量取平均。
      \(\mathbf{h}_i' = \sigma\left( \frac{1}{K} \sum_{k=1}^{K} \sum_{j \in \mathcal{N}(i)} \alpha_{ij}^k \mathbf{W}^k \mathbf{h}_j \right)\)
      多头注意力使得模型能够从不同的表示子空间中共同关注信息,从而捕获更丰富的关系。

总结
图注意力网络(GAT)通过引入自注意力机制,实现了对图中邻居节点的差异化信息聚合。其核心步骤包括:1) 通过线性变换提升特征表达能力;2) 使用一个简单神经网络计算节点间的原始注意力分数;3) 用 softmax 对分数进行归一化得到注意力权重;4) 根据权重对邻居特征进行加权求和以更新节点表示;5) (可选)使用多头注意力来增强模型鲁棒性和表现力。GAT 不依赖于完整的图结构,适用于归纳学习任务,并且能够隐式地为不同邻居分配不同重要性,是图神经网络领域的一个重要进展。

图神经网络(GNN)中的图注意力网络(GAT)原理详解 题目/知识点描述 图注意力网络(Graph Attention Network, GAT)是一种基于注意力机制的图神经网络模型。它通过自注意力机制,让图中的每个节点能够自适应地、差异化地聚合其邻居节点的信息,而不依赖于预先定义的图结构(如图的度)。GAT的核心思想是为每个邻居节点分配一个可学习的注意力权重,从而更有效地捕捉节点间的重要关系。 解题过程/原理讲解 1. 图神经网络的基本问题 在传统的图卷积网络(GCN)中,节点特征的聚合方式通常是均质的。例如,对于一个中心节点,其邻居节点在信息聚合时的重要性是相等的(或者仅由节点的度决定)。然而,在实际的图结构中,不同的邻居节点对中心节点的重要性往往是不同的。GAT的目标就是解决这种差异性,实现更精细化的信息聚合。 2. 注意力系数的计算 GAT的第一步是为每一对相邻的节点计算一个注意力系数(Attention Coefficient),这个系数表示邻居节点 j 对中心节点 i 的重要性。 输入 :首先,每个节点 i 都有一个初始的特征向量,记为 \( \mathbf{h}_ i \)。 线性变换 :为了增加模型的表达能力,我们首先用一个共享的权重矩阵 \( \mathbf{W} \) 对所有节点的特征进行线性变换: \( \mathbf{z}_ i = \mathbf{W} \mathbf{h}_ i \) 这相当于将节点特征映射到一个新的、可能更高维的特征空间。 注意力机制 :然后,我们计算节点 i 和它的每一个邻居节点 j (包括节点 i 自身)之间的注意力分数 \( e_ {ij} \) 。GAT采用一个单层的前馈神经网络 a 来计算这个分数,该神经网络的权重是一个向量 \( \overrightarrow{\mathbf{a}} \)。 \( e_ {ij} = \text{LeakyReLU}\left( \overrightarrow{\mathbf{a}}^T [ \mathbf{z}_ i \, \Vert \, \mathbf{z} j ] \right) \) 这里的 \( \Vert \) 表示向量拼接(Concatenation)操作。 LeakyReLU 是一个非线性激活函数,确保分数可以是一个非零的实数。这个分数 \( e {ij} \) 是未归一化的,它直接反映了节点 j 对于节点 i 的“原始”重要性。 3. 注意力权重的归一化 计算出的原始注意力分数 \( e_ {ij} \) 通常在数值上差异很大且尺度不一。为了便于比较和模型稳定,我们需要对其进行归一化,使得所有对节点 i 有影响的邻居节点(包括 i 自己)的注意力权重之和为 1。GAT 采用 softmax 函数进行归一化。 Softmax归一化 :节点 j 对于节点 i 的最终注意力权重 \( \alpha_ {ij} \) 通过 softmax 计算得到: \( \alpha_ {ij} = \frac{\exp(e_ {ij})}{\sum_ {k \in \mathcal{N}(i)} \exp(e_ {ik})} \) 其中,\( \mathcal{N}(i) \) 表示节点 i 的邻居节点集合,通常包括节点 i 自身(这确保了模型在聚合信息时会考虑自身特征)。这个公式使得 \( \sum_ {j \in \mathcal{N}(i)} \alpha_ {ij} = 1 \),且 \( 0 \le \alpha_ {ij} \le 1 \)。 4. 信息聚合与输出 得到归一化的注意力权重后,我们就可以对邻居节点的变换后特征进行加权求和,从而得到节点 i 的新特征表示。 加权求和 :节点 i 的新特征 \( \mathbf{h} i' \) 是其所有邻居节点(包括自身)变换后特征 \( \mathbf{z} j \) 的加权和,权重就是计算出的 \( \alpha {ij} \): \( \mathbf{h} i' = \sigma\left( \sum {j \in \mathcal{N}(i)} \alpha {ij} \mathbf{z}_ j \right) \) 这里的 \( \sigma \) 是一个非线性激活函数,如 ELU 或 ReLU。 5. 多头注意力(Multi-head Attention) 为了稳定注意力机制的学习过程并增强模型的表达能力(类似于 Transformer 模型),GAT 通常采用多头注意力。 原理 :我们独立地执行 K 次上述的注意力计算(即 K 个头)。每次计算都会得到一组不同的注意力权重和一个新的节点特征表示。 聚合方式 :对于最终输出的节点特征,有两种常见的聚合方式: 拼接(Concatenation) (常用于中间层):将 K 个头计算出的 K 个特征向量拼接起来。 \( \mathbf{h} i' = \Vert {k=1}^{K} \sigma\left( \sum_ {j \in \mathcal{N}(i)} \alpha_ {ij}^k \mathbf{W}^k \mathbf{h}_ j \right) \) 平均(Averaging) (常用于输出层):将 K 个头计算出的 K 个特征向量取平均。 \( \mathbf{h} i' = \sigma\left( \frac{1}{K} \sum {k=1}^{K} \sum_ {j \in \mathcal{N}(i)} \alpha_ {ij}^k \mathbf{W}^k \mathbf{h}_ j \right) \) 多头注意力使得模型能够从不同的表示子空间中共同关注信息,从而捕获更丰富的关系。 总结 图注意力网络(GAT)通过引入自注意力机制,实现了对图中邻居节点的差异化信息聚合。其核心步骤包括:1) 通过线性变换提升特征表达能力;2) 使用一个简单神经网络计算节点间的原始注意力分数;3) 用 softmax 对分数进行归一化得到注意力权重;4) 根据权重对邻居特征进行加权求和以更新节点表示;5) (可选)使用多头注意力来增强模型鲁棒性和表现力。GAT 不依赖于完整的图结构,适用于归纳学习任务,并且能够隐式地为不同邻居分配不同重要性,是图神经网络领域的一个重要进展。