聚类方法谱系
Centroid/Flow/Spectral/Density/Agglomerative 五大类,Compactness vs Connectivity 两大标准。
CS267 · 第 14 课
从聚类到降维,从图神经网络到分布式 SpMM:Aydin Buluc 深入讲解无监督学习算法的数学原理与大规模并行实现。
聚类是无监督学习的核心任务:将数据划分为若干组(cluster),使得组内相似度高、组间相似度低。Aydin Buluc 将聚类方法分为五大类:
| 方法 | 核心思想 | 代表算法 |
|---|---|---|
| Centroid-based | 用中心点代表簇,迭代优化中心位置 | K-Means, K-Medoids |
| Flow-based | 基于图流/网络流的最大流最小割 | MCL (Markov Cluster) |
| Spectral | 利用图拉普拉斯矩阵的特征向量 | Normalized Cut, NJW |
| Density-based | 高密度区域形成簇,低密度区域为边界 | DBSCAN, OPTICS |
| Agglomerative | 自底向上合并最近簇 | 单链接、全链接、WARD |
| 标准 | 含义 | 适用方法 | 示意图 |
|---|---|---|---|
| Compactness(紧凑性) | 簇内点到中心的距离最小化 | K-Means, K-Medoids | 球形簇 |
| Connectivity(连通性) | 簇内点在图中"连通"即可 | Spectral, DBSCAN, Agglomerative | 任意形状簇 |
如果数据簇是凸形/球形,用 Compactness(K-Means);如果簇是任意形状(如月牙形、环形),必须用 Connectivity(Spectral/DBSCAN)。
谱聚类是一类基于图拉普拉斯矩阵(Graph Laplacian)特征分解的强大聚类方法,能够发现任意形状的簇。
将数据点视为图的顶点,点之间的相似度作为边权重。三种经典构图方式:
| 方法 | 边的定义 | 特点 |
|---|---|---|
| ε-neighborhood | 距离 < ε 的点对连边 | 图可能不连通 |
| k-Nearest Neighbor (kNN) | 每个点连最近的 k 个邻居 | 图稠密,需对称化 |
| Fully Connected | 所有点对都连边,权重用高斯核 | 最稠密,\(W_{ij} = \exp(-\|x_i - x_j\|^2 / 2\sigma^2)\) |
定义相似矩阵 \(W\)(权重矩阵),度矩阵 \(D = \text{diag}(d_i)\),其中 \(d_i = \sum_j W_{ij}\):
| 矩阵 | 定义 | 性质 |
|---|---|---|
| 非归一化拉普拉斯 | \(L = D - W\) | 特征值 ≥ 0 |
| 归一化拉普拉斯(对称) | \(L_{sym} = D^{-1/2} L D^{-1/2} = I - D^{-1/2} W D^{-1/2}\) | 特征值 ∈ [0, 2] |
| 归一化拉普拉斯(随机游走) | \(L_{rw} = D^{-1} L = I - D^{-1} W\) | 与 \(L_{sym}\) 特征值相同 |
当 n 达到百万/亿级时,需要高效的大规模特征值求解器:
| 算法 | 核心操作 | 适用场景 |
|---|---|---|
| Lanczos | Krylov 子空间迭代 + SpMV | 稀疏矩阵,求少量极端特征值 |
| SpMV | 稀疏矩阵-向量乘法 | Lanczos 的底层原语 |
| LOBPCG | Locally Optimal Block Preconditioned CG | 比 Lanczos 更稳定,可并行 |
| PARPACK | 并行 ARPACK | 分布式内存 SpMV + 隐式重启 |
当 n 很大时,特征分解是主要瓶颈。即使使用 Lanczos/LOBPCG,每次迭代仍需一次 SpMV。对于超大规模图,可能需要数百次迭代才能收敛。
MCL(Markov Cluster Algorithm)是一种基于随机游走的流聚类方法,由 Stijn van Dongen 提出。其核心思想:在随机游走的"流"中,簇内流动强、簇间流动弱。
MCL 交替执行两个操作,作用于随机矩阵 \(M\)(列随机矩阵):
| 操作 | 数学 | 作用 |
|---|---|---|
| Expansion | \(M \leftarrow M \cdot M\)(SpGEMM) | 模拟随机游走的 k 步传播,增强连通性 |
| Inflation | \(M_{ij} \leftarrow M_{ij}^r / \sum_k M_{kj}^r\)(Hadamard power) | 强化强边、弱化弱边,参数 r 控制粒度 |
| 技术 | 作用 |
|---|---|
| Pruning | 将极小元素置零,保持稀疏性,避免稠密化 |
| Recovery | 补偿被剪枝的重要元素,控制误差 |
| Selection | 每列只保留 top-k 元素,控制每行/列密度 |
HipMCL 是 Aydin Buluc 团队开发的分布式 MCL 实现,使用 Sparse SUMMA 算法进行分布式 SpGEMM:
| 特性 | HipMCL 实现 |
|---|---|
| SpGEMM 算法 | Sparse SUMMA(2D 块循环) |
| 数据结构 | 分布式 CSR 稀疏矩阵 |
| 可扩展性 | 支持百万级顶点、十亿级边 |
| 典型结果 | 1024 节点、10 亿边图上,数分钟内完成聚类 |
在超大规模蛋白质互作网络上,HipMCL 展示了近线性扩展:节点数从 64 增加到 1024 时,运行时间下降约 14x(理想 16x),证明 Sparse SUMMA 在大规模 SpGEMM 上的高效性。
降维是将高维数据投影到低维空间,同时保留尽可能多的信息。两种经典方法:PCA 和 NMF。
PCA(主成分分析)通过奇异值分解实现:
NMF 要求分解后的矩阵元素非负,适用于图像、文本等天然非负数据:
\[X \approx WH, \quad W \geq 0, H \geq 0\]
其中 \(X \in \mathbb{R}^{m \times n}\),\(W \in \mathbb{R}^{m \times k}\),\(H \in \mathbb{R}^{k \times n}\)。
NMF 是非凸问题,通常使用交替优化策略:固定一个矩阵,优化另一个:
| 算法 | 更新规则 | 特点 |
|---|---|---|
| MU(Multiplicative Update) | \(W \leftarrow W \circ \frac{XH^T}{WHH^T}\)(Hadamard 除法) | 简单,自动保持非负,收敛慢 |
| ALS(Alternating Least Squares) | \(W = \arg\min_{W \geq 0} \|X - WH\|_F\)(NNLS) | 每步解非负最小二乘 |
| ANLS(Alternating NNLS) | 精确求解 NNLS 子问题 | 比 ALS 更稳定,支持正则化 |
NNLS 子问题(Active Set 方法)是串行的。在分布式环境中,需要按行/列分块,每个节点独立求解局部 NNLS,再聚合结果。通信开销与收敛速度需要权衡。
MPI-FAUN(Fast and distributed NMF)使用 MPI 实现分布式 NMF:
半监督学习结合少量标注数据和大量未标注数据,核心假设:
将数据构建为图,标签传播(Label Propagation)算法迭代地将标签从标注点传播到未标注点:
\[Y^{(t+1)} = D^{-1} W Y^{(t)}\]
这与谱聚类的 Expansion 操作本质相同——都是 SpMV!
图神经网络将深度学习推广到图结构数据。最经典的 GCN(Graph Convolutional Network)每一层的计算可以表示为:
GCN 的前向传播核心操作是稀疏矩阵-稠密矩阵乘法(SpMM):
\[H^{(l+1)} = \sigma(\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2} H^{(l)} W^{(l)})\]
其中 \(\tilde{A}\) 是稀疏邻接矩阵,\(H^{(l)}\) 是稠密节点特征,\(W^{(l)}\) 是权重矩阵。
大规模 GNN 训练需要分布式 SpMM。Aydin Buluc 介绍了几种经典并行策略:
| 算法 | 数据分布 | 通信模式 |
|---|---|---|
| 1D SpMM | 按行分块 | AllGather 特征矩阵 |
| 1.5D SpMM | 行分块 + K 副本 | ReduceScatter + AllGather(K 折通信量) |
| 2D SpMM | 2D 块循环 | 行/列 AllGather(Cannon 风格) |
| 3D SpMM | 3D 处理器网格 | K 维度上 Reduce(最小通信) |
1.5D SpMM 将稀疏矩阵复制 K 份,每份按行分块。通信量降为 1D 的 1/K,但计算量和内存增加 K 倍。在带宽受限的集群上,K=4~8 通常是最优选择。
CAGNET(Communication-Avoiding GNN)是 3D SpMM 的具体实现:
全图 SpMM 在大规模图上仍太贵。采样方法通过 mini-batch 降低计算量:
| 方法 | 采样策略 | 并行实现 |
|---|---|---|
| GraphSAGE | 每层均匀采样固定数目的邻居 | 采样 = 稀疏矩阵索引(SpGEMM 变体) |
| LADIES | 按权重采样,优先选重要邻居 | 采样 + 稀疏矩阵乘法 |
分布式采样可以通过 1.5D SpGEMM 高效实现:
GraphSAGE/LADIES 的采样步骤本质上是一种稀疏矩阵乘法:采样矩阵(稀疏)× 邻居矩阵(稠密)。因此,所有分布式 SpMM 算法(1D/1.5D/2D/3D)都可以直接应用于采样步骤!
Centroid/Flow/Spectral/Density/Agglomerative 五大类,Compactness vs Connectivity 两大标准。
构建相似图 → 拉普拉斯矩阵 → 前 k 特征向量 → K-Means。Lanczos/LOBPCG 是核心求解器。
Expansion(SpGEMM)+ Inflation(Hadamard power)交替迭代,HipMCL 实现大规模分布式。
MU/ALS/ANLS 三种算法,分布式 NNLS 是关键,MPI-FAUN 是典型实现。
GCN 训练核心是 SpMM,1.5D/3D 算法避免通信瓶颈;采样方法统一为 SpGEMM。
问题 1:谱聚类(Spectral Clustering)的核心数学工具是什么?
问题 2:MCL(Markov Cluster Algorithm)的每次迭代包含哪两个操作?
问题 3:HipMCL 使用哪种分布式 SpGEMM 算法?
问题 4:关于 NMF(非负矩阵分解),以下哪项正确?
问题 5:GCN(Graph Convolutional Network)训练的核心计算操作是什么?