购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

方差和偏差的权衡

我想大家都听说过差不多先生的故事。差不多先生做什么事情都是马马虎虎,差不多就好,但是最后差不多先生就因为这差一点的“差不多”害死了自己。我想,谁都不想“差一点”,包括人工智能。当机器学习建立了一个模型,当然希望这个模型有很好的预测效果,但是很多时候我们发现,这个模型还是差一点,它在预测方面会出现或多或少的问题。而这个“差一点”的问题很多时候是出在“偏差”和“方差”这两个方面。并且在实践中我们发现,这个“差一点”是可以弥补的,只要权衡好偏差和方差之间的关系,就能够帮助我们更好地运用AI思维解读数据。那么,什么是偏差,什么是方差呢?我们如何才能权衡好偏差和方差之间的关系呢?

偏差和方差概述

在机器学习中,机器从训练数据中学习到模型。任何有监督的机器学习的目标都是在给定训练数据的情况下,对输入变量和输出变量之间的映射关系(下文称为“真实函数”)进行最佳估算。既然是估算,肯定就会有误差。通常,机器学习的预测误差可分为三部分:偏差、方差以及不可减少的误差。其中,不可减少的误差是无论采用什么模型都不可能被减少的误差,因为这种误差是由未知变量引起的。比如一个预测用户是否会买车的模型能根据用户的收入、职业、年龄、家庭状况等一系列数据进行预测,但是这个预测不一定完全精准。因为一个用户是否会买车不只会受这些变量的影响,还会受生活方式等的影响,而像生活方式这样的变量通常是不可知的,因此这种误差是不可减少的,但是,偏差和方差是可以通过机器学习模型进行影响的。

偏差描述的是在使用不同的训练数据时,预测值的平均值与真实值之间的差距,即模型本身的精准度,反映的是模型本身的拟合能力。偏差的产生是因为为了使真实函数更容易学习,而对模型的假设做了简化。偏差高意味着模型是欠拟合的。

方差衡量的是在使用不同的训练数据时,真实函数的估算值所改变的量,也就是预测值的波动情况,它反映的是模型的稳定性。方差的产生是因为为了使模型的预测结果更加符合真实数据,而对模型提出了更加复杂的假设。方差高意味着模型是过拟合的。

下面我们用一个更直观的例子来说明一下偏差和方差。假如有一个视力不好的人想要学习射击,那么他不管练习多少次,也不能打中靶心。但是如果这个人的视力很好,对环境的敏感度很高,瞄准时还能考虑到风速、风向等环境因素,那么经过训练后,他就很容易打中靶心。如果我们此时给他换一个环境,而他不能迅速适应这个环境的话,他的射击也不会有之前那样高的命中率。

在这个例子中,靶心代表的是真实值,若这个人视力不好,他的拟合能力相对而言就不高,无论怎么练习都不能很好地命中靶心,也就是预测值和真实值之间存在差距,产生了偏差。假如这个人视力没有问题,而且他能够根据环境因素来改变射击的方式以此来提高命中靶心的概率,也就是为了使输出更好地符合真实值,而提出了更多的条件假设,但是他又没有完全掌握这种方式,环境一发生变化他的命中率就会下降,这就说明了提出的假设越多,稳定性就越低,就越容易产生方差。

在图2-3中,第一行的两个靶,射击的痕迹都十分靠近靶心,说明其拟合能力比较好,也就是偏差小;第一列的两个靶,射击的痕迹都十分集中,这说明其稳定性非常好,也就是方差小。

图2-3 偏差与方差示意图

在数学领域有一个概念叫作“参数”。在研究问题时,我们经常会在模型中引入一些变量来描述数据的变化,这些变量就是参数。一般来说,在机器学习中,参数化的模型会有相对较高的偏差,这样它们学习起来很快,也更容易理解,但是高偏差就意味着它对模型做了很多的假设,在训练过程中,不是每个数据都可以完美拟合,因此,这个模型就不那么灵活。反之,如果这个模型对真实函数提出的假设很少,那么这个模型的偏差就很低,几乎能拟合每一个数据,但是这样的模型近乎一种对数据的记录,预测性能就不足了。低偏差机器学习模型的例子包括:决策树、K-最近邻和支持向量机。高偏差机器学习模型的例子包括:线性回归、线性判别分析和逻辑回归。

用机器学习模型是通过训练数据来对真实函数进行估算,模型或多或少都会产生一定的方差。理想情况是,训练数据集的改变对真实函数的估算结果不会产生很大影响,这意味着该模型能够很好地计算出输入和输出变量之间隐藏的底层映射。如果模型的方差过高,训练数据对其产生的具体影响明显,那么训练的细节就会较大地影响到描述映射函数的具体参数。如果模型的方差较低,训练数据对其产生的具体影响很小,那么训练的细节对描述映射函数的具体参数的影响也会很小。

