在机器学习领域,处理高维向量不仅常见,而且至关重要。以流行的模型如Transformers架构为例,比如BERT模型就使用768维向量来编码它处理的输入序列的令牌,以更好地捕捉数据中的复杂模式。考虑到我们的大脑难以将视觉超过三维,使用768维向量确实令人惊叹!
尽管一些机器学习和深度学习模型在这些高维场景中表现出色,但它们也带来了许多挑战。在本文中,我们将探索“维数诅咒(curse of dimensionality)”的概念,解释与之相关的一些有趣现象,深入了解这些现象背后的数学原理,并讨论它们对机器学习模型的一般影响。
什么是维数诅咒?
人们常常假设在三维空间中熟悉的几何概念在更高维度空间中的行为类似。实际并非如此。随着维度的增加,许多有趣和违反直觉的现象会出现。维数诅咒是由著名数学家理查德·贝尔曼创造的一个术语,指的是所有这些令人惊讶的效应。
高维的特别之处在于空间的“体积”(我们很快会更详细地探索这一点)呈指数级增长。以一维空间中的1到10的数轴为例,这条线上有10个整数。如果将其扩展到二维,就变成了一个点数为10×10=100的正方形。现在考虑“仅”80维,将得到10^80个点,这个数字是宇宙中原子的数量。
换句话说,随着维度的增加,空间的体积呈指数增长,导致数据变得越来越稀疏。
高维空间是“空的”
考虑另一个例子。我们想计算单位超立方体(每个边长为1)中两点之间的最远距离:
- 在一维中(超立方体是从0到1的线段),最大距离简单地是1。
- 在二维中(超立方体形成一个正方形),最大距离是对角线上[0,0]和[1,1]两点之间的距离,通过勾股定理计算得出√2。
- 将此概念扩展到n维,点[0,0,...,0]和[1,1,...,1]之间的距离是√n。这个公式的出现是因为每增加一个维度,都会在平方根的求和中增加一个1的平方(同样通过勾股定理得出)。
有趣的是,随着维度n的增加,超立方体内的最大距离以O(√n)的速度增长。这种现象说明了递减效应,即维度空间的增加导致空间距离的增加比例较小。这种效应及其影响将在本文接下来的部分中进一步探讨。
高维中的距离概念
我们已经初步了解了高维空间如何使距离概念几乎变得无意义。但这究竟是什么意思,我们能否用数学来形象地描述这一现象?
让我们考虑一个实验,使用之前定义的同一个n维单位超立方体。首先,我们通过在这个立方体中随机抽取许多点来生成一个数据集:实际上是在模拟一个多变量均匀分布。然后,我们从该分布中抽取另一个点(一个“查询”点),并观察其与数据集中最近和最远邻居的距离。
以下是相应的Python代码:
我们还可以绘制这些距离:
- 随着维度n增加,到最近点和最远点的距离
使用对数尺度,我们观察到到最近邻居和最远邻居的距离的相对差随着维度的增加而减小。
这是一种非常不直观的行为:如前一节所述,由于空间体积的指数增长,各点之间非常稀疏,但与此同时,点与点之间的相对距离却变得更小。
最近邻概念的消失
这意味着随着空间维度的增加,距离的概念变得越来越不相关和不具区分性。如你所想,这对于完全依赖距离的机器学习算法,如kNN,构成了问题。
数学:n维球体
现在我们将讨论一些其他有趣的现象。为此,我们需要了解n维球体。n维球体是在n维空间中球体的推广。半径为R的n维球体可以视为原点为中心,所有点到原点的直线距离不大于R的一个几何体。
考虑半径为1的情况。1维球体是线段[-1, 1]。2维球体是由单位圆界定的圆盘,其方程为x² + y² ≤ 1。3维球体(我们通常称之为“球体”)的方程是x² + y² + z² ≤ 1。如你所见,我们可以将这个定义扩展到任何维度:
现在的问题是:这个球体的体积是多少?这并非一个简单的问题,需要大量的数学计算,这里不予详述。
经过一番有趣的(积分)计算,你可以证明n维球体的体积可以如下表示,其中Γ表示伽马函数。
伽马函数(Gamma function)是阶乘概念在实数和复数上的推广。伽马函数在数学的许多领域都非常重要,特别是在概率论、统计学、组合数学以及物理中的量子物理和热力学等领域。在高维几何和积分中,伽马函数还用来计算多维球体的体积。
例如,当R = 1且n = 2时,体积是πR²,因为Γ(2) = 1。这确实是2维球体的“体积”(在这种情况下也称为圆的“面积”)。
然而,除了是一个有趣的数学挑战之外,n维球体的体积还具有一些非常令人惊讶的属性。
随着维度n的增加,n维球体的体积趋于0。
这对所有半径都成立,但让我们用几个R的值来直观地观察这一现象。
- 随着维度增加,不同半径的n维球体的体积
如你所见,它不仅趋于0,而且开始增加后又减少到0。对于R = 1,体积最大的是5维球体,而达到最大值的n值随着R的增加而向右移动。
下面是单位n维球体体积的前10个值。
- 不同n值的单位n维球体的体积
高维空间中单位球体的体积主要集中在其表面附近。
在小维度时,球体的体积看起来相当“均匀”:在高维度中情况并非如此。
- 球壳
考虑一个半径为R的n维球体和另一个半径为R-dR的n维球体,其中dR非常小。位于这两个球体之间的n维球体的部分称为“球壳”,对应于球体表面附近的部分。我们可以计算球体“内部”体积与薄球壳体积的比率。
- 随着n的增加,(内部体积/总体积)比率
正如我们所看到的,它非常快地趋近于0:在高维空间中,几乎所有的体积都集中在薄球壳中。例如,对于R = 1,dR = 0.05,且n = 50,大约92.3%的体积集中在薄球壳中。这表明在更高的维度中,体积存在于“角落”。这再次与我们之前看到的距离概念的扭曲相关。
注意,单位超立方体的体积(这里,指以零为中心,边长为2的立方体)是2^n。而在非常高的维度中,单位球体基本上是“空的”,与之相对的,单位超立方体的点数呈指数增加。再次,这表明点的“最近邻居”的概念因为在大的n时,几乎没有点在查询点q的距离R内,而失去了效力。
维数诅咒、过拟合和奥卡姆剃刀原理
维数诅咒与过拟合原理密切相关。由于空间体积随维度呈指数增长,我们需要非常大的数据集来充分捕捉和建模高维模式。更糟糕的是:为了克服这一限制,我们需要的样本数量也需要随着维度指数增长。这种特征众多但数据点相对较少的情况,特别容易发生过拟合。
奥卡姆剃刀原理建议,相较于复杂模型,简单模型通常更优,因为它们不太可能发生过拟合。这一原理在高维环境(维数诅咒发挥作用的地方)尤为相关,因为它鼓励降低模型复杂度。
在高维场景中应用奥卡姆剃刀原理可能意味着通过降维(如通过PCA、特征选择等方法),从而减轻维数诅咒的某些影响。简化模型结构或特征空间有助于管理稀疏数据分布,并使距离度量再次变得有意义。例如,降维通常是应用kNN算法之前的一个常见初步步骤。更现代的方法,如近似最近邻(ANNs)也作为处理高维场景的一种方式出现。
高维的优势
尽管我们已经概述了机器学习中高维设置的挑战,但也存在一些优势!
- 高维可以增强线性可分性,使得像kernel methods这样的技术更有效。
- 此外,深度学习架构特别擅长在高维空间中导航和提取复杂模式。
如同机器学习领域常见的,这是一种权衡:利用这些优势需要平衡增加的计算需求与潜在的模型性能提升。
希望这能让你了解高维中“怪异”几何的本质以及它为机器学习模型开发带来的许多挑战。我们看到,在高维空间中,数据非常稀疏,但也倾向于集中在角落,且距离失去了其用途。
虽然“维数诅咒”突出了高维空间中的重大限制,但令人兴奋的是,看到现代深度学习模型越来越善于应对这些复杂性。例如,考虑使用非常高维向量的嵌入模型或最新的大型语言模型(LLMs),它们更有效地识别和建模文本模式。
热门跟贴