【DL笔记】防止模型过拟合的处理方法(更新中)

前言

本文主要整理了防止过拟合的处理方法,会持续更新。

过拟合(Overfitting)

过拟合可以通俗理解为模型学习到了训练数据几乎全部的特征,对于训练集具有非常高的准确率,但对于测试集的特征敏感,往往不能再测试集中取得较高准确率,这种现象主要是由于在训练过程中,为了使模型学到更多的特征,从而增加模型的复杂程度,使模型更加依赖训练集,而泛化能力较弱。
【DL笔记】防止模型过拟合的处理方法(更新中)_第1张图片
如上图所示,过拟合会给模型带来很不好的影响,对于一个模型,不断增加参数提升模型的复杂程度,起初error会下降,随后便上升,拐点之后就发生了过拟合,由于模型过于复杂,对未知数据的拟合性较差。
过拟合经常存在于机器学习模型中,尤其是深度学习模型中,由于深度学习模型网络结构较深,有此带来的过拟合也相当严重。在深度学习模型中,常用到以下几种方法来处理过拟合问题。

数据增强(Data)

数据增强在AlexNet模型中就有使用,在VGG论文中更是以大篇幅进行对比分析,其思想比较简单,通过增加数据量来提高模型的泛化能力,从而防止过拟合,这种方法在计算机视觉领域应用最多,实现方式为裁剪、缩放、翻转等操作,比如输入图片大小为256x256,随机裁剪为224x224的图片,在像素的角度,一张图片就可以得到很多张裁剪图片,这样便大大扩充了数据集。数据增强不像BN、正则这些方法有很多数学推导,它使用且简单。

提前终止训练(Early Stopping)

对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。 

Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。这种做法很符合直观感受,因为accurary都不再提高了,在继续训练也是无益的,只会提高训练的时间。那么该做法的一个重点便是怎样才认为validation accurary不再提高了呢?并不是说validation accuracy一降下来便认为不再提高了,因为可能经过这个Epoch后,accuracy降低了,但是随后的Epoch又让accuracy又上去了,所以不能根据一两次的连续降低就判断不再提高。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……

正则化(Regularization)


批标准化(Batch Normalization)


Dropout


更新时间:2018/04/25



你可能感兴趣的:(Deep,Learning,过拟合,深度学习,机器学习)