图注意力网络(GAT)的消息传递与节点分类过程
题目描述
图注意力网络(Graph Attention Network, GAT)是一种基于注意力机制的图神经网络算法,用于处理图结构数据。与传统的图卷积网络(GCN)不同,GAT通过自适应学习节点间的重要性权重,实现更灵活的消息传递。本题要求详细解释GAT的核心思想、注意力权重的计算步骤以及节点分类的实现过程。
解题过程
1. 图注意力网络的基本思想
- 输入:图结构数据,包括节点特征矩阵 \(H = \{h_1, h_2, ..., h_N\}\)(\(h_i \in \mathbb{R}^F\))和邻接关系(边)。
- 目标:通过多层网络聚合邻居信息,学习每个节点的低维表示 \(z_i\),用于分类等任务。
- 核心创新:摒弃GCN的固定权重(如按度归一化),通过注意力机制为每个邻居节点分配自适应权重。
2. 单头注意力权重的计算
以节点 \(i\) 和其邻居 \(j \in \mathcal{N}(i)\)(包括自身)为例,计算注意力系数的步骤:
- 线性变换:
对节点特征 \(h_i, h_j\) 应用共享权重矩阵 \(W \in \mathbb{R}^{F' \times F}\),得到高阶特征:
\[ \mathbf{h}_i' = W \mathbf{h}_i, \quad \mathbf{h}_j' = W \mathbf{h}_j \]
- 计算注意力分数:
拼接 \(\mathbf{h}_i'\) 和 \(\mathbf{h}_j'\),与可学习向量 \(\mathbf{a} \in \mathbb{R}^{2F'}\) 点积后应用LeakyReLU激活函数:
\[ e_{ij} = \text{LeakyReLU}\left(\mathbf{a}^T [\mathbf{h}_i' \| \mathbf{h}_j']\right) \]
(其中 \(\|\) 表示拼接操作)
3. 归一化注意力权重:
对 \(e_{ij}\) 应用softmax归一化,得到最终权重 \(\alpha_{ij}\):
\[ \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k \in \mathcal{N}(i)} \exp(e_{ik})} \]
3. 消息聚合与输出
- 节点 \(i\) 的更新特征为其所有邻居的加权和:
\[ \mathbf{h}_i^{\text{new}} = \sigma\left(\sum_{j \in \mathcal{N}(i)} \alpha_{ij} \mathbf{h}_j'\right) \]
其中 \(\sigma\) 为非线性激活函数(如ELU)。
- 多头注意力(Multi-head Attention):
为增强稳定性,GAT使用 \(K\) 个独立的注意力头,将结果拼接或求平均:
\[ \mathbf{h}_i^{\text{new}} = \Big\|_{k=1}^K \sigma\left(\sum_{j \in \mathcal{N}(i)} \alpha_{ij}^{(k)} W^{(k)} \mathbf{h}_j\right) \]
(最后一层常用求平均避免特征维度爆炸)。
4. 节点分类的实现过程
- 堆叠GAT层:
通常2-3层GAT层逐步聚合多跳邻居信息。例如:- 第1层:输入维度 \(F \to F'\),输出多头注意力特征。
- 第2层:输入 \(KF' \to C\)(\(C\)为类别数),输出分类logits。
- Softmax分类:
对末层输出应用softmax得到类别概率:
\[ \hat{y}_i = \text{softmax}(\mathbf{z}_i), \quad \mathbf{z}_i \in \mathbb{R}^C \]
- 损失函数:
使用交叉熵损失监督训练:
\[ \mathcal{L} = -\sum_{i \in \mathcal{Y}_L} \sum_{c=1}^C y_{ic} \log(\hat{y}_{ic}) \]
其中 \(\mathcal{Y}_L\) 为带标签的节点集合。
5. 关键特性与优势
- 隐式指定权重:不依赖图结构先验,自适应学习边的重要性。
- 计算高效:注意力系数仅对邻居节点计算,无需全局图信息。
- 归纳学习:可直接泛化到未知图结构(适用于动态图)。
通过以上步骤,GAT实现了对图数据中节点关系的动态建模,尤其在节点分类任务中表现出色。