泛化误差:偏差和方差的权衡

任何有监督的机器学习模型的目标都是做到低偏差和低方差,也就是说该模型应达到很好的预测性能。但是在机器学习中,偏差和方差二者又不可兼得,偏差减少必将增加方差,方差减少必将增加偏差。造成这种现象的原因是,当我们想要尽量减少模型的偏差时,我们就会尽可能多地保证模型在训练样本上的准确度,但是这样学习出的模型就会过度拟合,反而降低了其预测能力,增加了模型的不确定性,也就是方差增加了;相反,我们在追求模型的低方差时,会增加许多对模型的假设和限制,虽然这提高了模型的稳定性,但是忽视了拟合程度,偏差也随之提高了。所以为了模型能够拥有更好的预测能力,我们需要权衡偏差和方差的关系。

我们通过在具体情况下选择模型的复杂度来达到偏差和方差的权衡,寻找这个权衡的过程就叫作泛化误差的优化。研究发现,模型的泛化误差可以通过偏差的平方、方差以及不可减少的误差相加而得出:

模型的泛化误差=偏差 2 +方差+不可减少的误差

模型的泛化误差还可以通过更加形象的方式来表示,如图2-4所示,随着模型复杂程度的上升,模型的偏差越小,方差越大,图2-4中最上方的那条线,表示的就是模型的泛化误差。我们要找的方差和偏差的最佳权衡点就是图中虚线所在之处,此时模型的复杂程度处于最佳状态,模型的泛化能力最好。

图2-4 模型的泛化误差示意图

我们从图2-4中可以很容易地发现,偏差和方差之间是存在冲突的。虽然大多数情况下,我们不能计算实际的偏差和方差项,但是对偏差和方差的把握为模型预测性能的优化提供了思维框架。

模型的复杂度:VC维度

前面我们讲到,模型的偏差和方差与模型的复杂度是有关系的。模型的偏差会随着模型复杂度的上升而下降,而模型的方差会随着模型复杂度的上升而上升。那我们是怎么来定义和量化一个模型的复杂度的呢?为了定义和量化一个模型的复杂度,我们引入一个新的概念:VC维度(Vapnik-Chervonenkis Dimension)。VC维度是根据提出者统计学家弗拉基米尔·万普尼克(VladimirVapnik)和数学家亚历克塞·泽范兰杰斯(Alexey Chervonenkis)的名字来命名的。

大自然的智慧是无穷的,它赋予我们聪慧的大脑,也在冥冥之中提示我们寻找规律,让我们首先从大自然的角度来理解VC维度。海豚经过训练可以打乒乓球、钻火圈,被称为世界上最聪明的动物,海豚大脑的重量占海豚体重的1.7%。平时我们总会用“蠢萌”这个词来形容的狗,它的大脑重量仅占它体重的0.8%。经过对多种动物大脑重量占它体重比例的研究以及这些动物日常表现的观察,科学家们提出,大脑重量占体重的比重越大的动物越聪明。人类大脑的重量占人体重的2.1%,是地球上所有生物中占比最大的,这也充分证明了上述观点。大脑占的比重越大,说明脑细胞相对就越多,也就是大脑的复杂度越高。如果从VC维度的角度来看,大脑的VC维度越高,就越聪明。

接下来,让我们从理论的角度来了解一下VC维度。首先我们需要了解一下分类器。分类是AI思维考虑的重要问题:比如我们要将顾客分为高购买价值和低购买价值两类,以此来决定我们的精准营销方案。在人工智能中,这些数据的分类是通过分类器进行的,而分类器的复杂程度取决于它能够准确分类的数据的多少。假如现在要用分类器为一组数据点分类,那么这种分类器的VC维度的定义就是:对于每个可能的数据点的标记,单个分类器可最多分类的数据点个数。但是需要注意的是,这里有一个隐含条件,就是不要求对在同一直线上的点分类。比如:如图2-5中前三张图所示,在二维空间上,一个线性分类器的VC维度是3,因为它可以对任意三个点进行准确分类,无论它们如何排列。但是如图2-5中第四张图所示,单个线性分类器无法对四个点进行准确分类,即使它们不共线。

图2-5 二维空间线性分类器示意图

如果要判断分类器的VC维度就要看它能够对几个不共线的点进行分类。通过上述图片所示,我们可以直观地看出来,二维空间中单个线性分类器可以分类的最大数量是3,所以这种线性分类器的VC维度是3。而随着分类器能准确分类数据的增多,VC维度也会相应地增加。因此,VC维度是描述模型复杂程度的一种方法。

VC维度是反映泛化误差与训练误差关系的重要指标,正如以下公式所示:

