如何解决训练网络过拟合的问题?
前言
如何解决网络过拟合的问题?
判断一个训练模型过拟合,主要依据来自于,该模型在训练集上的表现很好。但是在测试集合和新数据上的表现都不太好的情况。
可以从以下的三个角度去解决训练网络过拟合的问题。
一、数据
从数据入手,获得更多的训练数据。使用更多的训练数据是解决过拟合问题的有效手段。因为更多的样本能够让我们的模型学习到更多的特征,减小数据的影响。
获得更多的训练数据可以有以下三种手段:
1.直接采集更多的数据。
2.数据增强
(1)图像的旋转、平移、缩放、随机剪切、填充、左右反转等,这些数据增强来自于对应着同一个目标在不同角度的观察结果。
(2)图像加入噪声。比如高斯白噪声和椒盐噪声。
(3)颜色变换。
(4)改变图像的亮度、清晰度、对比度、锐度等等。
3.数据生成
可以考虑用生成对抗网络来生成数据。
二、降低模型复杂度
在数据比较少的时候,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。
1.削减参数
例如在神经网络里可以削减层数,神经元个数,卷积核个数。决策树可以减少树的深度和剪枝。
2.网络修改
比如14年中的Inception结构,设置瓶颈层,能够大量削减通道参数。
三、正则化方法
给模型的参数加上一定的正则化约束。
1.损失函数正则化
将模型参数的大小加入到损失函数中,比如L1、L2正则化。这样优化目标函数的同时,也能够避免参数权值过大带来的过拟合风险。
2.Dropout
随机选取神经元失活。
3.增加BN层(主要用于加快模型收敛)
BN有轻微的正则化作用,可以适当缓解过拟合效果。
四、训练
可以设置训练时间 Early stopping。及时停止我们的网络训练。也可以每一个epoch都保存模型。
五、集成方法
将多个模型集成在一起,降低单一模型的过拟合方法。
补充:降低“欠拟合”风险的方法
(1)添加新特征
(2)增加模型复杂度
(3)减小正则化系数