维度和流形

数据挖掘 机器学习 降维
2021-09-21 00:22:12

无监督机器学习中常见的一句话是

高维输入通常位于低维流形上或附近

什么是维度?什么是歧管?有什么区别?

你能举个例子来描述两者吗?

来自维基百科的歧管

在数学中,流形是一个拓扑空间,类似于每个点附近的欧几里得空间。更准确地说,n 维流形的每个点都有一个与 n 维欧几里得空间同胚的邻域。

来自维基百科的维度

在物理学和数学中,数学空间(或对象)的维度被非正式地定义为指定其中任何点所需的最小坐标数。

维基百科用外行的话来说是什么意思?这听起来像大多数机器学习定义一样奇怪的定义?

它们都是空间,那么欧几里得空间(即流形)和维度空间(即基于特征)之间有什么区别?

4个回答

什么是维度?

简单来说,如果你有一个 m 行 n 列的表格数据集,那么你的数据的维数是 n:

什么是歧管?

最简单的例子是我们的地球。对我们来说,它看起来是平的,但它实际上是一个球体。所以它是一种嵌入在 3d 空间中的 2d 流形。

有什么区别?

要回答这个问题,请考虑另一个流形示例:

在此处输入图像描述

这就是所谓的“瑞士卷”。数据点是 3d 的,但它们都位于 2d 流形上,所以流形的维数是 2,而输入空间的维数是 3。

有许多技术可以“解开”这些流形。其中之一称为Locally Linear Embedding,它就是这样做的:

在此处输入图像描述

这是一个 scikit-learn 的代码片段:

from sklearn.manifold import LocallyLinearEmbedding

lle = LocallyLinearEmbedding(n_neighbors=k, n_components=2)
X_lle = lle.fit_transform(data)
plt.scatter(X_lle[:, 0], X_lle[:, 1], c=color)
plt.show()

数据集的维度是用来表示它的变量的数量。例如,如果我们有兴趣根据身高和体重来描述人,我们的“人”数据集将有 2 个维度。相反,如果我们有一个图像数据集,并且每个图像是一百万像素,那么数据集的维度将是一百万。事实上,在许多现代机器学习应用程序中,数据集的维数可能很大。

当维度非常大(大于数据集中的样本数量)时,我们可能会遇到一些严重的问题。考虑一个简单的分类算法,它试图找到一组权重 w,这样当用样本 x 点缀时,一个类给出一个负数,另一个类给出一个正数。w 的长度等于数据的维数,因此它的参数数量将超过整个数据集中的样本数量。这意味着学习器将能够过度拟合数据,因此无法很好地泛化到训练期间未见过的其他样本。

流形是嵌入在某个更高维空间中的维数为 d 的对象。想象一张纸上的一组点。如果我们把纸弄皱,这些点现在是 3 维的。许多流形学习算法试图“解开”纸张以将数据放回二维。即使我们不关心过度拟合我们的模型,非线性流形学习器也可以产生一个空间,使分类和回归问题更容易。

进行降维的一种方法是进行特征散列。这在 1960 年代就已为人所知。因此,例如,如果您的数据是 3 维 (x,y,z) 中的一组稀疏点,您将创建一个(良好的)散列函数 h(x,y,z)。您当然可以将其用于哈希表或布隆过滤器查找。这是一种很好的数据压缩形式。我不知道为什么 AI 社区不使用它。它比神经网络更重要。

@Alexey Grigorev 已经给出了一个很好的答案,但是我认为添加两件事可能会有所帮助:

  • 我想为您提供一个示例,帮助我直观地理解流形的重要性。
  • 详细说明这一点,我想稍微澄清一下“类似于欧几里得空间”。

直观的例子

想象一下,我们将处理一组(黑白)HDready 图像(1280 * 720 像素)。这些图片生活在一个 921,600 维的世界中;每张图片都由单独的像素值定义。

现在想象一下,我们将通过滚动一个 256 面的骰子按顺序填充每个像素来构建这些图像。

生成的图像可能看起来像这样:

在此处输入图像描述

不是很有趣,但我们可以继续这样做,直到我们找到我们想要保留的东西。很累,但我们可以用几行 Python 自动完成。

如果有意义(更不用说现实)图像的空间甚至与整个特征空间一样大,我们很快就会看到一些有趣的东西。也许我们会看到你的婴儿照片或来自另一个时间线的新闻文章。嘿,我们添加一个时间组件怎么样,我们甚至可以幸运地生成带有替代结局的回到未来

事实上,我们曾经有过可以做到这一点的机器:没有正确调校的旧电视。现在我记得看到过那些,我从来没有见过任何有任何结构的东西。

为什么会这样?嗯:我们发现有趣的图像实际上是对现象的高分辨率投影,它们受高维低得多的事物支配。例如:场景的亮度接近一维现象,在这种情况下几乎占据了一百万维。

这意味着有一个子空间(流形),在这种情况下(但不是根据定义)由隐藏变量控制,其中包含我们感兴趣的实例

局部欧几里得行为

欧几里得行为意味着行为具有几何特性。在亮度非常明显的情况下:如果沿“它的轴”增加亮度,则生成的图片会变得越来越亮。

但这就是有趣的地方:欧几里得行为也适用于我们流形空间中更抽象的维度。考虑Goodfellow、Bengio 和 Courville 的深度学习中的这个例子

左:Frey 面流形的二维图。 已发现的一个维度(水平)主要对应于面部的旋转,而另一个(垂直)对应于情绪表达。 右图:MNIST 流形的二维图

左:Frey 面流形的二维图。已发现的一个维度(水平)主要对应于面部的旋转,而另一个(垂直)对应于情绪表达。右图:MNIST 流形的二维图

深度学习在涉及图像的应用中如此成功的一个原因是它结合了一种非常有效的流形学习形式。这也是它适用于图像识别、压缩以及图像处理的原因之一。