-->

机器学习40讲_07_06_模型的设计准则

你好,我是王天一。

今天我和你分享的主题是机器学习中模型的设计准则。

上学时,你一定有过学习新知识的经历,首先要结合老师的讲解进行消化理解。

接着呢会做一些练习题,找到问题,并且加强巩固。

最后的话,通过考试来检验学习的最终效果。

机器学习也是一样,它需要根据问题的特点和已有的数据来确定具有最强的解释性或者最好的预测力这样的模型。

那它的过程呢也可以划分为类似于学习、练习和考试这样的三个阶段。

每个阶段的目标还有使用的资源可以归纳如下。

第一个阶段目标是模型的拟合,它会利用训练数据集来对模型的普通参数进行拟合。

第二个阶段呢,他的目标是模型选择会利用验证数据集来对模型的超参数进行调整,从而筛选出性能最好的模型。

第三个阶段的目标是模型评价,它会利用测试数据集来估计筛选出来的模型,在未知数据上真实的一个性能。

接下来这三篇文章呢,我就会分别着围绕着模型处理这三个阶段来展开论述。

那今天呢将首先从模型拟合来开始。

虽然说模型拟合的任务它是计算未知的参数,但它还要解决一个更重要的问题,就是在拟合参数之前确定模型的形式,也就是决定我到底要拟合哪些参数。

模型拟合的话,它只是简单的数学问题啊,交给计算机来计算啊,就万事大吉了。

但是它背后的模型设计啊却颇有门道啊,会涉及更多的思考。

一方面呢模型的合理性很大程度上取决于待解决问题自身的特征。

另外一方面呢,模型的复杂度也要和问题的复杂度相匹配。

在机器学习当中,对这两个基本原则的理解催生出来两个基本的规律是什么呢?分别是无免费午餐定理,还有奥卡姆剃刀原则,天下没有免费的午餐,这是人尽皆知的俗语。

这朴素的道理呢在机器学习当中同样实用。

通俗的说,无免费午餐定理啊,简称叫NFL定理,证明了一点,任何模型在所有问题上的性能都是相同的。

它的总误差和模型本身一点关系都没有,这样的结论是不是有些反直觉呢?既然大家谁都不比谁好,那关于机器狙击算法和模型不计其数的研究,它的意义何在?其实这种想法呢误解了NFL定理的一个核心的前提。

这个前提是什么呢?每种问题出现的概率是均等的。

当我们使用每一个模型去解决所有的问题的时候啊,我再重复一遍去解决所有的问题的手。

它平均意义上的性能是一样,所有模型在等概率出现的问题上会有同样的性能。

这件事儿呢可以从两个角度来理解。

第一个呢是从模型的角度来看啊,如果单独的拿出一个特定的模型来观察的话,那这个模型必然会在解决某些问题的时候有较小的误差。

而在解决另一些问题的时候呢,哎它的误差比较大。

第二个角度呢是从问题的角度来看,如果单独的拿出一个特定的问题来观察的话,必然会存在着某些模型在解决这个问题的时候呢,有较好的性能。

而另外一些模型呢,它的性能就没有那么理想。

如果把不同的模型看成一个班级里面,不同的学生啊,那么不同的问题呢看成考试时的不同科目。

那么NFL定理说的就是什么呢?在这个班里所有学生期末考试的总成绩是一样。

既然总成绩一样的话,那每一科的平均分肯定也是一样。

这一方面呢说明了每一个学生他都有偏科,数学好的,语文差啊,语文好的,数学差,如果数学语文都好的话,那英语肯定更差。

另一方面呢,它也说明了每一个科目都有明显的区分度。

数学有高分,也有低分,语文有高分,也有低分,不会出现说哪一个科目之上啊,大家都是九十分,或者大家都是三十分这样的情形。

Nfl定理,它最重要的指导意义在于说,对于先验知识的应用,也就是通常所说的具体问题具体分析。

机器学习的目标,它不是放之四海而皆准的通用模型,而是关于特定问题,有针对性的解决方案。

因此在模型的学习过程当中啊,一定要关注问题本身的特点,也就是关于问题的这个鲜艳的知识。

这就像学习数学,它有学习数学的方法,这一套跟数字打交道的方法,用来学习语文跟文字打交道的话,未必会有良好的效果。

但是它只要能够解决数学的问题就足够了,它就能够体现出它的价值所在。

所以说脱离问题的实际情况来谈论模型的优劣是没有意义的。

只有让模型的特点和问题的特征相匹配,模型呢才能发挥出最大的作用。

Nfl定理呢它是诞生在一九九五年啊到现在二十多年的历史。

那么和这个年轻的NFL定理相比,奥卡姆剃刀呢可以说是历史悠久了。

它诞生于公元十四世纪圣方吉克会修饰奥卡姆的威廉。

这个人的他的著作当中,在机器学习的场景之下,奥卡姆提到可以理解成如果有多种模型都能够同等程度的符合同一个问题的观测结果,那就应该选择其中使用。

假设最少的那一个,也就是最简单的模型。

尽管说呢越复杂的模型,它通常能够得到越精确的结果啊,但是在结果大致相同的情况下,模型呢是越简单越好。

当然了,在结果相差较大的时候啊,不管复杂还是简单,我们都要选择性能较优的那一个奥卡姆剃刀呢,它是人类思维的一种直观的体现。

啊,虽然可能在日常生活当中不觉得啊,但我们无时无刻不在应用着这样的一个原则。

当看到一二四八这几个数的时候,那么对于下一个出现的数字,你的第一反应一定是十六,为什么呢?很显然,一二四八这几个数字,它服从的是等比数列的关系。

按照这种规律来推导下一个数,就是八乘以二等于十六。

当然呢他们之间啊也可能不是简单的等比数列啊,而是一个复杂的高次多项式。

这中间包含着世界二十个参数计算出来的这样的一个结果。

但是我们的直觉并不会反映出啊这个复杂的多项式,而是直接的选择等比数列啊,这个简单的规律。

在科学方法当中呢,奥卡姆提刀对于简单性的偏好,它并非逻辑上啊不可辩驳的金科玉律,它更多的是基于可证伪性的一个标准。

关于某个问题啊,存在着多个可接受的模型,那么其实每一个可接受的模型都可以演化出无数多个更加复杂的变体,为什么呢?因为我可以把任何解释当中的错误啊归结为某种特例的出现。

那么只要将这个特例纳入到模型当中,就可以避免这个错误的发生。

这样做的话,引入越来越多的特例啊,无疑会降低模型的通用性,还有可解释性。

我设计模型的目的本来是想编一个啊包含主要规律的教材。

可随着这个特例,一个一个不断的加入,这薄薄的教材就会变成一本厚重的词典,这显然不是我想要看到的。

所以呢这也是奥卡姆剃刀偏爱简单模型的一个原因。

本质上说呢,奥卡姆替刀关注的是模型的复杂度。

机器学习学到的模型,它应该能够识别出数据背后的模式,也就是数据特征和数据类别之间的关系。

当这个模型本身过于复杂的时候,特征和类别之间的关系里面呢,所有的细枝末节都会被捕捉到。

主要的趋势反而会在乱花渐欲迷人眼当中没有能够得到应有的重视,这就会导致过拟合的发生。

反过来说啊,如果模型过于简单的话,它不仅没有能力捕捉细微的相关性,甚至连主要趋势本身都没办法抓住。

这时候呢就是欠拟合的发生过拟合也好,欠拟合也罢,都是我想避免啊,但是又无法避免的问题。

在来自于真实世界的数据当中啊,不是我自己用电脑生成的一组数据特征和类别之间啊,鲜有这个丁氏经卯是卯明确的这种关系存在的只是什么呢?由诸多特征织成的罗网背后若即若离,若隐若现的相关性,这个相关性不是那么明确。

如果我们要捕捉的相关性都非常明确的话啊,那么机器学习也就会简单的多了。

用较为简单的模型啊来模拟复杂的数据生成机制的话,欠拟合的发生呢其实是不可避免的,可欠拟合本身还不是最糟糕。

更糟糕的是,模型虽然没能够找到真正的相关性,但是却自己脑补出一组关系,并且把自己这个错误的想象当做真实的情况来加以推广和应用。

这得到的肯定就会是和事实大相径庭的这个结果。

那么这种现象呢其实就是过拟合模型、复杂度和拟合精度之间的关系啊,也可以这样来理解。

过于简单的模型呢,就像给三五百人一起上了一个大课,不管听课的学生啊水平是多么的参差不齐。

我上课的内容都是固定不变啊,或者说只有很小的变化。

这种教学效果呢一般来说啊肯定不会好,水平高的学生不听也会水平低的学生听了也不会。

这就像说欠拟合的模型啊,在训练级上都没有良好的表现,那就更不用说泛化性能。

相比之下呢过于复杂的模型就是一对一的闭门辅导。

针对于不同学生各自独特的问题,做出不同的解答。

