Dropout、Dropconnect、Dropblock

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在深度学习模型中,由于训练的数据集越来越大,模型为了具有更好的拟合性能,参数也越来越多。经常出现训练一个模型训练下来,参数比数据集更多,此时模型常常出现过拟合的现象。
过拟合是深度学习模型的通病。如果出现了过拟合,这个模型就基本不能够用。为了解决过拟合的问题,一般会采取集成的策略,例如bagging。即多学习几个模型,在预测时求取均值,以平均结果为最终预测结果。那么训练模型又会出现新的问题,训练多个模型也是恨费时力的。有没有更好的解决办法呢?
dropout就是其中一种解决办法。


一、Dropout

dropout如何解决过拟合的问题?

在这里插入图片描述
如上图,左边是正常的神经网络模型。在训练过程中,每个神经元都处于激活状态,最终训练出的模型,假设每个神经元学习到的信息为1。在右边的模型中,将模型一些神经元给关闭掉。例如将模型一半的神经元输出置为0,那么剩下的神经元在学习的过程需要学习比原来更多的信息,假定为2。这个时候学习出来的模型肯定比原来更好。这种方式就是dropout。
为什么会出现以上的效果?较为令人信服的解释大概有几种:
1.在将一部分神经元关闭时,此时模型的神经元与原本的模型神经元数量不相等,等同于训练一个新的模型。训练多次后,因为每次dropout的是一些不同的神经元,等同于训练多个模型。此时就能达到省时又有多个模型平均后的效果。
2.随机关闭一些神经元的输出,会导致某些神经元不会同时出现,使得这些神经元不会产生彼此依赖的关系。使每个神经元在学习更多的信息同时,会变得更强壮。
3.从生物进化的方向上来说,如果一个模型的神经元一成不变全部激活,那么会形成一定的规律,时间越久(训练越多),规律就会越明显,就越容易过拟合。而dropout就等同于在生物进化过程中的基因突变的效果,使得模型在突变过程中变得更强壮。

dropout 具体工作流程

训练过程
在训练过程中,模型每个隐层都会经过dropout层。具体是在每个隐层的神经元输出过程中,经过dropout层时,会以p的概率决定,该神经元输出是否为0。

测试阶段
最终该隐层的原本输出为O,经过dropout后,约等于(1-p)O。
那么会出现一个新的问题,原本输出为O,现在输出(1-p)O。此时若将模型的神经元全部激活后,进行测试,输出仍然会是(1-P)O。所以需要将新的输出O’乘以1*(1-p)。这样才能够在测试阶段,保证原本输出能编程O。

最终产生的模型是以加权的方式将之前每一次训练的模型结果叠加加起来产生。这样达到了一种bagging的效果,降低了模型的方差,达到防治过拟合的效果。

注:dropout只能用于全连接层


二、Dropconnect

dropconnect如何解决过拟合的问题?

dropconnect解决过拟合的方式等同于dropout,也是使得在训练一次模型时,随机的使得一些神经元的没有输出。最终产生的模型与dropout一样,加权求得,降低了模型的方差,减少过拟合。

dropconnect与dropout的比较

在这里插入图片描述

如上图,dropout的是将模型每个隐层的每个神经元以p的概率关闭。而dropconnect是以p的概率将每个神经元的输入以p的概率置为0,那么设dropout的神经元关闭的个数为m,而dropconnect是关闭神经元的输入,关闭输入的个数为M。从参数量来说,同一个模型使用两种方法的参数为M>>m。那么可以推测出,使用dropconnect的模型会产生更多的不同的模型,也就更加能够防止过拟合的产生。同时因为参数量会更多,计算量会更大,使用这种方式训练时间会更久。

相同点:dropconnect同样只能用于全连接层。


三、Dropblock

深度学习模型中,很重要的一类就是有卷积神经网络组成的特征提取的深度模型。这种模型通常只有最后一层需要分类的时候才会有全连接层。这时候就会出现一个新的问题:卷积网络如何进行dropout,为什么dropout和dropconnect一般只用于全连接层,那卷积网络模型如何正则化,防止过拟合?
谷歌大脑的研究人员,提出了一种专门针对卷积层正则化的方法,方法非常简单,有效改进了CNN的各种任务。新的正则化即dropblock。

在这里插入图片描述

为什么dropout、dropconnect不适用卷积网络?

作者是这样解释的,上面图片是原文图片。a是原图,b是特征图,蓝色部分是有效特征部分。那如果对原图进行dropout正则化,b图上的黑色的点即是导致失活的特征点。此时因为后续是卷积核来进行特征的提取,卷积核是具有感受野的,另外作者提出特征图上,相邻元素在空间上共享语义信息,所以并不影响有效特征的提取。并没阻止学习到有效特征,就失去了正则化的效果。

那dropblock为什么在卷积网络上可以有效果?

根据以上的猜测,要丢掉有效特征的方法就是将有效特征点与相邻点都丢掉。这样形成一整块整块(block)的丢掉有效特征。也就是dropblock的由来。丢掉整块的有效特征,强化其他位置的特征点学习到丢失掉的位置的语义信息。这样使得整个模型更具有鲁棒性。

dropblock模块的参数与概率:

主要参数:
block_size,代表想drop掉的block的尺寸大小,正常可以取3,5,7;
γ,代表drop过程中的概率。
在这里插入图片描述

上式中,feat_size即特征图的尺寸,keep_prob即是dropout时的参数,置零概率,失活概率。
经过测试,在coco数据集用resnet网络上最高提升了1.7个点。具体如下图:在这里插入图片描述
ImageNet 图像分类:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值