在深度学习中,过拟合是指模型对于训练集能达到非常高的精度,而对于测试集的精度较低的现象。防止过拟合常用的方法主要有以下几种:
1.增加训练样本数量
2.简化模型结构
3.使用权重正则化
4.使用dropout
5.数据扩增
6.使用批归一化
下面将简要分析这几种方法能防止过拟合的原理。
- 增加训练样本数量
增加训练样本的数量是防止过拟合的最优选择。训练样本数据越多,模型学习到的泛化特征越多,训练得到的模型的泛化能力肯定就越强。
- 简化模型结构
防止过拟合最简单的一种方法就是使用更加简单的模型。模型的复杂度是用网络层数和神经元的数量决定的,可学习的参数的数量成为模型的“容量”。模型的“容量”很大时,就很容易把训练样本和对应的目标非常完美的拟合,但是也导致得到的模型毫无泛化能力,对于新的数据集的预测能力较弱。而如果模型的“容量”较小时,就不容易对训练数据和目标进行拟合,需要学习预测能力更强的压缩表示方法。
- 使用权重正则化
当存在几组权重值时,选择权重值较小的组合能够减缓模型的复杂度,防止过拟合。权重正则化是将对权重的惩罚代价加入总体代价函数中,以获得数值较小的权重。通常有L1和L2正则化。
L1正则化:将权重值的绝对值之和加入到总体代价函数中。
L2正则化:将权重值的平方之和加入到总体代价函数中。
- 使用dropout
在神经网络的某一层使用dropout操作会在训练时使得该层的部分神经元失活,例如设置改成的失活率为0.2,则在训练时该层会有20%的神经元失活,相当于减缓了网络的复杂度,防止过拟合。在测试的时候则保持所有的神经元都处于激活状态,为了解决训练和测试时神经元激活数目不一致的问题,通常的做法是给试时每一层的输出值乘以(1-失活率)
- 数据扩增
数据扩增后,实际上相当于增加了训练样本的数量来防止过拟合。
- 使用批归一化(BN)
使用批归一化时,每次用于训练迭代的数据是一个小批次的数据集,这些小批次的数据集相对于总体的数据集来说是给网络带来了一些噪声,由于这些噪声的存在也在一定程度上防止了过拟合。