总结
- simpler model structure
- regularization
- data augmentation
- dropout
- Bootstrap/Bagging
- ensemble
- early stopping
- utilize invariance
- Bayesian
定义
过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。
具体表现就是模型在训练集上效果好,在测试集上效果差。模型泛化能力弱。
为什么要解决过拟合?
- 拟合的模型一般是用来预测未知的结果,过拟合虽然在训练集上效果好,但是在实际使用时(测试集)效果差。
- 机器学习算法为了满足尽可能复杂的任务,其模型的拟合能力一般远远高于问题复杂度,也就是说,机器学习算法有【拟合出正确规则的前提下,进一步拟合噪声】的能力。
解决方法:
- 获取更多的数据
这是解决过拟合的最好的方式,只要给足够多的数据,让模型尽可能的看到例外的情况。
- 从数据源头获取,比如比赛的数据集为猫狗的分类,那么我自己再多拍一点猫狗的图片加到原有的数据集中。但是比较费时费力。也不知道要多少数据才是足够的,但是越多越好了。
- 根据当前数据集估计数据分布参数,使用该分布产生更过数据,例如 gan 网络。但是该估计分布的时候,也会将抽样误差带入其中。
- 数据增强(Data Augmentation):比如图像的旋转,伸缩,颜色明暗度的调整,添加高斯噪音等。
- 选择模型
造成过拟合的主要原因是:数据过少+模型复杂。通过降低模型的复杂度,使用合适的复杂度的模型防止过拟合问题。如果能够通过数学建模确定模型复杂度是最好的了,但是深度学习像个黑盒子一样,具有一定的不可解释性。
- 网络结构:减少网络层次,神经元个数,比如添加dropout技术。现在模型的复杂度,
- 训练时间:采用 early stopping 技术。
- 限制权重:权重衰减 weight_decay,正则化 regularization(比如L2正则)。
- 增加噪声 Noise:(1)在输入中添加噪声
- 模型融合:训练多个模型,取平均或者是加权平均。
- bagging
- boosting
- 贝叶斯方法
综上:
参考: