上节课我们讲了MLP在MNIST数据集上的分类运用,我们在构建模型时涉及到的模型构造和超参数可以自行变动去验证更好的模型效果。
我们在实验过程中常会涌现一种情形:模型在演习数据集上效果很好,但是在测试数据集上效果一样平常或者比较差,这种征象被称为——过拟合(overfitting)。

AI教室第9讲:DL深度进修——模型欠拟合和过拟合问题分析_模子_庞杂 文字写作

与过拟合相对应的是欠拟合(underfitting),我们常用演习偏差(training error)和泛化偏差(generalization error)区分两者,偏差由丢失函数打算所得(比如前面讲的线性回归用到的平方丢失函数和 softmax 回归用到的交叉熵丢失函数)。

即演习数据集表现得好,不代表示实测试数据集就一定表现好。
因此,模型在演习选择时应更多地关注如何降落泛化偏差,提高泛化能力。

模型选择

我们在演习前须要确定超参数和模型参数,过程中通过多次epoch来达到较好的演习效果,每个epoch对应一个模型文件,那么如何选择最佳的模型和设置超参数呢?此时须要验证数据集(validation data set)赞助判断,由于理论上,我们之前用的测试集只能在所有超参数和模型参数确定后利用一次,因此引入了验证集。
验证集一样平常是从演习集中随机选取一部分作为验证集。

演习集、验证集和测试集比例一样平常是6:2:2。

即验证集可以赞助我们选择偏差较小的模型文件。

过拟合VS欠拟合

欠拟合

欠拟合可理解为模型对演习数据的特色提取不充分,没有学习到数据背后的规律,或者评判标准过于宽松,导致模型在测试数据集上无法做出精确判断。
表现为:演习偏差和泛化偏差都相对较高。

当样本特色较少、模型繁芜度较低时,对样本的特色提取不足充分,就可能导致欠拟合问题。

过拟合

过拟合可理解为模型对特色信息提取过多,把数据噪声当作规律学习,评判标准过于严格。
表现为:演习偏差低,泛化偏差高。

当数据集质量不高、噪声较大、演习样本数较少,或是模型繁芜度较高、参数过多,就会导致学习到的特色并不普遍适用,模型高度拟合演习数据,涌现过拟合问题。

过拟合与欠拟合比喻图解

这两种拟合问题是所有深度学习从事职员“切齿腐心”的问题,打个比喻,某同学平时学习负责,仿照考试成绩也很好,但是期末考试成绩却很难担保会一样好或者更好。
客不雅观缘故原由一样平常是试卷难或者这天常平常仿照试卷做的少导致一些题型没碰着。

类比到深度学习模型拟合问题的导致成分紧张有两方面:模型繁芜度(试卷难)和演习数据集大小(平时学习的题型少)。

模型繁芜度

为了仿照过拟合和欠拟合两种征象,我们选择一个繁芜的模型和一个大略的模型来测试。

高繁芜度模型选择高阶多项式函数

低繁芜度模型选择低阶多项式函数:一阶多项式函数又称为线性函数:y=wx+b

上面两个模型函数均采取平方丢失函数来拟合模型。

给定演习数据集,如果模型的繁芜度过低,很随意马虎涌现欠拟合;如果模型繁芜度过高,很随意马虎涌现过拟合。
应对拟合和过拟合的个办法是针对数据集选择得当繁芜度的模型。

演习数据集

影响欠拟合和过拟合的另一个主要成分是演习数据集的大小。
一样平常来说,如果演习数据集中样本数过少,特殊是模型参数数量(按元素计)更少时,过拟合更随意马虎发生。
随着我们增加演习数据量,泛化偏差常日会减少。
因此,在硬件许可的情形下应尽可能增加演习数据集,特殊是当模型繁芜度较高时。

实验过程展示如下(基于Pytorch):

我们将天生一个人工数据集。
在演习数据集和测试数据集中,给定样本特色x,我们利用如下的三阶多项式函数来天生该样本的标签

噪声项服从正态分布,均匀值为0,标准差为0.1。
我们将为演习集和测试集各合成100个样本

1.三阶多项式函数拟合(正常情形)

我们先是与数据天生函数同阶的三阶多项式函数拟合。
实验表明,这个模型的演习偏差和在测试数据集的偏差都较低。
演习出的模型参数也靠近真实值:w1 = 1.2, w2 = 3.4, w3 = 5.6, b= 5。

2.线性函数拟合(拟合)

我们再试试线性函数拟合。
很明显,该模型的演习偏差在迭代早期低落后便很难连续降落。
在完成末了次迭代周期后,演习偏差依旧很大,即模型繁芜度不足。

3.演习量不敷(过拟合)

事实上,即便是与数据成模型同阶的三阶多项式函数模型,如果演习量不敷,该模型依然随意马虎过拟合。
让我们仅仅利用5个样本来演习模型。
显然,演习样本过少了,乃至少于模型参数的数量。
这使模型显得过于繁芜,以至于随意马虎被演习数据中的噪音影响。
在迭代过程中,即便演习偏差较低,但是测试数据集上的偏差却很大 。
这是范例的过拟合征象。

前面提到,增大演习数据集可能会减轻过拟合,但是获取额外的演习数据每每代价高昂。
在演习数据集固定的情形下,一样平常利用权重衰减和丢弃法来办理过拟合问题。
后续我们将连续讲解办理过拟合问题的方法。