基于图卷积网络的半监督节点分类算法
题目描述
在图上进行半监督学习是图学习中的一个核心任务。给定一个图 \(G=(V, E, X)\),其中 \(V\) 是节点集合,\(E\) 是边集合,\(X\) 是节点的特征矩阵(第 \(i\) 行是节点 \(i\) 的特征向量)。假设只有一小部分节点有标签 \(Y_L\),大部分节点无标签。我们的目标是利用图的结构(边)和所有节点的特征,为无标签节点预测标签。图卷积网络(Graph Convolutional Network, GCN)是解决此类问题的一种代表性方法。本题要求你理解并阐述GCN在半监督节点分类任务中的原理、模型结构、前向传播公式以及训练过程。
解题过程
1. 问题形式化与核心思想
- 输入:
- 图表示为邻接矩阵 \(A \in \mathbb{R}^{n \times n}\)(\(n\) 为节点数),通常加入自环,即 \(A_{ii} = 1\)。
- 节点特征矩阵 \(X \in \mathbb{R}^{n \times d}\),\(d\) 是特征维度。
- 部分节点的标签(假设是 \(C\) 个类别)。
- 输出:所有节点的类别预测概率 \(Z \in \mathbb{R}^{n \times C}\)。
- 核心思想:GCN的核心是图上的局部谱滤波。它将传统卷积操作推广到图数据上,其每一层通过聚合节点自身及其一阶邻居的特征来生成节点的新表示。这种聚合操作可以同时利用节点的特征(\(X\))和图的结构(\(A\))来学习强大的节点嵌入,最终用于分类。
2. 图卷积层的数学定义
GCN的一层传播公式如下:
\[H^{(l+1)} = \sigma\left( \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)} \right) \]
我们来逐步拆解这个公式:
-
符号说明:
- \(\tilde{A} = A + I_n\) 是加入自环的邻接矩阵,\(I_n\) 是单位矩阵。自环的作用是确保聚合邻居信息时保留节点自身的特征。
- \(\tilde{D}\) 是 \(\tilde{A}\) 的度矩阵,是一个对角矩阵,其中 \(\tilde{D}_{ii} = \sum_j \tilde{A}_{ij}\)。
- \(H^{(l)}\) 是第 \(l\) 层的节点特征表示(激活值),\(H^{(0)} = X\)。
- \(W^{(l)}\) 是第 \(l\) 层的可训练权重矩阵。
- \(\sigma(\cdot)\) 是非线性激活函数,如ReLU。
-
操作分解:
- 特征变换:\(H^{(l)} W^{(l)}\) 对当前层的节点特征进行线性变换(类似全连接层)。
- 邻居特征聚合:\(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} (H^{(l)} W^{(l)})\) 这一步是核心。
- \(\tilde{A} (H^{(l)} W^{(l)})\) 实现了邻居特征的聚合求和。节点 \(i\) 的新特征是其自身和所有邻居 \(j \in \mathcal{N}(i) \cup \{i\}\) 的加权和。
- 用 \(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}\) 对 \(\tilde{A}\) 进行对称归一化。这等价于计算 \(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} = \left( \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} \right)\)。归一化的目的是防止度大的节点在特征聚合中占据过大的权重,使得训练更稳定。
具体到节点 \(i\) 和 \(j\),聚合时的系数为 \(\frac{1}{\sqrt{\tilde{D}_{ii} \tilde{D}_{jj}}}\)。这可以看作是一种“平均”,但考虑了节点的度。
3. 用于半监督分类的两层GCN模型
经典论文中,一个用于节点分类的两层GCN模型定义如下:
\[Z = f(X, A) = \text{softmax}\left( \hat{A} \ \text{ReLU}\left( \hat{A} X W^{(0)} \right) W^{(1)} \right) \]
- 这里 \(\hat{A} = \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}\) 是归一化的邻接矩阵。
- \(W^{(0)} \in \mathbb{R}^{d \times h}\) 是第一层的权重矩阵,将特征映射到 \(h\) 维隐藏层。
- \(W^{(1)} \in \mathbb{R}^{h \times C}\) 是第二层的权重矩阵,映射到类别数 \(C\) 维。
- 前向传播流程:
- 第一层:\(H^{(1)} = \text{ReLU}(\hat{A} X W^{(0)})\),生成隐藏层节点表示。
- 第二层:\(Z = \text{softmax}(\hat{A} H^{(1)} W^{(1)})\),生成每个节点的类别概率分布。
4. 模型训练
- 损失函数:由于是半监督任务,损失只计算在有标签的节点上。使用交叉熵损失:
\[\mathcal{L} = -\sum_{i \in \mathcal{Y}_L} \sum_{c=1}^{C} Y_{ic} \ln Z_{ic} \]
其中 \(\mathcal{Y}_L\) 是有标签节点的索引集合,\(Y\) 是标签的独热编码。
- 优化:使用梯度下降法(如Adam)来优化所有权重参数 \(W^{(0)}\) 和 \(W^{(1)}\)。在计算梯度时,反向传播会通过图卷积层。
- 正则化:为了防止过拟合,可以在训练时对权重参数使用L2正则化。在原始论文中,作者还提出了在训练时对隐藏层表示使用Dropout作为一种高效的正则化手段,通常在第一个图卷积层后应用。
5. 关键特性与总结
- 局部性:每一层只聚合一阶邻居的信息,一个两层的GCN可以捕获到节点两跳邻居的信息。这种设计平衡了模型的表达能力与计算复杂度。
- 端到端学习:模型直接从原始特征和图中端到端地学习节点表示和分类器,无需预训练步骤。
- 归纳与直推:这里描述的GCN是直推式学习,训练和预测都在同一个固定的图上进行。模型看到了所有节点的特征和结构,但只使用部分标签进行训练。
- 计算高效:前向传播中的 \(\hat{A} H W\) 操作可以高效地实现为稀疏矩阵与稠密矩阵的乘法,复杂度与边数 \(|E|\) 成线性关系。
通过以上步骤,GCN模型有效地结合了图的结构信息和节点特征,在有标签数据有限的情况下,利用大量无标签节点的特征和图连接关系,学习到高质量的节点表示,从而在节点分类任务上取得了优异的效果。