机器学习中“维数灾难”的使用与以下事实有关:人们可以轻松地想象一个要学习的目标函数非常不平滑,例如,相对于维数(标量输入变量的数量),具有指数数量的模式(起伏)。 想象一下,为了产生良好的预测,我们的学习者需要在n个变量中的每个变量的10个不同值之间进行区分(产生实质上不同的答案)。然后,可能需要区分输入n维向量的10 ^ n个不同配置。 n容易达到数百,数千或更多,这远远超过了人们希望收集的示例数量(甚至是宇宙中的原子数量)。 对于大多数学习算法,尤其是经典的非参数学习算法(例如,最近邻居,Parzen,高斯核SVM,高斯核高斯过程等),学习将需要为这些配置中的每一个查找至少一个例子。为了产生围绕这些配置中的一个正确答案,该配置(至少要尽可能涵盖所关注的配置的所有变体),该答案与其他附近配置所需的目标值不同。 但是,真正的困难不在于维度,而在于要学习的目标函数的复杂度(模式数,起伏数,输入空间中必须区分的不同区域数)。一个数字图像可能具有32x32 = 1024个输入灰度像素,但可能需要学习的功能(例如,用于区分3和4的分类器)可能会非常平滑(事实上,在这种情况下,线性分类器已经可以做得很合理了)。 如果有所谓的流形(低维区域),示例在附近汇聚,那么实际关注的维数可能远小于输入变量的数量。但是,即使可以在低维流形上捕获目标函数,真正重要的是它在那个流形上有多少变化,即需要区分的不同区域的数量,因为这将对应于实现良好性能所需的训练示例的数量,当使用标准的非参数本地学习时(如上所述)。 另一方面,即使目标函数显然非常复杂(例如,需要区分大量的相邻配置),无论是在高维还是低维中,只要实际组织了这种明显的复杂度,就仍然可以从相当少的训练示例中很好地概括。 如果这些起伏有某种结构(你能想到的最简单的就是相同模式的重复),那么一些学习算法就有可能捕捉到这种结构。要做到这一点,学习算法必须能够非局部地推广,甚至推广到训练样本未“覆盖”的区域,远离训练样本。因此,一个有趣的研究问题是,一些算法在多大程度上有可能以这种非局部的方式进行推广。