06 | 模型的设计准则

上学时你一定过学习新知识的经历:首先要结合老师的讲解进行消化理解,接着要做些练习题找到问题并加强巩固,最后通过考试来检验学习的最终效果。机器学习需要根据问题特点和已有数据确定具有最强解释性或预测力的模型,其过程也可以划分为类似于“学习-练习-考试”这样的三个阶段,每个阶段的目标和使用的资源可以归纳如下:

  • 模型拟合(model fitting):利用训练数据集(training set)对模型的普通参数进行拟合;

  • 模型选择(model selection):利用验证数据集(validation set)对模型的超参数进行调整,筛选出性能最好的模型;

  • 模型评价(model assessment):利用测试数据集(test set)来估计筛选出的模型在未知数据上的真实性能。

接下来的三篇文章将分别围绕模型处理这三个阶段展开论述,首先将从模型拟合开始。

虽然模型拟合的任务是计算未知的参数,但它还要解决一个更重要的问题,就是在拟合参数前确定模型的形式,或者说到底要拟合哪些参数。模型拟合本身只是简单的数学问题,交给计算机就可以万事大吉,可模型设计却颇有门道,涉及到更多的思考:一方面,模型的合理性很大程度上取决于待解决问题本身的特征;另一方面,模型的复杂度也要和问题的复杂度相匹配。在机器学习中,对这两个基本准则的理解催生了两个基本的规律,分别是无免费午餐定理奥卡姆剃刀原则

“天下没有免费的午餐”是人尽皆知的俗语,这朴素的道理在机器学习中同样适用。通俗地说,无免费午餐(No Free Lunch, NFL)定理证明了任何模型在所有问题上的性能都是相同的,其总误差和模型本身是没有关系的。

这样的结论好像有些反直觉:既然大家谁都不比谁好,那关于机器学习算法和模型不计其数的研究又有什么意义呢?其实这种想法误解了NFL定理的一个核心前提,也就是每种问题出现的概率是均等的,每个模型用于解决所有问题时,其平均意义上的性能是一样的

所有模型在等概率出现的问题上都有同样的性能,这件事可以从两个角度来理解:一是从模型的角度来看,如果单独拿出一个特定的模型来观察的话,这个模型必然会在解决某些问题时误差较小,而在解决另一些问题时误差较大;二是从问题的角度来看,如果单独拿出一个特定的问题来观察的话,必然有某些模型在解决这些问题时具有较高的精度,而另一些模型的精度就没那么理想了。

如果把不同模型看成一个班级里的不同学生,不同问题看成考试时的不同科目,NFL定理说的就是在这个班里,所有学生期末考试的总成绩都是一样的,既然总成绩一样,每一科的平均分自然也是一样的。这一方面说明了每个学生都有偏科,数学好的语文差,语文好的数学差,如果数学语文都好,那么英语肯定更差;另一方面也说明了每个科目的试题都有明显的区分度,数学有高分也有低分,语文有高分也有低分,不会出现哪一科上大家都是90分或者大家都是30分的情形。

NFL定理最重要的指导意义在于先验知识的使用,也就是具体问题具体分析。机器学习的目标不是放之四海而皆准的通用模型,而是关于特定问题有针对性的解决方案。因此在模型的学习过程中,一定要关注问题本身的特点,也就是关于问题的先验知识。这就像学习数学有学习数学的方法,这套方法用来学习语文未必会有良好的效果,但它只要能够解决数学的问题就已经很有价值了。脱离问题的实际情况谈论模型优劣是没有意义的,只有让模型的特点和问题的特征相匹配,模型才能发挥最大的作用

