过拟合
过拟合是模型的偏差小而方差大,即模型在训练集上拟合得很好,在测试集上的效果却很差。所以防止过拟合,就是要减小方差。(偏差、方差、贝叶斯误差)
防止过拟合的方法
- 从源头上,扩充数据集,收集更多的数据或者采用数据增强的方法。
- 对于模型参数的处理方法,采用L1, L2正则化和dropout 的方法
- 对于训练方法,采用Early stopping。
- 采用bagging的方法
数据增强的方法
参考
- 常用的图像增强技术
- 翻转(水平、垂直)
- 旋转
- 缩放(放大后裁剪,缩小后填充,填充方法包括常数,边缘,反射,对称和包裹模式)
- 裁剪
- 平移
- 增加高斯噪声
- 条件型生成对抗网络
利用生成对抗网络生成图像
L1正则与L2正则的区别
参考
droupout正则
dropout–随机使一些神经元失活,用在模型的训练阶段。直观上理解:不要依赖于任何一个特征,不给任何一个输入加上太多权重,因为该单元的输入可能随时被清除。(参考Andwew Ng deeplearning.ai)
Early stopping
随着训练次数的增加,在训练集上的误差如蓝色,在验证集上的误差如紫线。可以看出,验证集上的误差经历了先减小后增大的变化过程,表明模型已经过拟合了,所以在验证集上的误差最小的时候,就要停止训练了。
使用Early stopping可能带来一个问题。模型在训练集上没有完全训练好,但是在验证集上已经开始出现过拟合了。此时Early stopping不能在减小偏差的同时减小方差。
如果不用 early stopping,另一种方法就是
L
2
L2
L2正则化,训练神经网络的时间就可能很长。这导致超级参数搜索空间更容易分解,也更容易搜索,但是缺点在于,必须尝试很多正则化参数
λ
\lambda
λ的值,这也导致搜索大量
λ
\lambda
λ值的计算代价太高(参考Andwew Ng deeplearning.ai)
[]
Bagging
其实bagging的方法是可以起到正则化的作用,因为正则化就是要减少泛化误差,而bagging的方法可以组合多个模型起到减少泛化误差的作用. 在深度学习中同样可以使用此方法,但是其会增加计算和存储的成本(参考).