数学不好的,我给你补数学啊,语文不好的,我给你补语文。

这样因材施教的教学呢效果固然有两,但是却因为它的针对性而没有办法推广。

我辅导学生a的内容就不能应用到学生b上,因为他们两个问题是不一样的。

这就像说过拟合的模型,能够在训练集上表现优异,却因为太强的针对性啊,同样不会具备良好的泛化性能模型的复杂度,还可以换一个角度来一窥端倪。

我从它的组成上对它进行审视。

在人工智能基础课的第一季当中,我曾介绍过模型的误差呢,它包括三个部分,分别是偏差、方差,还有噪声,三者当中的噪声也叫做不可约的误差。

它体现的是代学习问题本身的难度,并不能够通过模型的训练加以改善。

噪声呢?它本身来源于数据自身的不确定性。

如果我按照一个y等于x加ep系统啊,这里面的ep系统是服从高斯分布啊,均值为零,标准差为西格玛的这样的分布。

如果我要按照这个方式来生成数据的话,那么显然高斯噪声EPCU的方差也就是c格马平方,它就属于不可约的误差,造声的方差越大,那么对生成的数据进行线性拟合的难度也就越高。

而且这个难度呢是不取决于你的模型本身的。

除了噪声之外呢,偏差和方差都和模型本身相关,两者对于误差的影响就是著名的偏差。

方差分解偏差的含义是模型预测值的数学期望啊,也就是平均意义上的预测值和真实结果之间的区别。

如果偏差为零的话,那么模型给出的估计就是一个无偏的估计。

当然这个无偏的估计是统计意义上的啊,并不代表说我每次计算出来的结果都和真实值相吻合啊,不是这样。

方差的含义呢则是模型预测值的这个方差,也就是预测值本身的波动程度。

方差越小,意味着这个模型它就越有效。

抛开噪声不论的话,那么模型的误差它就等于偏差的平方,再加上方差偏差。

方差之间的折中呢和模型自身的特性息息相关,偏差的来源是模型中错误的假设。

偏差过高,就意味着我模型所代表的特征和真实结果之间的关系是错误的。

本来是一个正相关,那我给建模成一个负相关啊,这就关系就错了。

它对应着欠拟合的现象。

方差呢则来源于模型对于训练数据波动的一个过度的敏感。

方差过高通常意味着模型对于数据当中的随机噪声也给它进行了建模。

这就把本来不属于特征啊和分类结果关系当中的随机特性也纳入到了模型之中。

这就对应着过拟合的现象。

根据上面的理解啊,就不难得出结论,理想的模型什么样的呢?低偏差并且低方差这样的双低模型,它就像一个神箭手啊,每一次都能把箭射到代表十环的那个红心之内。

不光射速高,而且表现稳定,反过来应该避免的模型就是高偏差,高方差的这种双高模型。

这样的箭手呢,他能把靶尺上射的到处是窟窿,但是却没有一个落在哪怕是最外层的那个圆圈里。

当然更加实际的情况是什么呢?偏差和方差既不会同时取到较小的值,也不会同时取到较大的值,而是在跷跷板的两端此起彼伏。

这个升高那个就降低,那么这个降低那个就升高。

一般来说呢模型的复杂度越低,它的偏差也就越高啊,模型的复杂度越高,它的方差就会越高。

比较简单的模型呢像是个斜眼的剑手,射出来的箭呢都在远离靶心的七环上。

某一点附近啊射的倒是挺集中的。

比较复杂的模型呢则是个心理不稳定的箭手,本来呢是九环的水平,但是一下能射出十环,下一次又射出八环。

对于模型复杂度的调整,就是在偏差方差的折中当中,哎,找到一个最优解,使得两者之和所表示的总误差达到最小值。

这样的模型呢既能够有效的提取出特征和分类结果之间的关系,又不至于放大噪声和干扰的影响。

今天我和你分享的在设计机器学习的模型的时候啊,需要考虑的一些共性的问题,包含着以下的四个要点。

第一,无免费午餐定理,说明模型的选取要以问题的特点为根据。

第二,奥卡姆剃刀说明,在性能相同的前提下,应该选取更加简单的模型。

第三,过于简单的模型会导致欠拟合。

过于复杂的模型会导致过拟合。

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

在实际应用当中呢,欠拟合过拟合是不太可能被同时抑制的。

一个现实的考量呢,就是两害相权取其轻。

那么在你看来是应该优先控制欠拟合呢,还是优先控制过拟合呢?欢迎发表你的观点。