相比于1995年提出的NFL定理,奥卡姆剃刀可谓历史悠久,它诞生于公元14世纪圣方济各会修士奥卡姆的威廉笔下。在机器学习的场景下,奥卡姆剃刀(Occam's Razor)可以理解为如果有多种模型都能够同等程度地符合同一个问题的观测结果,那就应该选择其中使用假设最少的,也就是最简单的模型。尽管越复杂的模型通常能得到越精确的结果,但是在结果大致相同的情况下,模型就越简单越好

奥卡姆剃刀是人类思维的一种直观的体现,你我在不经意间都会用到它:当看到1,2,4,8这几个数时,对下一个出现的数字,你的第一反应一定是16,因为这一系列数字里蕴含的最简单的规律是等比数列关系,而不是什么包含十几二十个参数的高阶多项式,这个复杂的结果直接被头脑中的那把剃刀无意识地砍掉了。

在科学方法中,奥卡姆剃刀对简单性的偏好并非逻辑上不可辩驳的金科玉律,它更多的是基于可证伪性的标准。一个问题存在多个可接受的模型,其中的每一个都可以演化出无数个更为复杂的变体,其原因在于可以把任何解释中的错误归结于某种特例的出现,将这个特例纳入模型就可以避免原来错误的发生。更多特例的引入无疑会降低模型的通用性和可解释性,把薄薄的教材变成厚重的词典,这就是奥卡姆剃刀偏爱简单模型的原因。

本质上说,奥卡姆剃刀的关注点是模型复杂度。机器学习学到的模型应该能够识别出数据背后的模式,也就是数据特征和数据类别之间的关系。当模型本身过于复杂时,特征和类别之间的关系中所有的细枝末节都被捕捉,主要的趋势反而在乱花渐欲迷人眼中没有得到应有的重视,这就会导致过拟合(overfitting)的发生。反过来,如果模型过于简单,它不仅没有能力捕捉细微的相关性,甚至连主要趋势本身都没办法抓住,这样的现象就是欠拟合(underfitting)。

过拟合也好,欠拟合也罢,都是想避免却又无法避免的问题。在来自真实世界的数据中,特征与类别之间鲜有丁是丁卯是卯的明确关系,存在的只是在诸多特征织成的罗网背后若即若离、若隐若现的相关性。用较为简单的模型来模拟复杂的数据生成机制,欠拟合的发生其实是不可避免的。可欠拟合本身还不是更糟糕的,更糟糕的是模型虽然没有找到真正的相关性,却自己脑补出一组关系,并把自己的错误的想象当做真实情况加以推广和应用,得到和事实大相径庭的结果——其实就是过拟合。

模型复杂度与拟合精度之间的关系可以这么来理解:过于简单的模型就像给三五百人一起上大课,不管听课的学生水平如何参差不齐,上课的内容都固定不变,或者变化很小。这种教学的效果一定不好:水平高的学生不用听也会,水平差的学生听了也不会,就像欠拟合的模型在训练集上都没有良好的表现,更遑论泛化性能了。

相比之下,过于复杂的模型则是一对一的闭门辅导,针对每个学生不同的问题做出不同的解答,数学不好的补数学,语文不好的补语文。这样因材施教的教学效果固然优良,却因为它的针对性而没法推广,就像过拟合的模型能够在训练集上表现优异,却因为针对性过强,同样不具备良好的泛化性能。

模型的复杂度也可以从误差组成的角度一窥端倪。在“人工智能基础课”的第一季中曾介绍过,模型的误差包括三个部分:偏差(bias),方差(variance)和噪声(noise)。

三者中的噪声也叫作不可约误差(irreducible error),体现的是待学习问题本身的难度,并不能通过模型的训练加以改善。噪声来源于数据自身的不确定性,如果按照$y = x + \epsilon, \epsilon ~ N(0, \sigma)$生成数据,并对生成的数据进行线性拟合的话,高斯噪声的方差$\sigma ^ 2$就属于不可约误差。噪声的方差$\sigma ^ 2$越大,线性拟合的难度也就越高。

除了噪声之外,偏差和方差都与模型本身有关,两者对误差的影响可以用误差的偏差-方差分解(bias-variance decomposition)来表示。偏差的含义是模型预测值的期望和真实结果之间的区别,如果偏差为0,模型给出的估计的就是无偏估计。但这个概念是统计意义上的概念,它并不意味着每个预测值都与真实值吻合。方差的含义则是模型预测值的方差,也就是预测值本身的波动程度,方差越小意味着模型越有效。抛开噪声不论,模型的误差就等于偏差的平方与方差之和。

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

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

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

今天我和你分享了在设计机器学习的模型时,需要考虑的一些共性问题,其要点如下:

  • 无免费午餐定理说明模型的选取要以问题的特点为根据;

  • 奥卡姆剃刀说明在性能相同的情况下,应该选取更加简单的模型;

  • 过于简单的模型会导致欠拟合,过于复杂的模型会导致过拟合;

  • 从误差分解的角度看,欠拟合模型的偏差较大,过拟合模型的方差较大。

在实际应用中,欠拟合和过拟合是不太可能同时被抑制的,现实的考量是“两害相权取其轻”。那么你认为是应该优先控制欠拟合还是过拟合呢?

欢迎发表你的观点。

精选留言

  • 林彦

    2018-06-16 17:30:09

    开始模型的误差比较大,也就是偏差较大,需要先解决欠拟合的问题。数据量不够大的情况下,容易产生过拟合,这时就要考虑降低方差,减小过拟合。从训练的步骤看,欠拟合需要先解决。
    作者回复

    赞同,私以为欠拟合的危害更大

    2018-06-18 20:37:27

  • 吹胡子爷爷

    2018-07-30 21:28:46

    老师,我看这个有点费劲,有没有先修课推荐?看来我得去复习复习…不对,是重新学习学习
    作者回复

    可以参考前面的基础课专栏哈,后面我会在总结文章里推几本参考书,有些有中译,可以读一读。不需要急于求成,看一点懂一点就是收获。

    2018-08-01 20:18:30

  • 建强

    2020-11-08 13:43:52

    思考题:
    模型训练首先要控制欠拟合,因为欠拟合意味着模型过于简单,在训练数据集中可能存在着较大的偏差,即模型本身还未达标,不达标的模型在测试集中的偏差就更大了,即模型根本无法使用;而过拟合意味着模型过于精细,对训练集中的非主流数据(噪声)也进行了拟合,虽然在训练集中可以打满分,但在测试集中效果可能与期望的效果大相径庭,即过拟合的模型只能用于训练集中,但相比之下,欠拟合的模型危害更大,这就好比在一个桶里装水,既要把水装满,又不能使水溢出,那么,首先是水要装满,然后再控制溢出,如果连水都装不满,又何来溢出,所以模型训练首先是控制欠拟合。

    以上是我个人的一点肤浅理解,请老师指正。
  • hanlimo

    2018-09-17 13:22:13

    应该还是先欠拟合吧,业务先跑起来首先要保证不“丢”数据,过拟合的问题可以随着业务的深入逐步完善。
    作者回复

    赞同

    2018-09-21 19:51:48

  • ifelse

    2023-05-28 12:39:39

    学习打卡
  • Genesis 🌟

    2018-06-17 11:15:14

    王老师您好老师,我是一名开学研一的学生,导师让掌握深度学习,请问王老师以后会开这方面的课程吗 或者老师有什么推荐的资源适合初学者看一下
    作者回复

    了解深度学习可以先看看Bengio的Learning deep architecture for AI了解下思想,再读深度学习那本大书,oreilly的fundamentals of deep learning也可以看看。还有就是论文了。

    2018-06-18 20:44:30

  • 袁明泉

    2018-06-16 10:27:45

    Bagging可以降低variance,boosting可以降低bias。有没有可能把两个方法同时用,同时降低bias和variance呢?
    作者回复

    Boosting之后得到较好的模型后,再做bagging就不会有什么提升了,好事成双终归是可遇不可求。

    2018-06-17 11:38:05

  • loomz

    2025-08-06 11:56:19

    神经网络这套技术,其实基本的原理很简单。
    你只要上过小学,我保证你可以听懂。

    神经网络产生的结果就是一个类似一个万能的拟合函数。
    啥叫拟合呢?
    就是无限逼近。

    我们这个世界上,有两种方法论,你需要用不同的方式来搞定它。
    先说方案1:
    比如说图1,是个长方形。
    你要算这个长方形的周长,就很简单,就是(长+宽)X2。
    长,宽,你都是可以量出来的,对不对?

    对于这种信情况,你要计算,就编一个程序,别人输入长宽,你就相加,乘2就完了。
    这就是编程解决问题的方法。
    100%正确,不存在问题的。

    但是有些事物,比如说圆,你能告诉我周长多少吗?
    它是个弯的,怎么量?
    不好量,对吧。

    换个思路,你可以无限逼近。
    见图2,我假设这个圆是六边形,我是不是可以算出周长?
    当然,这个离一个圆的真实周长差很远。
    但是我变成十二边形呢?二十四边形呢?四十八边形呢?
    65535边形呢?n边形呢?

    是不是无限逼近圆的真实周长?
    只要增加参数n,就可以无限逼近。

    神经网络,就是用很多层,很多数据来拟合某一个事情。
    比如说人脸,只要你数据足够多,神经网络设计的合理,就能识别这张脸。
    就是无限逼近。

    现在人工智能对人脸的识别能力已经超过人类。

    语言也是一样的,足够多的文本,你就能通过发现文本之间的统计规律。
    也是无限逼近。
    比如说一种水果叫苹(),告诉我这个字应该填什么?
    一定是“果”,对不对?

    现在,你可以回答一个问题,人工智能到底有没有用?
    一定是有用的。

    因为这个世界上,并不是所有的事物都可以用我们前面讲的方法1的方式来表示的。
    其余的部分,只能用拟合
  • loomz

    2025-08-06 11:55:09

    https://weibo.com/3207410361/PEqrb5962
  • 杨家荣

    2020-01-31 23:26:16

    极客时间
    21天打卡行动 44/21
    <<机器学习40讲/06>>模型的设计准则
    回答老师问题:
    在实际应用中,欠拟合和过拟合是不太可能同时被抑制的,现实的考量是“两害相权取其轻”。那么你认为是应该优先控制欠拟合还是过拟合呢?
    机器开始的控制欠拟合,在数据量开始加大的时候,再抑制过拟合;
    今日所学:
    1,机器学习具有最强解释性或预测力的模型三个阶段:模型拟合,模型选择,模型评价
    2,无免费午餐NFL 定理:每种问题出现的概率是均等的,每个模型用于解决所有问题时,其平均意义上的性能是一样的。
    3,NFL 定理最重要的指导意义在于先验知识的使用,也就是具体问题具体分析;
    4,脱离问题的实际情况谈论模型优劣是没有意义的,只有让模型的特点和问题的特征相匹配,模型才能发挥最大的作用。
    5,奥卡姆剃刀:在结果大致相同的情况下,模型就越简单越好。
    6,在科学方法中,奥卡姆剃刀对简单性的偏好并非逻辑上不可辩驳的金科玉律,它更多的是基于可证伪性的标准;
    7,本质上说,奥卡姆剃刀的关注点是模型复杂度;
    8,模型的误差包括三个部分:偏差(bias),方差(variance)和噪声(noise)。
    9,噪声也叫作不可约误差(irreducible error);
    10,模型的复杂度越低,其偏差也就越高;模型的复杂度越高,其方差也就越高。
    重点:
    无免费午餐定理说明模型的选取要以问题的特点为根据;
    奥卡姆剃刀说明在性能相同的情况下,应该选取更加简单的模型;
    过于简单的模型会导致欠拟合,过于复杂的模型会导致过拟合;
    从误差分解的角度看,欠拟合模型的偏差较大,过拟合模型的方差较大。
  • 张一鸣

    2019-11-28 19:53:51

    老师,我觉得直接这么讲没有实际的例子或者简单的应用太宽泛了,对于初级和高级的过度,理解起来看不到那么深,也没法理解的那么直观
  • King5

    2018-07-23 08:53:40

    模型拟合适合非数字类的吗,数字类的都可以用传统的计算方法,感觉没必要套上机器学习的外套
    作者回复

    非数字类最终也要转成数字类,要不然没法度量。

    2018-07-23 22:39:16

  • 你不是我

    2018-07-05 13:32:42

    内容很精简,但是在吃下这些知识后,又不知道具体如何实现。老师可不可以在文章中,添加一些操作案例,加以解释,让知识和实际有一个很好的切入点。
    作者回复

    在后面介绍不同模型时会有相应的toy example。

    2018-07-07 14:40:20

  • 青刀快马

    2018-06-24 11:02:57

    那具体如何创建一个模型呢?