其中 N 指的是训练样本数量,d指的就是VC维度, δ 指的是一个概率相关的参数。虽然这个公式看似十分复杂,但是仅从数量关系的角度看,VC维度与泛化误差和训练误差的差值呈现正相关,VC维度越大,泛化误差和训练误差的差值就越大。而我们现在已经知道了VC维度代表的就是模型的复杂度,所以模型的复杂度与泛化误差和训练误差的差值也呈现这样一个正相关关系。那么,模型VC维度的法则在现实中有什么意义呢?

首先我们要知道,VC维度并不是越大越好,但是根据上述公式可以发现,训练样本的数量位于分母位置,VC维度位于分子位置,如果分子分母的数量同时扩大,也就是说训练样本数量和VC维度同时扩大,泛化误差和训练误差的差值可能并不会发生显著改变。换言之,如果在训练样本的数量越来越多的情况下,提升VC维度,也就是使用更加复杂的模型可能是一个更加合理的选择。所以,模型VC维度的大小是要根据训练数据的多少来进行选择的。只有选择了合适的VC维度模型,人工智能才能产出实际价值,为各行各业提供优质的服务。

我们现在使用的人工智能都是经过了漫长的发展才达到现在可以普遍应用的水平,例如语音识别从1952年就已经出现了,但当时的语音识别建立在一个数据量很小的基础上,所以当时它只能识别出10个英文数字的发音,虽然这是语音识别的开端,具有划时代的意义,但它也确实不能进入应用阶段。随着语音识别马不停蹄地发展,训练语料库越来越大,相应地,语音识别模型的VC维度也在不断升高,随之而来的是语音识别的错误率也越来越低。目前,主流智能语音识别的准确率已经超过97%,比通常人工转录的准确率还要高。

我们之前提到过的图像识别领域的“奥赛”ImageNet比赛也反映出这样的趋势。从2000年开始,每年冠军参赛模型的VC维度都在不断上升,与之相对应的,冠军模型识别图片的错误率在不断下降,在这背后,冠军模型面对的其实是数据量越来越大的现状。不论是在语音识别、图像识别还是在其他人工智能应用上,都体现了这个规律:几十年前,数据量很小,人工智能技术刚刚起步,模型不需要很高的VC维度来处理数据,所以当时建立的一些模型都很简单。但随着时代的发展,数据量的增加,为更好地解决层出不穷且越来越复杂的问题,提供更优质的服务,近几年新建立的模型都呈现出VC维度越来越高、复杂程度越来越高的趋势。

与此同时,各种新兴行业也通过VC维度的提升有了新的发展。2019年8月2日,腾讯人工智能实验室研发的人工智能系统叫作绝悟,它在王者荣耀世界冠军杯中战胜了职业选手,证明了现在的人工智能也可达到电竞职业玩家的水平。8月3日,绝悟在中国国际数码互动娱乐展览会(ChinaJoy)上参与的504场1对1人机对战中,获胜率为99.8%,输掉的那一场是输给了国内最顶尖的专业玩家。绝悟之所以能取得如此高的胜率,正是因为选择了具有合适VC维度的模型。

这些年,中国电竞在世界级比赛中也获得了不俗的成绩:2018年雅加达亚运会电子竞技表演赛中斩获2金1银、“英雄联盟”S8全球总决赛捧得冠军奖杯。这说明中国电竞业正在逐步崛起,电竞职业选手的能力也逐渐逼近世界水平。这时如果发明出电竞人工智能,也会希望它达到世界级水平。但是,电竞人工智能所要面临的问题是十分复杂的。以王者荣耀为例,它作为一个团队作战游戏,双方每方5位参与者要在英雄搭配、技能应用、路径调换及团队协作等方面面临大量、持续而且即时的选择,其操作可能性高达10 20 000 种。因此,绝悟在训练过程中选择的是VC维度极高的深度强化学习模型。在短短半个月的训练周期内,绝悟每天的训练强度相当于人类训练440年的量。与此同时,绝悟在训练中用了384块GPU。在这样高等级算力的支持下,VC维度高的模型的训练下,绝悟的电子竞技能力直线上升,达到了世界级电子竞技选手的水平。

“权衡”二字出自南朝刘勰的《文心雕龙》:“权衡损益,斟酌浓淡。”古人早已告诉我们,要懂得权衡才能找到处理事情的最佳方法。通过权衡偏差和方差平衡模型的复杂程度和稳定程度,找到最合适的模型;通过权衡各种条件,找到最合适的VC维度,这样打造出来的模型才是真正能解决问题的模型。弱水三千只取一瓢饮,虽然选择很多,我们只要最合适的那一个。这和AI思维是一脉相承的,通过权衡各种复杂条件做出最佳的决策,不但可以帮助我们解决各种复杂的商业问题,还能使我们在激烈的行业竞争中脱颖而出。 /AMMNuWhXC+7jSnQUx/79ylVEPdRg4MgtGSK6tDTrez1BzfXRdrWXEis0Sj024qw

点击中间区域
呼出菜单
上一章
目录
下一章
×