防止过拟合的方法

防止过拟合的方法

本文简单描述防止过拟合的方法。
过拟合(over-fitting)通俗的来讲它是指模型将训练数据集中的采样误差,作为数据之间的差异进行拟合,从而导致模型在训练数据集中的训练误差很低,而在测试数据集中的测试误差很高(或者说泛化误差高)。产生过拟合问题的原因大体有两个:训练样本太少或者模型太复杂。
不知道大家有没有考虑过一个问题:为什么机器学习或者深度学习的一些方法会存在过拟合问题,而函数拟合问题不会存在这一问题呢?其实,这个问题很简单,也就是说,我们使用的学习方法具有极强的拟合能力,它的拟合能力远高于我们需要学习问题的本身。这样学习方法不仅可以拟合学习问题的真实分布,而且可以拟合数据中的噪声(例如采样误差)。而函数拟合问题是通过一定的经验、数学推导等方法获得参数模型,这种模型的参数固定,模型的拟合能力也就固定,它没有多余的能力去拟合训练样本中的噪声。
防止过拟合问题的方法:
(1)增加训练数据。导致过拟合的原因可能是由于我们的训练数据太少,不足以拟合出问题,因此可以考虑增加训练样本的数量。对于数据获取比较容易的任务,可增加训练样本的数量。也可以使用数据集估计数据分布参数,使用估计分布参数生成训练样本,但是数据分布参数本身可能会存在一定的误差,这种方法很少使用。我们还可以使用数据增强(Data Augmentation)的方法扩充训练数据,例如一张图片中的目标的位置、姿态、尺度,整体图片明暗度等都不会影响最终的结果,因此我们可以通过将图像平移、翻转、缩放、切割等手段将训练数据样本成倍扩充,达到增加训练样本的目的。
(2)减小模型的复杂度。减小模型的复杂度也就是降低训练的结果风险,产生过拟合通常是由于驯良样本少或者模型太复杂。在方法(1)中我们已经分析了增加训练数据的方法,这里主要采用较小模型的复杂度。使用合适复杂度的模型来拟合问题,让其足够拟合真正的规则,同时又不至于拟合太多抽样误差,这是理想状态的方法,难度主要在于如何确定模型拟合能力需要多大。传统的机器学习方法是通过物理、数学建模,确定模型复杂度,这样确定的模型基本可以满足拟合需求。而对于神经网络尤其是深度网络并不容易。
下面我们主要考虑深度网络的模型减小方法。
a.减少网络的层数或者神经元数量。这个很好理解,介绍网络的层数或者神经元的数量会使模型的拟合能力降低。
b.参数范数惩罚。参数范数惩罚通常采用L1和L2参数正则化(关于L1和L2的区别联系请戳这里)。
c.提前终止(Early stopping);
d.添加噪声。添加噪声可以在输入、权值,网络相应中添加。
e.结合多种模型。这种方法中使用不同的模型拟合不同的数据集,例如使用 Bagging,Boosting,Dropout、贝叶斯方法等。
下面到了盗图时间,图片来自于这里,这张图片描述了主要的方法概述。
这里写图片描述


参考文章:
[1]https://www.zhihu.com/question/59201590/answer/167392763
[2]https://blog.csdn.net/willduan1/article/details/53070777
[3]https://blog.csdn.net/stdcoutzyx/article/details/49022443

为自己挖个坑,后面讲写一篇关于关于深度学习正则化的文章。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值