最近读论文看到了这个概念,感觉还挺有意思的
流形(Manifold) 广泛应用于多个领域,如几何学、物理学、机器学习等。流形本质上是一个局部类似于欧几里得空间的空间,即它在某些尺度下看起来像我们熟悉的平面或曲面,但整体结构可能是复杂的。简单来说,你可以把流形想象成一个“弯曲的”空间,在局部上看起来像我们熟悉的平面,但全局上可能是弯曲或折叠的。
流形学习(Manifold Learning)是一种用于降维(Dimensionality Reduction)和非线性数据建模的技术,基于假设:
高维数据往往在低维流形(manifold)上存在某种结构化模式。
换句话说,尽管数据可能存在于 高维空间它实际上可以被映射到一个较低维的空间同时仍然保持原始的几何结构。
1. 为什么需要流形学习?
现实世界中的许多数据(如图像、文本、语音)通常高维但存在低维结构:
- 图像数据(( 64 \times 64 = 4096 ) 维):自然图像可能仅由几个关键因素(如光照、角度、物体形状)决定,因此本质上是低维的。
- 文本数据(数万维 one-hot):语言具有语法结构,实际可映射到较低维的流形上。
- 生物数据(如基因表达):不同基因的表达存在相关性,数据实际可能位于较低维的流形上。
简单来说,流形学习可以帮助:
- 降维(Dimensionality Reduction):减少计算复杂度,如 PCA、t-SNE。
- 去除噪声(Denoising):学习数据的本质结构。
- 数据可视化(Data Visualization):如 t-SNE、UMAP 进行二维或三维投影。
2. 直观理解流形
假设有一个 “瑞士卷”(Swiss Roll) 数据集,如下图:
📌 **瑞士卷(Swiss Roll)示例:
- 这是一个三维数据集((x, y, z)),但如果展开,它其实是二维的。
- 普通的线性方法(如 PCA)无法有效降维,因为它不能保留局部结构。
- 流形学习方法(如 Isomap、LLE)可以正确地学习到它的二维结构。
3. 常见的流形学习算法
方法 | 核心思想 | 优点 | 缺点 |
---|---|---|---|
PCA(主成分分析) | 线性变换,将数据投影到方差最大的方向上 | 简单高效,适用于线性数据 | 不能处理非线性流形 |
t-SNE(t-分布随机邻域嵌入) | 通过概率分布保持局部结构,进行非线性降维 | 适合数据可视化 | 计算复杂度高 |
UMAP(统一流形逼近) | 通过测度空间上的局部和全局结构降维 | 计算速度比 t-SNE 快 | 仍需调参 |
Isomap(等距映射) | 计算数据点间的测地距离(Shortest Path) | 能够保持流形结构 | 对噪声敏感 |
LLE(局部线性嵌入) | 通过局部线性关系重构低维表示 | 能保持局部结构 | 不能处理流形间的折叠 |
这些方法大多用于数据降维和可视化,但在深度学习中,流形学习的概念被进一步扩展,例如:
- 自监督学习(Self-Supervised Learning):学习高维数据的低维表示,如 SimCLR、BYOL。
- 图神经网络(GNNs):学习图结构数据的嵌入,如 GraphSAGE、GAT。
- 生成模型(GAN/VAE):学习数据的潜在流形表示。
4. 流形学习 vs. 传统机器学习
传统方法(PCA、SVM等) | 流形学习(t-SNE, UMAP, Isomap等) | |
---|---|---|
数据类型 | 线性数据(如股票价格) | 非线性数据(如图像、语音) |
目标 | 发现全局模式 | 保持局部几何结构 |
降维方式 | 线性投影 | 非线性映射 |
计算复杂度 | 低 | 高 |
简单来说,流形学习适用于 复杂的、非线性数据,能够更准确地发现数据中的潜在低维结构。
5. 深度学习中的流形学习
在深度学习(Deep Learning)中,流形学习的思想被广泛应用:
- Autoencoders(自编码器):学习输入数据的低维嵌入(潜在变量)。
- Contrastive Learning(对比学习):通过流形上的样本对比学习(SimCLR, MoCo)。
- Graph Neural Networks(图神经网络):学习图结构数据上的流形信息。
- GAN/VAE(生成模型):学习数据分布的低维流形,并生成新数据。
📌 示例:图神经网络(GNN)
- 许多现实世界的数据是图数据(如社交网络、分子结构)。
- GNN 通过邻接结构学习数据的低维流形表示,使得节点的表示能够捕捉数据的拓扑信息。