从传统机器学习走向深度学习

以下内容由我的CSDN博客迁移。

前面介绍了有关机器学习的基本概念和经典算法,现在让我们了解一下为什么深度学习会崛起。(主要参考《深度学习》)

促使深度学习发展的挑战

很多简单的机器学习算法在不同的重要问题上面效果都表现良好,但它们不能解决一些核心问题,比如语音识别或者对象识别。传统学习算法在这些方面的泛化能力不足。下面让我们说说泛化能力不足的具体原因。

  • 事实上,深度学习的复兴起始于Hinton表明神经网络能够在MNIST基准数据上胜过RBF核的支持向量机。

1. 维数灾难(Curse of Dimensionality)

当数据的维数很高时,很多学习问题就会变得相当困难。这种现象被称为维数灾难。一组变量不同的可能配置组合的数量会随着变量数目的增加而指数级增长。

  • 由维数灾难带来的挑战就是统计挑战。许多传统机器学习算法只是简单地假设在一个新点的输出应大致和最近的训练点的输出相同。

在低维度里,由于数据可能的组合配置很少,我们很容易就能覆盖大部分的区域,比如我们只考虑一个特征的十个值,我们不需要很多数据就能完全覆盖它的配置组合。可是随着维数上升,比如两个特征的各自十个值,我们就需要考虑10 x 10 =100个区域;三个特征就需要追踪1000个区域……

一般来说,对于需要区分的d维的v个值,我们需要\(O(v^d)\)个区域和样本。由此我们可以看到维数不断增加造成的传统机器学习的泛化不足。

如图,可以看到,随着维数的增加,分类器的性能最终会不断下降。

对于维数灾难的更详细直观解释,请看《分类问题中的“维数灾难”》

2. 局部不变性和平滑正则化

为了提高泛化能力,机器学习算法需要由先验信念引导应该学习什么类型的函数。其中使用最广泛的隐式先验是平滑先验或局部不变性先验,它表明我们学习的函数不应在小区域内发生很大的变化。但这一先验不能推广去解决深度学习级别任务中的统计挑战。

  • 对于我们学习出的函数\(f^*\)我们认为对于小变动\(\epsilon\),有\(f^*(x)\approx f^*(x+\epsilon)\),即如果我们知道对应输入\(x\)的答案,那么该答案对于\(x\)的领域也适用。若在某些领域有几个答案,我们可以组合它们以产生一个尽可能好的答案。
  • 但是,在高维空间中,即使是非常平滑的函数,也会在不同维度上有不同的变化方式。如果函数在不同的区间中表现不一样,就很难用一组训练样本去刻画函数。

那么我们应该怎样有效地表示复杂的函数以及所估计的函数是否可以很好地泛化到新的输入呢?

  • 一个关键观点是:只要我们通过额外假设生成数据的分布来建立区域间的依赖关系,那么较少的样本\(O(k)\)足以描述多如\(O(2^k)\)的大量区间。

一些机器学习算法会提出很强的,针对特定问题的假设,比如周期性等。但是神经网络并不包含这些很强的假设,因此神经网络的泛化能力更强。深度学习的核心思想是假设数据由因素或特征组合产生,这些因素或特征组合可能来自多个层级。还有许多通用的假设进一步提高了深度学习算法。这些温和的假设允许了样本数目和可区分区间数目之间的指数增益。深度学习的分布式表示带来的指数增益有效地解决了维数灾难带来的挑战。

3. 流形学习

流形(manifold) 指连在一起的区域。数学上它指一组点,且每个点都有其领域。这意味着存在变换能够从一个位置移动到其领域位置。比如对于地球表面这一球状流形,我们可以朝东西南北走。

在机器学习中,流形只需要考虑少数嵌入在高维空间中的自由度或维数就能很好地近似。每一维都对应着局部的变化方向。流形学习算法通过一个假设来克服维数灾难:高维空间中大部分区域都是无效的输入,有意义的输入只分布在包含少量数据点的子集构成的一组流形中。 当然,数据位于低维流形的假设并不总是对的,但对于特定场景,比如处理图像、声音或者文本时,流形假设是近似对的。首先因为生活中的图像、文本、声音的概率分布是高度集中的,并不是均匀的噪声。其次,我们可以想象的到例如图像的流形领域,它至少包含了旋转,平移,变亮变暗等变换。在大多数应用中可能会涉及多个流形,比如人脸图像的流形不太可能连接到猫的流形。

当数据位于低维流形中时,使用流形中的坐标而非\(\R^n\)中的坐标表示数据更加自然。比如说我们可以认为道路时嵌入在三维空间中的一维流形。我们用一维道路中的地址号码确定地址,而非三维空间中的坐标。提取流形的坐标是很困难的,但很有希望改进很多机器学习算法。

关于流形学习,更多请看 深度学习与流形学习 简要介绍一下流形学习的基本思想


接下来我们正式进入深度学习的学习。 以上内容如有谬误还请告知。