【机器学习系列博客】1. 维度的诅咒

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_36326955/article/details/82584805

The Curse of Dimensionality

作者:相国大人
E-mail: [email protected]

1. 三个问题

在开始本文的讲解之前,我想问大家几个很简单的问题,简单到我们平日工作中似乎根本没有任何的考虑而当成了理所应当。

在实际工作中,我们似乎都认同这样一个事实:如果你增加数据提取的特征维度,或者说如果你的模型需要更高维度的输入,那么相应的,你也需要增加你的训练数据。例如在我们人工提取特征的时候,如果你结合了多个特征,最后的求解模型的训练往往也需要更多的数据。又如在深度神经网络中,由于输入维度过高,我们往往需要增加大量的训练数据,否则模型会“喂不饱”。

我的第一个问题是:为什么会“喂不饱”?
这个问题你有仔细认真的想过吗?或者说,你能给我一个有理有据的解释吗?


第二个事实是: 如果你了解SVM(支持向量机)的话,你就会知道,SVM是通过核函数,把低纬度样本映射到高维空间里的,从而获得更好的分类效果。然而,于此相反的是,绝大多数深度神经网络是把高维的输入映射到低纬度空间,最后把几百万,几千万维的输入压缩成了一个几百维的向量,却也获得了更好的分类效果。这是什么原因呢?

我的第二个问题是:为什么我们不可以仿照SVM,把深度神经网络的输入映射到更高伟的空间?
有人说SVM适用于低维度数据,深度神经网络使用于大规模数据,SVM与深度神经网络的本质区别又是什么呢,你能解释清楚吗?


第三个事实是:我们见到的几乎所有的深度神经网络,最后的分类层往往都是softmax(罗辑思特回归适应于多分类的变种)。似乎没有人把最后的分类器换成带有核变换的SVM。尽管有一些论文似乎确实是把SVM作为了后端,但是这个SVM往往也不是带有核函数的SVM,本质上仍是一个线性分类器,与softmax在性能上差不多。

因此,我的第三个问题:既然深度网络具有很强的表示能力,SVM具有很强的分类能力,为什么我们看到的绝大多数深度网络后面的分类层都是softmax而不是SVM?

以上三个问题,在看完我们接下来的关于维度诅咒的讲解后,相信你会有更好的认识。

2. n维空间的膨胀

理想情况下,我们如果把一些样本映射到n维空间,这n维空间的n个坐标轴是相互正交的(线性无关),那么我们就需要考察一下,样本数据在n维空间究竟是如何分布的呢?

首先,我们不加证明的给出n-1维球面所包围的体积(n维超球体体积)公式:

V n = π n 2 R n Γ ( n 2 + 1 ) = C n R n
其中:
C n = π k k !  when n=2k,k为整数 C n = 2 2 k + 1 k ! π k ( 2 k + 1 ) !  when n=2k+1,k为整数

接下来我们可以用这个公式考察一下n维空间单位超球体(即从原点出发,半径为1的超球)的体积:

V 0 = 1 V 1 = 2 V 2 = π 3.1416 V 3 = 4 π 3 4.1888 V 4 = π 2 2 4.9348 V 5 = 8 π 2 15 5.2638 V 6 = π 3 6 5.1677 V 7 = 16 π 3 105 4.7248 V 8 = π 4 24 4.0587

但是当n趋向于无穷大时, V n R n 趋向于0,即随着维度的增加,单位超球体的体积在缩水(shrink)。

这里写图片描述
关于单位超球体的体积缩水,我们也可以这样看:

单位n维球面的外切超正方体的边长为2,因此体积为 2 n ;当维度增加时,n维球面的体积与外切于它的超正方体的体积之比单调减少。


单位超球体体积缩水,与此等价的一段表述是:随着维度的增加,想要维护同样的体积,单位空间的半径必须增大。这样的一个直观现象就是:当维度增加时,n维空间的体积极速膨胀,以至于已有的样本数据变得稀疏了。

我们把这一现象,叫做维度诅咒(The curse of dimensionality)

3. 问题的解答

现有的统计模型,本质上是在n维空间里检索一个区域,这个区域的样本具有相似的性质。然而,到了高维空间后,由于体积膨胀,样本分布变得极其稀疏,所有的样本在各种度量方案上都不在具有相似性,这就阻碍了数据高校的组织与处理。

由上所述相国在这里问大家的前两个问题其实是等价的:

  1. 由于高纬度空间膨胀,原来样本变得稀疏,原来距离相近的一些样本也都变得距离极远。此时相似性没有意义,需要添加数据使得样本稠密。
  2. SVM通过核函数把低纬度输入映射到高纬度,取得了更好的分类效果。这是因为在低维空间下,原有的样本聚在了一起,线性不可分,因此需要映射到高维度,将样本分布拉伸,从而更好的分类。因此,带有核的SVM处理的数据一般是低纬度的数据,即便通过核函数映射到高维空间也是有限的,需要更多的数据进行训练。而深度神经网络的输入一般是高维的数据。例如一个单词如果定义为300维的词向量,我们把一段1000个单词的文本作为一个样本,这就是一个拥有 300 × 1000 = 300 , 000 个entries的矩阵,这么高维度的空间里,样本之间的相似性难以被挖掘,因此我们使用深度网络对维度进行压缩,使得样本分布更加稠密,便于下游分类器分类。

由此可见,SVM和深度神经网络一个是“拉”,一个是“压”,“拉压”结合,体现了自然哲学的辩证法。使用哪一种方法取决于你对于样本数据的了解情况。

既然如此,第三个问题就好解释了。深度网络加上带有核变换的SVM,这说明前端深度网络压缩过度。实际上使用softmax就足够了。从一些论文中我们也可以看到,有些论文后端使用的是SVM,但是仅仅是简单的SVM,没有假如核变换,这个时候其性能与softmax相比差不多。当然,这里还有其他的一些考虑,读者可以查阅相关文献做进一步的阅读(知乎)


写这篇博文用了很多时间和精力,如果这篇博文对你有帮助,希望您可以打赏给博主相国大人。哪怕只捐1毛钱,也是一种心意。通过这样的方式,也可以培养整个行业的知识产权意识。我可以和您建立更多的联系,并且在相关领域提供给您更多的资料和技术支持。


赏金将用于拉萨儿童图书公益募捐
All donation will be used to the library of charity for children in Lhasa.
社会公益,听IT人的声音

手机扫一扫,即可:

春天里,我们的拉萨儿童图书馆,需要大家的帮助

猜你喜欢

转载自blog.csdn.net/github_36326955/article/details/82584805
今日推荐