最近读论文看到了这个概念,感觉还挺有意思的
流形(Manifold) 广泛应用于多个领域,如几何学、物理学、机器学习等。流形本质上是一个局部类似于欧几里得空间的空间,即它在某些尺度下看起来像我们熟悉的平面或曲面,但整体结构可能是复杂的。简单来说,你可以把流形想象成一个“弯曲的”空间,在局部上看起来像我们熟悉的平面,但全局上可能是弯曲或折叠的。
流形学习(Manifold Learning)是一种用于降维(Dimensionality Reduction)和非线性数据建模的技术,基于假设:
高维数据往往在低维流形(manifold)上存在某种结构化模式。
换句话说,尽管数据可能存在于 高维空间它实际上可以被映射到一个较低维的空间同时仍然保持原始的几何结构。
现实世界中的许多数据(如图像、文本、语音)通常高维但存在低维结构:
简单来说,流形学习可以帮助:
假设有一个 “瑞士卷”(Swiss Roll) 数据集,如下图:
方法 | 核心思想 | 优点 | 缺点 |
---|---|---|---|
PCA(主成分分析) | 线性变换,将数据投影到方差最大的方向上 | 简单高效,适用于线性数据 | 不能处理非线性流形 |
t-SNE(t-分布随机邻域嵌入) | 通过概率分布保持局部结构,进行非线性降维 | 适合数据可视化 | 计算复杂度高 |
UMAP(统一流形逼近) | 通过测度空间上的局部和全局结构降维 | 计算速度比 t-SNE 快 | 仍需调参 |
Isomap(等距映射) | 计算数据点间的测地距离(Shortest Path) | 能够保持流形结构 | 对噪声敏感 |
LLE(局部线性嵌入) | 通过局部线性关系重构低维表示 | 能保持局部结构 | 不能处理流形间的折叠 |
这些方法大多用于数据降维和可视化,但在深度学习中,流形学习的概念被进一步扩展,例如:
传统方法(PCA、SVM等) | 流形学习(t-SNE, UMAP, Isomap等) | |
---|---|---|
数据类型 | 线性数据(如股票价格) | 非线性数据(如图像、语音) |
目标 | 发现全局模式 | 保持局部几何结构 |
降维方式 | 线性投影 | 非线性映射 |
计算复杂度 | 低 | 高 |
简单来说,流形学习适用于 复杂的、非线性数据,能够更准确地发现数据中的潜在低维结构。
在深度学习(Deep Learning)中,流形学习的思想被广泛应用:
示例:图神经网络(GNN)