图自编码器(Graph Autoencoder, GAE)的原理与重建过程
题目描述
图自编码器(GAE)是一种用于图结构数据的无监督学习模型,目标是通过编码器-解码器架构学习节点的低维嵌入表示,并重建图的邻接矩阵。GAE利用图卷积网络(GCN)作为编码器,通过内积解码器重构节点间连接关系,广泛应用于链接预测、图重构等任务。
1. 问题定义与目标
设图 \(G = (V, E)\),其中 \(V\) 为节点集合(节点数 \(n = |V|\)),\(E\) 为边集合。图的邻接矩阵为 \(A \in \{0,1\}^{n \times n}\),节点特征矩阵为 \(X \in \mathbb{R}^{n \times d}\)(\(d\) 为特征维度)。GAE的目标是:
- 编码器:将每个节点映射到低维向量 \(Z \in \mathbb{R}^{n \times k}\)(\(k \ll n\))。
- 解码器:利用 \(Z\) 重构邻接矩阵 \(\hat{A}\),使 \(\hat{A}\) 接近原始 \(A\)。
2. 编码器:图卷积网络(GCN)
GAE的编码器采用两层GCN,其核心思想是通过邻接矩阵聚合邻居信息。编码过程如下:
步骤1:邻接矩阵的规范化
为避免梯度爆炸,对邻接矩阵 \(A\) 添加自环并归一化:
\[\tilde{A} = A + I_n, \quad \tilde{D}_{ii} = \sum_j \tilde{A}_{ij}, \quad \text{规范化矩阵 } \tilde{A}_{\text{norm}} = \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} \]
其中 \(I_n\) 为单位矩阵,\(\tilde{D}\) 为度矩阵。
步骤2:GCN前向传播
两层GCN的计算公式为:
\[Z = \text{GCN}(X, A) = \tilde{A}_{\text{norm}} \cdot \text{ReLU}(\tilde{A}_{\text{norm}} X W_0) \cdot W_1 \]
- \(W_0 \in \mathbb{R}^{d \times h}\) 为第一层权重(\(h\) 为隐藏层维度),\(W_1 \in \mathbb{R}^{h \times k}\) 为第二层权重。
- ReLU为激活函数,确保非线性。
- 输出 \(Z\) 的每一行 \(Z_i\) 是节点 \(i\) 的嵌入向量。
3. 解码器:内积重构邻接矩阵
解码器通过节点嵌入的内积计算节点间连接概率:
\[\hat{A}_{ij} = \sigma(Z_i Z_j^\top), \quad \text{其中 } \sigma(x) = \frac{1}{1+e^{-x}} \text{ 为sigmoid函数} \]
- \(\hat{A}_{ij} \in (0,1)\) 表示节点 \(i\) 和 \(j\) 之间存在边的概率。
- 重构的邻接矩阵 \(\hat{A}\) 应与原始 \(A\) 尽可能接近。
4. 损失函数:重构误差
GAE通过最小化负对数似然损失(交叉熵)优化参数:
\[\mathcal{L} = -\sum_{(i,j) \in E} \log \hat{A}_{ij} - \sum_{(i,j) \notin E} \log (1-\hat{A}_{ij}) \]
- 第一项鼓励存在边的节点对重构概率接近1,第二项鼓励无边节点对概率接近0。
- 实践中常对负边(无边对)进行采样以降低计算复杂度。
5. 训练过程
- 输入:邻接矩阵 \(A\)、节点特征 \(X\)。
- 前向传播:
- 计算规范化邻接矩阵 \(\tilde{A}_{\text{norm}}\)。
- 通过GCN编码器得到嵌入 \(Z\)。
- 通过内积解码器得到重构矩阵 \(\hat{A}\)。
- 反向传播:
- 计算损失 \(\mathcal{L}\)。
- 利用梯度下降(如Adam)更新权重 \(W_0, W_1\)。
- 输出:训练后的节点嵌入 \(Z\) 可用于下游任务(如链接预测)。
6. 关键点与注意事项
- 对称性:内积解码器保证重构矩阵 \(\hat{A}\) 对称,适用于无向图。
- 特征缺失处理:若节点特征缺失,可用单位矩阵 \(I_n\) 替代 \(X\)。
- 变体:图变分自编码器(GVAE)通过引入隐变量分布增强生成能力。
通过以上步骤,GAE能够有效捕捉图结构中的局部和全局模式,实现节点嵌入的高质量重建。