过拟合 准确率大幅下降_常见的过拟合解决方法

常见的过拟合解决方法

1.L1和L2正则化

L1和L2正则化来避免过拟合是大家都知道的事情,而且我们都知道L1正则化可以得到稀疏解,L2正则化可以得到平滑解,这是为什么呢?有几种解释吧,可以参考(https://blog.csdn.net/f156207495/article/details/82794151) 。主要有几个方面:

1)直观的从图像上观察结论

2)通过对梯度的求解进行解释

3)通过L1正则和L2正则假设的参数先验上进行解释。

(L1正则化可通过假设权重w的先验分布为拉普拉斯分布,由最大后验概率估计导出。

L2正则化可通过假设权重w的先验分布为高斯分布,由最大后验概率估计导出。)

因为拉普拉斯的分布相比高斯要更陡峭,它们的分布类似下图,红色表示拉普拉斯,黑色表示高斯。

dc55d2dce5b33e9fde82dbd4947170be.png

可以看出拉普拉斯的小w的数目要比高斯的多,w的分布陡峭,而高斯的w分布较为均匀。也就是说,l1正则化更容易获得稀疏解,还可以挑选重要特征。l2正则有均匀化w的作用。

1d7753828ef394b3d5d6746a28a7d37f.png

2.数据增强

获取更多数据,这是最直观也是最有效的方式之一,有了足够的数据网络也不太容易过拟合了;

通俗得讲,数据增强即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:

1)从数据源头采集更多数据

2)复制原有数据并加上随机噪声

3)重采样

4)根据当前数据集估计数据分布参数,使用该分布产生更多数据等

3.Early stopping

Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。因为在初始化网络的时候一般都是初始为较小的权值,训练时间越长,部分网络权值可能越大。如果我们在合适时间停止训练,就可以将网络的能力限制在一定范围内。

Early stopping可以得到与L2类似的参数平滑效果,可以通过定性和定量两个方面进行分析,具体参考 http://www.friskit.me/2017/03/27/l2-equals-to-stop-early/

4.dropout

dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。dropout为什么能防止过拟合,可以通过以下几个方面来解释:

  1. 它强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,达到好的效果。消除减弱了神经元节点间的联合适应性,增强了泛化能力。
  2. 类似于bagging的集成效果
  3. 对于每一个dropout后的网络,进行训练时,相当于做了Data Augmentation,因为,总可以找到一个样本,使得在原始的网络上也能达到dropout单元后的效果。 比如,对于某一层,dropout一些单元后,形成的结果是(1.5,0,2.5,0,1,2,0),其中0是被drop的单元,那么总能找到一个样本,使得结果也是如此。这样,每一次dropout其实都相当于增加了样本。

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

8096eab5c7d31abe09cfc4c98663e889.png

测试时为什么要乘1-p呢?

可以像上图这样理解,p为0.5时,在测试阶段得到的值会等于训练时的两倍,所以乘上1-p的系数就可使二者近似相等。

5.交叉验证

交叉验证的基本思想就是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。我们常用的交叉验证方法有简单交叉验证、S折交叉验证和留一交叉验证。

6.决策树剪枝

在决策树学习中将已生成的树进行简化的过程称为剪枝。又分为前剪枝和后剪枝。

7.选择合适的网络结构,通过减少网络层数、神经元个数、全连接层数等降低网络容量;

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

9. Batch Normalization,一种非常有用的正则化方法,可以让大型的卷积网络训练速度加快很多倍,同时收敛后分类的准确率也可以大幅度的提高。BN在训练某层时,会对每一个mini-batch数据进行标准化(normalization)处理,使输出规范到N(0,1)的正态分布,减少了Internal convariate shift(内部神经元分布的改变),传统的深度神经网络在训练是,每一层的输入的分布都在改变,因此训练困难,只能选择用一个很小的学习速率,但是每一层用了BN后,可以有效的解决这个问题,学习速率可以增大很多倍。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值