通过学习得到的模型对应了假设空间中的一个假设。于是,图1.2的西瓜版本空间给我们带来一个麻烦:现在有三个与训练集一致的假设,但与它们对应的模型在面临新样本的时候,却会产生不同的输出。例如,对(色泽=青绿;根蒂=蜷缩;敲声=沉闷)这个新收来的瓜,如果我们采用的是“好瓜。(色泽=)∧(根蒂=蜷缩)∧(敲声=)”,那么将会把新瓜判断为好瓜,而如果采用了另外两个假设,则判断的结果将不是好瓜。那么,应该采用哪一个模型(或假设)呢?
尽可能特殊即“适用情形尽可能少”;尽可能一般即“适用情形尽可能多”。
对“根蒂”还是对“敲声”更重视,看起来和属性选择,亦称“特征选择”(featureselection)有关,但需注意的是,机器学习中的特征选择仍是基于对训练样本的分析进行的,而在此处我们并非基于特征选择做出对“根蒂”的重视;这里对“根蒂”的信赖可视为基于某种领域知识而产生的归纳偏好。关于特征选择方面的内容参见(第11章 特征选择与稀疏学习)。
若仅有表1.1中的训练样本,则无法断定上述三个假设中哪一个“更好”。然而,对于一个具体的学习算法而言,它必须要产生一个模型。这时,学习算法本身的“偏好”就会起到关键的作用。例如,若我们的算法喜欢“尽可能特殊”的模型,则它会 选择“好瓜。(色泽=)∧(根蒂=蜷缩)∧(敲声=浊响)”;但若我们的算法喜欢“尽可能一般”的模型,并且由于某种原因它更“相信”根蒂,则它会选择“好瓜。(色泽=)∧(根蒂=蜷缩)∧(敲声=*)”。机器学习算法在学习过程中对某种类型假设的偏好,称为“归纳偏好”(inductivebias),或简称为“偏好”。
任何一个有效的机器学习算法必有其归纳偏好,否则它将被假设空间中看似在训练集上“等效”的假设所迷惑,而无法产生确定的学习结果。可以想象,如果没有偏好,我们的西瓜学习算法产生的模型每次在进行预测时随机抽选训练集上的等效假设,那么对这个新瓜“(色泽=青绿;根蒂=蜷缩;敲声=沉闷)”,学得模型时而告诉我们它是好的、时而告诉我们它是不好的,这样的学习结果显然没有意义。
归纳偏好的作用在图1.3这个回归学习图示中可能更直观。这里的每个训练样本是图中的一个点(x,y),要学得一个与训练集一致的模型,相当于找到一条穿过所有训练样本点的曲线。显然,对有限个样本点组成的训练集,存在着很多条曲线与其一致。我们的学习算法必须有某种偏好,才能产出它认为“正确”的模型。例如,若认为相似的样本应有相似的输出(例如,在各种属性上都很相像的西瓜,成熟程度应该比较接近),则对应的学习算法可能偏好图1.3中比较“平滑”的曲线A而不是比较“崎岖”的曲线B。
图1.3 存在多条曲线与有限样本训练集一致
归纳偏好可看作学习算法自身在一个可能很庞大的假设空间中对假设进行选择的启发式或“价值观”。那么,有没有一般性的原则来引导算法确立“正确的”偏好呢?“奥卡姆剃刀”(Occam’s razor)是一种常用的、自然科学研究中最基本的原则,即“若有多个假设与观察一致,则选最简单的那个”。如果采用这个原则,并且假设我们认为“更平滑”意味着“更简单”(例如曲线A更易于描述,其方程式是y=-x2+6x+1,而曲线B则要复杂得多),则在图1.3中我们会自然地偏好“平滑”的曲线A。
然而,奥卡姆剃刀并非唯一可行的原则。退一步说,即便假定我们是奥卡姆剃刀的铁杆拥趸,也需注意到,奥卡姆剃刀本身存在不同的诠释,使用奥卡姆剃刀原则并不平凡。例如对我们已经很熟悉的西瓜问题来说,“假设1:好瓜。(色泽=)∧(根蒂=蜷缩)∧(敲声=浊响)”和假设2:“好瓜。(色泽=)∧(根蒂=蜷缩)∧(敲声=*)”这两个假设,哪一个更“简单”呢?这个问题并不简单,需借助其他机制才能解决。
事实上,归纳偏好对应了学习算法本身所做出的关于“什么样的模型更好”的假设。在具体的现实问题中,这个假设是否成立,即算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得好的性能。
让我们再回头看看图1.3.假设学习算法a基于某种归纳偏好产生了对应于曲线A的模型,学习算法b基于另一种归纳偏好产生了对应于曲线B的模型。基于前面讨论的平滑曲线的某种“描述简单性”,我们满怀信心地期待算法a比b更好。确实,图1.4(a)显示出,与B相比,A与训练集外的样本更一致;换言之,A的泛化能力比B强。
但是,且慢!虽然我们希望并相信a比b更好,但会不会出现图1.4(b)的情况:与A相比,B与训练集外的样本更一致?
图1.4 没有免费的午餐(黑点:训练样本;白点:测试样本)
这里只用到一些非常基础的数学知识,只准备读第1章且有“数学恐惧”的读者可以跳过这个部分而不会影响理解,只需相信,上面这个看起来“匪夷所思”的结论确实是成立的。
很遗憾,这种情况完全可能出现。换言之,对于一个学习算法a,若它在某些问题上比学习算法b好,则必然存在另一些问题,在那里b比a好。有趣的是,这个结论对任何算法均成立,哪怕是把本书后面将要介绍的一些聪明算法作为a而将“随机胡猜”这样的笨拙算法作为b。惊讶吗?让我们看看下面这个简短的讨论:
为简单起见,假设样本空间和假设空间都是离散的。令P(h|X,a)代表算法a基于训练数据X产生假设h的概率,再令f代表我们希望学习的真实目标函数。a的“训练集外误差”,即a在训练集之外的所有样本上的误差为
其中Ⅱ(·)是指示函数,若·为真则取值1,否则取值0。
若f均匀分布,则有一半的f对x的预测与h(x)不一致。
考虑二分类问题,且真实目标函数可以是任何函数↦{0,1},函数空间为{0,1}||。对所有可能的f按均匀分布对误差求和,有
式(1.2)显示出,总误差竟然与学习算法无关!对于任意两个学习算法a和b,
们都有
严格的NFL定理证明比这里的简化论述繁难得多
也就是说,无论学习算法a多聪明、学习算法b多笨拙,它们的期望性能竟然相同!这就是“没有免费的午餐”定理(No Free Lunch Theorem,简称NFL定理)[Wolpert,1996;Wolpert and Macready,1995].
这下子,读者对机器学习的热情可能被一盆冷水浇透了:既然所有学习算法的期望性能都跟随机胡猜差不多,那还有什么好学的?
我们需注意到,NFL定理有一个重要前提:所有“问题”出现的机会相同、或所有问题同等重要。但实际情形并不是这样。很多时候,我们只关注自己正在试图解决的问题(例如某个具体应用任务),希望为它找到一个解决方案,至于这个解决方案在别的问题、甚至在相似的问题上是否为好方案,我们并不关心。例如,为了快速从A地到达B地,如果我们正在考虑的A地是南京鼓楼、B地是南京新街口,那么“骑自行车”是很好的解决方案;这个方案对A地是南京鼓楼、B地是北京新街口的情形显然很糟糕,但我们对此并不关心。
事实上,上面NFL定理的简短论述过程中假设了的均匀分布,而实际情形并非如此。例如,回到我们熟悉的西瓜问题,考虑{假设1:好瓜。(色泽=)∧(根蒂=蜷缩)∧(敲声=浊响)}和{假设2:好瓜。(色泽=)∧(根蒂=硬挺)∧(敲声=清脆)}。从NFL定理可知,这两个假设同样好。我们立即会想到符合条件的例子,对好瓜(色泽=青绿;根蒂=蜷缩;敲声=浊响)是假设1更好,而对好瓜(色泽=乌黑;根蒂=硬挺;敲声=清脆)则是假设2更好。看上去的确是这样。然而需注意到,“(根蒂=蜷缩;敲声=浊响)”的好瓜很常见,而“(根蒂=硬挺;敲声=清脆)”的好瓜罕见,甚至不存在。
所以,NFL定理最重要的寓意,是让我们清楚地认识到,脱离具体问题,空泛地谈论“什么学习算法更好”毫无意义,因为若考虑所有潜在的问题,则所有学习算法都一样好。要谈论算法的相对优劣,必须要针对具体的学习问题;在某些问题上表现好的学习算法,在另一些问题上却可能不尽如人意,学习算法自身的归纳偏好与问题是否相配,往往会起到决定性的作用。