03.31 维度灾难如何解决?

如果要给从事机器学习领域的人建议的话,那会是:永远不要忘记维度灾难。传统的解释是这样的:“如果你有很多输入维度,那么问题就变得很昂贵并且难以解决。”事实如此,但为什么会这样呢?让我们来更详细地讨论这个问题吧。

维度灾难最直观的解释之一就是看单位超球面及其体积。那是什么意思?数据点主要表示为d维向量。我们假设特定问题中的所有数据点都位于单位超球面中。我们都知道3D中超球面的体积,它是:

维度灾难如何解决?


要将其扩展为d维,我们可以忽略体积方程中的常数并将它们放在变量c中,然后体积方程采用以下形式:


维度灾难如何解决?


观察下面的圆圈,几何上,好像大多数点落在外壳之间(蓝线和红线之间的空间)。换句话说,半径为0.95的单位圆的壳层也只占圆圈面积的一小部分:


维度灾难如何解决?

一个单位圆,其中生成随机数据点


现在,想象一下当我们观察一个d维超球面时,这种情况怎么样?大多数人会说这是差不多的情况,大部分体积都会超出超球体的外壳。但大多数人都错了。事实是人类并不能真正思考高维空间。它不直观,我们无法想象。我们来看看实际发生了什么。我们可以写出外壳从d维超球面占据的体积分数,如下所示:

维度灾难如何解决?


观察一下如果我们取壳体的超球面半径的5%,分数会有什么样的变化,现在问题就很清晰了。随着输入维度d的增加,驻留在壳体中的体积的数量显着增加,如下图所示:


维度灾难如何解决?


该图显示了壳体在超球面占据的体积分数随着数据维数的增加而增加。

我们可以看到,壳体的体积分数呈指数增长,朝向1,1的维数是其极限。即使对于少量的r,壳的分数也迅速增加到1。

这是什么意思,何时会产生这样的问题?为了来观察这个变化,让我们来看一下机器学习中最常用的分布,即高斯分布。如果我们观察三维输入空间的高斯密度,它就像一个超球面,其中概率随着半径的平均值而减小,这通常适用于超过3个维度,通过下图你就能明白:


维度灾难如何解决?


二维高斯分布的高斯密度。注意密度是如何投射到类似椭圆的对象上的,在更高维空间中可以预期类似的行为。

在高维空间中,高斯的密度集中在其超球面的外壳中,这是由于超球面体积是壳体的一部分,这在高维空间中变得显著。这意味着在在采用高斯采样的情况下,结果将是来自超球面的外壳具有最高概率的数据点。

我们可以从经验风险最小化的角度思考维度灾难。简而言之,我们希望从我们的数据中获取代表性的训练样本,以便能够推广到不可见的数据。现在,在超球面的例子中,我们检查了当球体的球体半径厚度为5%时,数据维数大约为400维,球体的外壳将包含超过90%的体积。想象一下,我们在球体中心(0%半径)和95%半径之间有数据样本。在这种情况下,我们覆盖了半径范围的95%,但我们只覆盖了不到10%的体积。显然,在这种情况下很难获得代表性样品。

幸运的是,维度灾难并不意味着我们无法建立有效的模型。通常我们对数据有一些平滑性保证,数据空间不能如此密集地填充或减少维度(机器学习研究的很大一部分)。也许最好的例子是所有可能的64x64 RGB图像的空间。数据的维度为64x64x3 = 12288。如果我们考虑一个超球面的例子,这显然是一个问题。但实际上,大多数像素的各种组合对于任何类型的分类都没有意义。此外,计算机视觉方法有许多有用的先验决策,这使得问题更容易解决。

维度灾难如何解决?


分享到:


相關文章: