如何判断深度学习模型是处于欠拟合还是过拟合问题?

Orangeminger 2019-12-03

人工智能专栏推荐

正文

现在我们有一个数据集如下所示:

如何判断深度学习模型是处于欠拟合还是过拟合问题?

其中有两类样本,正样本和负样本,我们需要找到一个判定边界来区分这两类。

如何判断深度学习模型是处于欠拟合还是过拟合问题?

现在我们有三种判定边界来却分正负样本,第一种判定边界,我们给这个数据集你和了一条直线,可能得到一个逻辑回归的拟合,但是它并不能很好的拟合该数据,这是高偏差的情况,我们称它为欠拟合。

相反的如果我们拟合一个非常复杂的分类器,第三种判定边界,比如深度神经网络,这虽然看起来非常适合这个训练集,但是这看起来也不是一种非常友好的拟合分类器,该分类器的方差会比较高,我们称它为过拟合。

在这二者中间的折中的情况,第二种判定边界,复杂程度适中,数据拟合适度的分类器,这个看起来这个判定边界还是挺合理的,我们称之为适度拟合,适度拟合是介于过度拟合和欠拟合中间的一种情况,我们的目的就是找到这种情况的判定边界。

上图中,我们的数据集中只有两个特征,x1和x2,当只有两个特征的时候,我们可以使用可视化的方式,将数据的分布和判定边界画出来,那么我们一下子就可以看出来此时的算法是高偏差问题还是高方差问题。但是现实中,我们的数据集不可能这么简单,我们的数据都是多维的。在多维空间数据中,绘制数据和可视化分割边界无法实现,但我们可以通过几个指标,来研究偏差和方差。这个指标就是训练集误差和验证集误差。

为了解释如何使用训练集误差和测试集误差来判断算法是高偏差还是高偏差问题,我们通过一个例子来说明。

我们沿用猫咪图片分类这个例子,左边一张是猫咪图片,右边一张不是。

如何判断深度学习模型是处于欠拟合还是过拟合问题?

假设我们可以使用肉眼辨别图中的小猫,并且不会出错,所以本例中人的错误率为0%。

我们的算法可能有一下几种情况:

情况一:假定我们的算法的训练集误差是1%,而验证集误差是11%,通过这两个误差我们可以看出来我们的训练集误差不高,但是我们的验证集误差很高,这种情况可能是过度拟合了训练集,在某种程度上,验证集并没有充分利于交叉验证集的作用,像这种情况,我们称之为"高方差"。

情况二:假定训练集误差是15%,而验证集误差是16%,而我们说过本案例中人的错误率为0%,那么我们可以认为训练集误差太高了,算法并没有在训练集中得到很好的训练,如果训练数据的拟合度不高,那么数据就是欠拟合,我们就可以认为这种算法高偏差。虽然它的验证集误差是16%,但是它与训练集误差15%并没有差太多,所以我们可以认为它的验证误差没有出现什么问题,它的问题出现在训练中,典型的高偏差问题。

情况三:假定训练集误差是15%,而验证集误差是30%,首先训练集误差15%实在是太高了,所以我们可以直接认为这个算法是处于高偏差的问题,然后再看验证集,验证集30%,比训练集误差高多了,所以验证集误差也出现了问题,我们认为它还存在高方差的问题,这个就是我们最不愿意遇到的,同时出现高偏差和高方差的问题。

情况四:我们的训练集误差是0.5%,而验证集误差是1%,这样训练集误差很正常,而测试集误差1%和训练集误差差不多,验证集也没有问题,这种情况偏差和方差都很低,是我们最喜欢的一种情况了。

这就是我们经常会遇到的四种情况,当我们熟悉这四种情况的时候,我们就能很好的理解高偏差和高方差的问题了。

这里我们要先简单的说明一下,这些情况分析都是基于假设预测的,比如本例中我们假设人眼辨别的错误率接近0%,我们称它为最优误差。如果有的时候最优误差非常高,比如15%,如果此时我们有一个分类器,这个分类器训练误差15%,而验证误差16%,虽然训练误差15%很大,但是本例中最优误差15%,,15%的错误率对训练集来说也是非常合理的,偏差不高,而16%比15也不大,那么此时方差也非常低,这就是我们所应知道的,我们根据训练集误差和测试集误差来判断算法的高偏差和高方差时,首先我们要考虑好本领域的最优误差是多少。

通过这样的方式可以快速判断出算法模型处于的问题,算法模型是欠拟合还是过拟合问题,当判断出算法模型处理的问题之后,我们就可以进行对症下药了,通过欠拟合和过拟合的方式来解决算法模型所出现的问题。

相关推荐