防止过拟合的办法以及能解决的原因

1.权重正则化

在损失函数中加入正则项来惩罚模型的参数,减少了解空间,控制模型参数的大小以降低模型的复杂度。

常见的添加正则项的正则化技术有L1,L2正则化。其中L1正则化可以得到稀疏解,L2正则化可以得到平滑解。

2.数据增强

数据增强:需要得到更多的符合要求的数据。

如从数据源头采集更多数据、复制原有数据并加上随机噪声、重采样、根据当前数据集估计数据分布参数,使用该分布产生更多数据等。

3.早停(Early stopping)

Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。

因为在初始化网络的时候一般都是初始为较小的权值,训练时间越长,部分网络权值可能越大。

如果我们在合适时间停止训练,就可以将网络的能力限制在一定范围内。

4.Dropout

指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。

dropout为什么能防止过拟合?

它强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,达到好的效果。减弱了神经元节点间的联合适应性,增强了泛化能力。

dropout在测试时,并不会随机丢弃神经元,而是使用全部所有的神经元,同时,所有的权重值都乘上1-p,p代表的是随机失活率。

5.选择合适的网络结构

通过减少网络层数、神经元个数、全连接层数等降低网络容量。

6.模型组合

Baggging&Boosting,将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。

7.BN

在训练某层时,会对每一个mini-batch数据进行标准化(normalization)处理,使输出规范到N(0,1)的正态分布,减少了Internal convariate shift(内部神经元分布的改变)。

传统的深度神经网络在训练时,每一层的输入的分布都在改变,因此训练困难,只能选择用一个很小的学习速率,但是每一层用了BN后,可以有效解决这个问题,学习速率可以增大很多倍。

BN的好处就是对数据进行一定程度的预处理,使得无论是训练集还是测试集都在一定范围内进行分布和波动,对数据点中包含的误差进行掩盖化处理,从而增大模型的泛化能力。

8.剪枝

是决策树中一种控制过拟合的方法,主要有预剪枝和后剪枝这两种,常见的是两种方法一起使用。

预剪枝通过在训练过程中控制树深、叶子节点数、叶子节点中样本的个数等来控制树的复杂度。

后剪枝则是在训练好树模型之后,采用交叉验证的方式进行剪枝以找到最优的树模型。

9.权值共享

最常见的就是在卷积神经网络中,权值共享的目的旨在减小模型中的参数,同时还能较少计算量。在循环神经网络中也用到了权值共享。

10.交叉验证

交叉验证是防止过拟合的好方法。在交叉验证中,我们生成多个训练测试划分(splits)并调整模型。

K-折验证是一种标准的交叉验证方法,即将数据分成 k 个子集,用其中一个子集进行验证,其他子集用于训练算法。

参考链接:

https://blog.csdn.net/qq_27590277/article

https://zhuanlan.zhihu.com/p/89590793

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值