机器学习、深度学习中过拟合的理解及解决方法

过拟合的定义      

指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。具体表现就是训练集上效果好,在测试集上效果差。模型泛化能力弱。

解决过拟合的方法

发生过拟合主要有两方面的原因,下面就从数据和模型复杂度来考虑。

数据

  1. 获取更多的数据:从数据源头获取;根据当前数据集估计数据分布参数,使用分布产生;数据增强,通过一定规则获取数据,例如图像平移,翻转,缩放,切割等       
  2. 考虑数据降维,例如PCA,SVD等,选取重要特征,
  3. 重新清洗数据,增大数据的训练集

模型

  1. 使用合适的模型:过拟合的主要原因为,数据太少+模型太复杂。对于神经网络来讲,可以减少网络层数及神经元个数;
  2. 训练时间的把控,Early stopping;
  3. Dropout,这是一个很高效的方法,在训练时,每次随机(如50%)忽略隐层的某些节点,这样,我们相当于随机从2^H个模型中采样选择模型,类似于bagging,此外,不同模型之间权值共享,相当于一种权值正则方法,实际效果比L2更好。
  4. 限制权值,即正则化(regularization),L1或L2;
  5. 增加噪声,噪声随着网络传播,按照权值的平方放大,并传播到输出层,对误差cost产生影响。在输入中加高斯噪声,会达到与L2类似的效果;也可在权值和网络响应上加噪声。
  6. 考虑集成的方法,结合多种模型:训练多个模型,以每个模型的平均输出作为结果。如Bagging随机森林,训练一堆互不关联的决策树。Boosting如GBDT,XGBoost。

  7. Batch normalization

  8. 决策树的剪枝

  9. 通过贝叶斯的相关方法

参考文献:

   [1]    https://www.zhihu.com/question/59201590/answer/167392763

猜你喜欢

转载自blog.csdn.net/heart_leader/article/details/79392217
今日推荐