奎克的藏经阁 · MinerU 解析内容

人工智能时代:破解人机共存密码(套装共10册)

3314 个 PDF 物理页 · 本页显示文件第 411–420 页

PDF 物理页索引 410

文件中的第 411 页 · 印刷页码:未识别

故事讲完了,我想告诉你,郭霓禾和安德费汀其实都是我虚构的朋友,他们的名字其实就是过拟合(overfi tting)与欠拟合(underfi tting)的谐音。过拟合和欠拟合是两类统计学现象,有这两种现象的模型,不具备良好的泛化能力。

在统计模型中,由于模型太过复杂而拟合了训练样本中的噪声,以至于输出的结果与真实值相差很大,就像郭霓禾诊断病人一样,这就是过拟合。欠拟合则刚好相反,是由于模型过于简单,以至于得到的模型难以拟合训练数据,就像安德费汀没有考虑到影响股市的其他因素,而导致判断错误。

我们总是希望在机器学习训练时,机器学习模型能在新样本上有很好的表现。过拟合时,模型过于复杂,把训练样本学得过分好了,就很可能把一些训练样本自身的特性当成所有潜在样本的共性。这样一来,模型的泛化性能就下降了。欠拟合时,模型又过于简单,无法很好地学到训练样本的一般性质,所以不论在训练数据还是预测数据中,表现都很差。

过拟合就是过多学习了一些不必要的数据特征。比如你的模型需要区分男人和女人,模型学习了训练样本中所有男人和女人的特征。如果训练样本中的女人刚好都穿了红色的衣服,过拟合的模型就可能会把穿红色衣服作为区分男人和女人的一个特征。我们都知道,穿什么颜色的衣服并不能作为区分人的一个特征,这时模型学习的这个特征就属于过度学习。过度学习不仅毫无作用,甚至还会对模型的预测结果产生误导,比如出现了一个新的预测样本,是一个穿红色衣服的男人,模型很有可能会根据他穿了红色衣服这个特征就把他识别为女人。欠拟合与过拟合正好相反,它对于训练样本的特征学习得不够充分,导致训练出来的模型不能很好地进行预测。而且,由于欠拟合的模型没能很好地捕捉到数据特征,它不但不能对新的样本数据进行预测,在训练集中的样本数据时表现也不是很好。比如你要参加一场考试,考试前做了许多模拟题,发现有一些知识点你还不明白,在模拟题中你有部分题目做不出来,这就是没有很好地掌握训练样本的规律。当你要对新样本进行预测时,也就是当你去参加这场考试时,考试结果也不会很好。不论是过拟合还是欠拟合,都会使模型不能很好地输出预测结果,所以,在机器学习中,这两种现象都是需要极力避免的。

PDF 物理页索引 411

文件中的第 412 页 · 印刷页码:未识别

图2-2形象地展示了拟合的几种情况。我们有一些数据样本,大致呈二次函数形式,可以看出,用二次函数来做拟合最合适的是图2-2中间的图像。但是如果我们不采用二次函数呢?比如,我们用线性的函数来拟合它,我们可以得到如图2-2中左图的直线,这显然没有很好地拟合训练样本数据,更不用说预测数据了。我们用高次函数来拟合,可能会得到如图2-2右图那样的曲线,显然,这并不是我们想要的模型,它把个别数据的偶然偏离也当成了共性,而过度拟合了进去。

通常,解决欠拟合的方法包括:(1)增加新特征,也可以考虑加入特征各种形式的组合,来增大模型可操作的空间;(2)尝试非线性模型,比如非线性支持向量机(SVM)、决策树、深度神经网络(DNN)等模型。

PDF 物理页索引 412

文件中的第 413 页 · 印刷页码:未识别

解决过拟合的方法包括:(1)交叉检验,即拿出大部分样本进行模型训练,留小部分样本用模型进行预测,并通过调节这小部分样本上的预测误差来得到较优的模型参数;(2)特征选择,从已有特征中选择部分特征以减少模型所用特征数;(3)正则化,即为原始模型引入额外信息来限制模型的复杂度;(4)增加训练数据在一定程度上可以避免过拟合。

真正的泛化能力需要回避过拟合和欠拟合,一个好的模型必须真正把握数据的底层规律,既不比数据本身复杂,也不比数据本身简单。人工智能行业的趋势是要用越来越复杂的模型来尝试做出更好的泛化效果,这需要我们更加谨慎地看待:如果训练数据量不够多,或者并不支持复杂的模型假设,那么,很有可能我们只是在过拟合,而不是在产出优质可泛化的模型。什么样的模型既不过拟合,也不欠拟合,是运用AI思维时需要考虑的核心问题。

方差和偏差的权衡

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

PDF 物理页索引 413

文件中的第 414 页 · 印刷页码:未识别

偏差和方差概述

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

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

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

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

PDF 物理页索引 414

文件中的第 415 页 · 印刷页码:未识别

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

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

PDF 物理页索引 415

文件中的第 416 页 · 印刷页码:未识别

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

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

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

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

PDF 物理页索引 416

文件中的第 417 页 · 印刷页码:未识别

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

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

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

PDF 物理页索引 417

文件中的第 418 页 · 印刷页码:未识别

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

模型的复杂度:VC维度

PDF 物理页索引 418

文件中的第 419 页 · 印刷页码:未识别

前面我们讲到,模型的偏差和方差与模型的复杂度是有关系的。模型的偏差会随着模型复杂度的上升而下降,而模型的方差会随着模型复杂度的上升而上升。那我们是怎么来定义和量化一个模型的复杂度的呢?为了定义和量化一个模型的复杂度,我们引入一个新的概念: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中第四张图所示,单个线性分类器无法对四个点进行准确分类,即使它们不共线。

PDF 物理页索引 419

文件中的第 420 页 · 印刷页码:未识别

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

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

$$
\because \vert k \vert \frac { \vert } { \vert \overrightarrow { \mathbfcal { k } } \vert } \frac { \dot { \mathbfcal { k } } } { \vert \mathbfcal { k } \vert } \leq \mathrm { i } ) \vert \vert \frac { \vert \overrightarrow { \mathbfcal { k } } \vert } { \vert \overrightarrow { \mathbfcal { k } } \vert } \vert \frac { \Xi } { \vert \overrightarrow { \mathbfcal { k } } \vert } + \sqrt { \frac { 8 } { N } } \mathrm { l n } \left( \frac { 4 ( 2 N ) ^ { \mathrm { d } } } { \delta } \right)
$$

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