深度学习之PyTorch实战计算机视觉
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2 欠拟合和过拟合

我们可以将搭建的模型是否发生欠拟合或者过拟合作为评价模型的拟合程度好坏的指标。欠拟合和过拟合的模型预测新数据的准确性都不理想,其最显著的区别就是拥有欠拟合特性的模型对已有数据的匹配性很差,不过对数据中的噪声不敏感;而拥有过拟合特性的模型对数据的匹配性太好,所以对数据中的噪声非常敏感。接下来介绍这两种拟合的具体细节。

3.2.1 欠拟合

我们先通过之前在监督学习中讲到的线性回归的实例,来直观地感受一下模型在什么情况下才算欠拟合。

图3-5(a)所示的是已获得的房屋的大小和价格的关系数据;图3-5(b)所示的就是一个欠拟合模型,这个模型虽然捕获了数据的一部分特征,但是不能很好地对新数据进行准确预测,因为这个欠拟合模型的缺点非常明显,如果输入的新数据的真实价格在该模型的上下抖动,那么相同面积的房屋在模型中得到的预测价格会和真实价格存在较大的误差;图3-5(c)所示的是一个较好的拟合模型,从某种程度上来讲,该模型已经捕获了原始数据的大部分特征,与欠拟合模型相比,不会存在那么严重的问题。

图3-5

在解决欠拟合问题时,主要从以下三方面着手。

(1)增加特征项:在大多数情况下出现欠拟合是因为我们没有准确地把握数据的主要特征,所以我们可以尝试在模型中加入更多的和原数据有重要相关性的特征来训练搭建的模型,这样得到的模型可能会有更好的泛化能力。

(2)构造复杂的多项式:这种方法很容易理解,我们知道一次项函数就是一条直线,二次项函数是一条抛物线,一次项和二次项函数的特性决定了它们的泛化能力是有局限性的,如果数据不在直线或者抛物线附近,那么必然出现欠拟合的情形,所以我们可以通过增加函数中的次项来增强模型的变化能力,从而提升其泛化能力。

(3)减少正则化参数:正则化参数出现的目的其实是防止过拟合情形的出现,但是如果我们的模型已经出现了欠拟合的情形,就可以通过减少正则化参数来消除欠拟合。

3.2.2 过拟合

同样,我们通过之前在监督学习中讲到的线性回归的实例来直观地感受一下模型的过拟合。

图3-6(a)所示的仍然是之前已获得的房屋的大小和价格的关系数据,图3-6(b)所示的是一个过拟合的模型,可以看到这个模型过度捕获了原数据的特征。不仅同之前的欠拟合模型存在同样的问题,而且过拟合模型受原数据中的噪声数据影响非常严重。如图3-6(c)所示,如果噪声数据严重偏离既定的数据轨道,则拟合出来的模型会发生很大改变,这个影响是灾难性的。

图3-6

要想解决在实践中遇到的过拟合问题,则主要从以下三方面着手。

(1)增大训练的数据量:在大多数情况下发生过拟合是因为我们用于模型训练的数据量太小,搭建的模型过度捕获了数据的有限特征,这时就会出现过拟合,在增加参与模型训练的数据量后,模型自然就能捕获数据的更多特征,模型就不会过于依赖数据的个别特征。

(2)采用正则化方法:正则化一般指在目标函数之后加上范数,用来防止模型过拟合的发生,在实践中最常用到的正则化方法有L0正则、L1正则和L2正则。

(3)Dropout方法:Dropout方法在神经网络模型中使用的频率较高,简单来说就是在神经网络模型进行前向传播的过程中,随机选取和丢弃指定层次之间的部分神经连接,因为整个过程是随机的,所以能有效防止过拟合的发生。