怎么避免过拟合(正则化,droupout,bagging等原理及特点介绍)

过拟合几乎可以说是每个深度学习网络的噩梦,当模型深度较大时,若不加以处理,几乎都会碰上。出现过拟合的特点是:看起来效果很好(在训练集上),而实际上已经废了(在测试集或验证集上)。因此如何在训练时避免过拟合,是每一个炼丹师的必备技能。而避免过拟合主要有两类方法:1)扩充数据,2)修改网络。数据扩充内容比较简单,在文末总结了数据扩充的方案,详细的可以再自己搜一下看看。本文主要总结一些修改网络的方法。

1.正则化

正则化的目的是通过缩小权重W(忽略偏置B的影响)得到简化模型的目的,可能大家会问了,模型权重越小,为什么能简化模型呢,计算量不是一样的吗?这里的简化不是指结构或者计算量上的简化,应该是模型拟合能力的简化,可以说是模型在可以解决问题的基础上,变得更蠢了(其实就是奥卡姆剃刀原则:“如无必要,勿增实体”)。那么,为什么小的权重,可以让模型变“蠢”呢,如下图【1】:

当权重较小时,激活函数主要工作在线性区,使得一个模型更加趋于一个线性模型(简单)。此外,异常点往往出现在偏离正确函数较远的地方,当出现过拟合时,为了适应各个异常点,必须要较大的权重造成大的跳动才行,小的权重拟合的函数波动较小,可以避免向异常点收敛。

L1正则化

设损失函数为L,增加L1正则项后,使用梯度下降,权重W的更新公式如下,当W>0时,带有L1正则项的权重将趋于0,而当W<0时,带有L1的权重将趋于-0

L2正则化

同理,带L2正则项的W在无正则项的基础上下降了a*n(阿法乘以一塔)倍的W(权值衰减)

总的来说,L1正则化使W趋于0,L2正则化使W按W的一定比例减小。

2.Droupout

很简单但十分有效的操作,在训练时按一定比例随机对隐含层节点的输出置0,相当于减少隐含层节点数。且每次训练时置0的节点都是不一样的(随机),相当于每次训练的都是不同的网络,大部分情况下网络效果很好,也会出现部分效果较差的情况。但是测试时使用的是包含全节点的网络,相当于对训练时多个不同的网络进行了组合,有点类似集成学习的方式,区别在于每个子网络的参数是共享的(相关性较强,不独立,但是共享的参数可以使每个子模型都获得较好的效果)。Droupout的模型训练时可能拟合速度会相对慢些,最终的训练误差也达不到没有droupout时那么小,但是在泛化性能上会更好。

3.Bagging

典型的集成学习方式,可以有效减小模型预测的方差(即模型的过拟合程度),bagging的工作原理如下图所示【3】:

对原始数据集进行L次有放回的随机采样,获得L各子训练集。分别对L个子训练集进行训练,获得L个弱分类器,L个弱分类器投票获得一个强分类器。为什么bagging方式能避免过拟合呢【4】?

4.数据扩充

只要你的数据相对于你的网络足够充分(包括数据量和数据分布的全面性),理论上认为不会出现过拟合问题。但是实际问题中,大量数据的成本很高,甚至难以获得。因此就要考虑人为的数据扩充方式了,总结一下大概有以下几种:

1)翻转;2)旋转;3)缩放:放大后裁剪或缩小后填充;

4)平移(背景为空);5)添加噪声(过拟合主要出现在拟合高频特征

参考文献

【1】https://blog.csdn.net/jingbo18/article/details/80609006

【2】https://blog.csdn.net/crazy_scott/article/details/80343324

【3】https://blog.csdn.net/u014114990/article/details/50948079

【4】https://www.cnblogs.com/earendil/p/8872001.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值