下边几点防止模型过拟合的方法本质上都是通过减小网络规模实现的
1. 使用Dropout
层
深度学习特有结构,以训练过程中一定概率丢弃某些神经元;在训练过程中使用Dropout
层本质上是同时训练了多个不同模型,在预测时将不同模型得到的结果求平均后输出,类似于boosting的思想。dropout
层一般添加在全连接层之后
2. 正则化
在模型优化过程中,样本的某些异常值会使模型某些节点的W变得很大,而模型中的对于这些异常值的过度拟合正是造成模型过拟合的根本原因;因此忽略和异常值相关的网络节点,进而忽略异常值,就能在一定程度上防止模型过拟合。总得来说,l1和l2正则化都是通过减小权值w,使某些神经元的作用变小甚至可以勿略,从而降低网络模型的复杂度来防止过拟合。这与dropout
通过以一定的概率丢弃神经元的做法在效果上是相似的,本质上就是忽略某些和异常值相关的网络节点进而减小网络规模。
2.1 L1
正则化
L1
范数定义为所有元素的绝对值之和,目的是使其中的某些权值减小到0,因此得到的w更加稀疏。
2.2 L2
正则化
L2
范数定义为所有元素的平方和的开平方,在迭代更新中,w会不断地减小。因此L2
正则化又叫做权重衰减
3. 减小网络规模
- 在
Tensorflow
中使用GlobalAveragePooling1D
,GlobalAveragePooling2D
等全局池化 - 减小每层网络的结点数
- 正则化本质上也是在减小网络规模
- dropout层本质上是将减小网络规模后的多个模型的求均值输出
4. 图像增强
注:调参过程中由于是针对测试数据进行调参,可能导致测试数据过拟合,应配合交叉验证的方法进行参数调整