流形学习和维度灾难|Manifold Learning and the Curse of Dimensionality

本文是对Bengio大神的新作《Deep learning》一书中[5.12.3 Manifold Learning and the Curse of Dimensionality]一节的拙劣翻译,希望能对英文不好的同学理解原著起到一点点作用。

5.12.3 流形学习和维度灾难
让我们来看看一种特殊的机器学习任务类型——流形学习。虽然它是用来消减维度灾难的,我们仍要讨论一下它可以帮助可视化和突显平滑先验法对于高维空间的泛化能力是不足的。第17章将重点关注表示方式学习的流形视角并深入这一课题的更多细节,研究基于神经网络的实践中的流形学习算法。
一个流形是一个连接区域,一个点的集合,每个点相互临近,使得其看起来想一个欧几里得空间。相邻的概念意味着存在一些转换能够使这个流形从一个位置移动到一个相邻的位置。虽然有形式化的数学手段表述相邻概念,但机器学习更倾向于松散地用这个概念去讨论一组连接的点,这组点可以通过只考虑高维空间中很小一部分自由度和维度就能被很好的近似。每个维度对应一个局部变化方向,比如,向某个方向移动流形。我们所说的机器学习中的流形是点的子集,称作嵌入空间(也是一个流形)的子流形。
流形学习算法假设数据分布集中在很少数量的维度上,例如高概率配置集合可以用一个低维流形来近似。图5.8(左)示例了一个集中在一个线性流形附近的分布(这个流形处在一条一维直线上)。虽然流形学习是为了连续值数据和无监督学习设置而引入的,尽管概率集中思想可以推广离散数据和监督学习设置:这个关键假设依然是概率质量是高度集中的。
这个假设合理么?对于大多数的AI任务,如涉及图像、声音、文本的任务,看起来是对的。为了证明,我们将调用(a)概率质量集中的观察和(b)观察的对象通常可以通过一些很小的变化转换成其他合理的配置(指保持在流形中变化方向的概念)。对于(a),考虑概率集中的假设是假的,那么从所有配置集合中统一随机采样(也就是统一在R^n上)应该通常合理地产生可能的(数据偏好)配置。但这不是我们实际中观察到的。比如,通过独立地为每个像素挑选一个灰度(也可以是01)来为图像生成像素配置。你会得到什么图像?你讲得到”白噪音”图像,看起来像老式电视机没有信号时的样子,如图5。12(左)所见。因为可能的配置的集合(接近自然图像的流形)值发生在整个像素配置集合的很像一部分空间内。雷斯蒂,如果你通过随机挑选字母生成一份文档,得到一份有意义的英文文本的概率有多大?几乎为0。因为大多数长字母序列并不对应自然语言序列:自然语言序列的分布发生在整个字符序列空间的很小一部分空间内。
上面的思想实验和很多流形学习文献的实验结果是一致的(Cayton, 2005; Narayanan and Mitter, 2010; Scholkopf et al., 1998; Roweis and Saul, 2000; Tenenbaum et al., 2000; Brand, 2003; Belkin and Niyogi, 2003; Donoho and Grimes,2003; Weinberger and Saul, 2004),很显然,对于大量类型的AI感兴趣的数据集,流形假设是对的:数据产生的分布都集中在一个非常少量的维度上,诸如17章中图17.4中的卡通。17章讨论了表示形式和流形学习的关系:如果数据分布集中在很少的维度上,我们可以将这些维度看作是数据的自然坐标,我们可以将表示形式学习算法看作是将输入空间映射到新的通常低维的空间的方法,这些方法可以捕获到数据中变化的主要维度如表示形式的坐标轴和维度。
流形学习的初始想法(Roweis and Saul, 2000; Tenenbaum et al., 2000)是通过先将数据降维表示(也就是将(x1,x2)变成z1,如图5.8(右)所示),从而降低维度灾难的效果。通过学习到数据的某种转换(通常是非线性的,不想前面5.9.1介绍的PCA)实现降维,这些转换对于大多数训练数据是可逆的,例如保持了输入样本的信息。他只能从低维表示形式中重构输入样本,因为他们存在于低维的流形中。这基本就是自动编码器(15章)如何训练的。
通过将数据非线性映射到低维度新空间的愿望,我们可以通过只看相关的维度即较小的感兴趣区域集合来消减维度灾难(图5.9中的格子)。然而,的确可以是17章中的这种情况,流形们可以高度扭曲和包含大量缠绕,需要大量区域要区分(流形的每个角落的上下)。即使我们要讲描述100*100像素的二值图像的10000维向量降维成一个100维向量,2^100仍然太大了。同样地,仅仅使用对训练数据的局部泛化,空间也太大了——平滑先验发可能有用但是不足的。也许是这样,尽管数据的有效维度可以很小,一些样本也许会散落到主流形之外,并且我们不想系统地丢失信息。稀疏表示变成一种表示尽管偶尔发生更高维但多数情况下是低维的数据的可能表示方式。对于那些子元素大多数情况下为0的高维表示形式这是可以做到的。我们能看到有效的维度(非零元素的数量)能够随着我们在输入空间的位置而改变,这非常管用。稀疏表示将在15.8中讨论。