硕大的汤姆

硕大的汤姆

The official website of Minhua Chen

09 Mar 2019

模型设计的两大准则:NFL与奥卡姆剃刀

NFL(无免费午餐)定理

模型的合理性很大程度上取决于待解决问题本身的特征。

无免费午餐(No Free Lunch, NFL)定理证明了任何模型在所有问题上的性能都是相同的,其总误差和模型本身是没有关系的。可是既然大家谁都不比谁好,那关于机器学习算法和模型不计其数的研究又有什么意义呢?理解 NFL 的关键在于“所有问题”的表述。

从模型的角度来看,如果单独拿出一个特定的模型来观察的话,这个模型必然会在解决某些问题时误差较小,而在解决另一些问题时误差较大。从问题的角度来看,如果单独拿出一个特定的问题来观察的话,必然有某些模型在解决这些问题时具有较高的精度,而另一些模型的精度就没那么理想了。

NFL 定理最重要的指导意义在于先验知识的使用,也就是具体问题具体分析。说白了就是:没有最好的模型,只有最合适的模型

奥卡姆剃刀原则

如果有多种模型都能够同等程度地符合同一个问题的观测结果,那就应该选择其中使用假设最少的,也就是最简单的模型。一个问题存在多个可接受的模型,其中的每一个都可以演化出无数个更为复杂的变体,其原因在于可以把任何解释中的错误归结于某种特例的出现,将这个特例纳入模型就可以避免原来错误的发生。更多特例的引入无疑会降低模型的通用性和可解释性,把薄薄的教材变成厚重的词典,这就是奥卡姆剃刀偏爱简单模型的原因。

过于简单的模型就像做快餐,按照一定的参数标准统一的做几个菜,可能老板和服务员自己都觉得一般般,广大消费者吃起来自然也不会觉得多好吃。就像欠拟合的模型在训练集上都没有良好的表现,别提泛化了。相比之下,过于复杂的模型则是私人定制餐点,你爱吃酸的我就放酸的,可是真的拿到市场上卖,爱吃酸的人并不多,这就像过拟合的模型能够在训练集上表现优异,却不具备良好的泛化性能。

过拟合也好,欠拟合也罢,都是想避免却又无法避免的问题。用较为简单的模型来模拟复杂的数据生成机制,欠拟合的发生其实是不可避免的。可欠拟合本身还不是更糟糕的,更糟糕的是模型虽然没有找到真正的相关性,却自己脑补出一组关系,并把自己的错误的想象当做真实情况加以推广和应用,得到和事实大相径庭的结果——其实就是过拟合。

模型的复杂度也可以从误差组成的角度一窥端倪。模型的误差包括三个部分:偏差(bias),方差(variance)和噪声(noise)。噪声是不可约误差(irreducible error),并不能通过模型的训练加以改善。除了噪声之外,偏差和方差都与模型本身有关,两者对误差的影响可以用误差的偏差 - 方差分解(bias-variance decomposition)来表示。偏差的含义是模型预测值的期望和真实结果之间的区别,如果偏差为 0,模型给出的估计的就是无偏估计。但这个概念是统计意义上的概念,它并不意味着每个预测值都与真实值吻合。方差的含义则是模型预测值的方差,也就是预测值本身的波动程度,方差越小意味着模型越有效。抛开噪声不论,模型的误差就等于偏差的平方与方差之和。

偏差和方差之间的折中与模型自身的特性息息相关。偏差来源于模型中的错误假设,偏差过高就意味着模型所代表的特征和分类结果之间的关系是错误的,对应着欠拟合现象;方差则来源于模型对训练数据波动的过度敏感,方差过高意味着模型对数据中的随机噪声也进行了建模,将本不属于特征 - 分类关系中的随机特性也纳入到模型之中,对应着过拟合现象。

根据上面的理解,就不难得到结论:理想的模型应该是低偏差低方差的双低模型,就像一个神箭手每次都能将箭射进代表 10 环的红心之内;应该避免的模型则是高偏差高方差的双高模型,这样的箭手能射得箭靶上到处窟窿,却没有一个哪怕落在最外层的圆圈里。更加实际的情形是偏差和方差既不会同时较低,也不会同时较高,而是在跷跷板的两端此起彼伏,一个升高另一个就降低。

一般说来,模型的复杂度越低,其偏差也就越高;模型的复杂度越高,其方差也就越高。比较简单的模型像是个斜眼的箭手,射出的箭都在远离靶心的 7 环的某一点附近;比较复杂的模型则是个心理不稳定的箭手,本来是 9 环水平却一下射出 10 环一下射出 8 环。对模型复杂度的调整就是在偏差 - 方差的折中中找到最优解,使得两者之和所表示的总误差达到最小值。这样的模型既能提取出特征和分类结果之间的关系,又不至于放大噪声和干扰的影响。