神经网络解决过拟合的方法

总结

  • simpler model structure
  • regularization
  • data augmentation
  • dropout
  • Bootstrap/Bagging
  • ensemble
  • early stopping
  • utilize invariance
  • Bayesian

定义

过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。

具体表现就是模型在训练集上效果好,在测试集上效果差。模型泛化能力弱

为什么要解决过拟合?

  1. 拟合的模型一般是用来预测未知的结果,过拟合虽然在训练集上效果好,但是在实际使用时(测试集)效果差。
  2. 机器学习算法为了满足尽可能复杂的任务,其模型的拟合能力一般远远高于问题复杂度,也就是说,机器学习算法有【拟合出正确规则的前提下,进一步拟合噪声】的能力。

解决方法:

  • 获取更多的数据

这是解决过拟合的最好的方式,只要给足够多的数据,让模型尽可能的看到例外的情况。

  1. 从数据源头获取,比如比赛的数据集为猫狗的分类,那么我自己再多拍一点猫狗的图片加到原有的数据集中。但是比较费时费力。也不知道要多少数据才是足够的,但是越多越好了。
  2. 根据当前数据集估计数据分布参数,使用该分布产生更过数据,例如 gan 网络。但是该估计分布的时候,也会将抽样误差带入其中。
  3. 数据增强(Data Augmentation):比如图像的旋转,伸缩,颜色明暗度的调整,添加高斯噪音等。
  • 选择模型

造成过拟合的主要原因是:数据过少+模型复杂。通过降低模型的复杂度,使用合适的复杂度的模型防止过拟合问题。如果能够通过数学建模确定模型复杂度是最好的了,但是深度学习像个黑盒子一样,具有一定的不可解释性。

  1. 网络结构:减少网络层次,神经元个数,比如添加dropout技术。现在模型的复杂度,
  2. 训练时间:采用 early stopping 技术。

    preview

  3.  限制权重:权重衰减 weight_decay,正则化 regularization(比如L2正则)。
  4. 增加噪声 Noise:(1)在输入中添加噪声
  • 模型融合:训练多个模型,取平均或者是加权平均。
  1. bagging
  2. boosting
  • 贝叶斯方法

综上: 

参考:

  1. 深度学习系列(11):神经网络防止过拟合的方法
  2. 机器学习中用来防止过拟合的方法有哪些?

猜你喜欢

转载自blog.csdn.net/wchzh2015/article/details/88965631