Weighted Channel Dropout for Regularization of Deep Convolutional Neural Network

  Dropout技术时常被提及,但更多的出现在FC层,下面文章是我翻译的一篇关于卷积层实现dropout的文章,虽然我也不觉得这篇文章提到的方法一定很好用,但是里面关于dropout技术的相关介绍还是值得看一看的。

介绍

  近年来,深度卷积神经网络蓬勃发展,显著的提升了各种视觉任务性能。CNN的成功很大程度上是因为他是由多个非线性隐含层构成的结构,这些隐含层包含数百万个参数,因此能够学习输入输出之间的复杂关系。然而,在训练数据有限的情况下,很可能出现过拟合,导致性能下降。
  在之前的文献中,已经提出了很多方法来减少训练CNN时的过拟合,比如数据增强、提前停止训练,L1和L2正则化,dropout等方法,Dropout方法是最受欢迎的方法,在分类网络中被广泛采用。在dropout的时候,前一层的输出是平坦的一维向量,随机的选择一个子集神经元并设置成0,如图1。在大多数情况下,dropout是用来正则化全连接层,不是很适合用在卷积层。一个主要的原因是dropout作用于每一个神经元,而卷积层中,由多个神经元组成的每一个通道是一个基本单元。在本文的工作中,我们提出了一种新的正则化技术,为卷积层随机选择通道。
  这个工作的另一个灵感来源于观察到CNN中前一层生成的所有通道都被平等的用于生成下一层。这并不是最佳的,特别是对于高层次的,特征有更大的特异性。对于每个输入图像,只有搞成的少数通道被激活,而其他通道的神经元响应接近于0。因此我们建议根据激活状态的相对大小关系选择通道,而不是完全随机选择,这可以作为一种特殊方法来建模通道之间的相互依赖关系。在某种程度上,我们的工作类似于最近的SE-block。
  综上所述,本工作的主要贡献在于提出了一种名为加权通道Dropout的新方法,用于CNN内部卷机层正则化,如图2所示。值得注意的是,WCD的基本操作单元是通道而不是神经元。具体来说,我们首先对上一层输出的通道进行评级,然后对每一个通道分配一个分数。分数是通过全局平均池化获得的,它可以获得每个通道中激活状态的全局视图。其次,关于通道选择,生成一个二进制掩码来表示每个通道是否被选择。我们发现,根据分数生成掩码的过程可以归结为加权随机选择的特殊情况,并采用了一种更有效的算法。最后,一个随机数生成器被进一步附加到掩模来为下一层过滤通道。值得注意的是,WCD是无参的,只是在训练阶段添加到网络中,计算成本非常低。在测试阶段,网络保持不变,因此推理成本不增加。此外,WCD可以接入任何已经在ImageNet上进行预训练的模型,不需要再进行预训练,这使得他很适合在小型数据集上应用。
图1图1,dropout示意图。(a)FC层的dropout。(b)卷积层中的dropout。红色是被随机选择并设置成0的神经元,实现上参考的是Caffe。
  WCD的动机是为了缓解CNN在小数据集上finetune时的过拟合。广泛的结果表明,WCD可以带来一致的提升。

方法

  WCD设计的目的是为了给CNN卷积层提供正则化。以VGGNet为例,在最后三个全连接层中插入Dropout,而在pool5之前的层中没有部署正则化。在小数据集上对VGGNet进行微调时,由于过度拟合的问题比较严重,需要更多的正则化。

step1 评价通道

  根据之前工作的观察,CNN高层特征具有很大的特异性,对于每一个输入图像,只有一小部分通道被激活,因此,我们不应该对所有通道一视同仁,或者随机选择,我们提出首先对每一个通道进行评价,给每一个通道一个分数,用于给下一步通道选择的指导。

全局平均池化 在CNN中,高层的神经元对应输入图像的局部patch,由多个神经元组成的通道代表一个特定的模式,为了对每一个通道进行评级,我们采用了一种简单而有效的方法,即全局平均池化,以获取每个通道的激活状态的全局视图。
图2
其中H和W为所有通道的共享高度和宽度。更复杂的策略需要进一步探索。因为CNN卷积层后面一半会跟着一个Relu激活函数,所以可以假设score>0。

step2 选择通道

  在获得每个通道的score后,需要确定如何选择通道。这里我们使用一个maski来表示是否保持xi。pi用来表示保持通道xi的概率:
图3也就是说,maski有概率pi被设置成1,分数较高的通道更有可能被保留。下面我们将给出实现这一目标的算法,同事考虑到计算成本和效率。
在这里插入图片描述
加权随机选择 我们发现,根据分数生成的掩模的过程可以归结为一种特殊的加权随机选择。为此我们采用了一种高效的算法,如算法1所示。具体来说,首先对于带有scorei的通道xi,生成一个随机数ri(0-1),keyi计算:
在这里插入图片描述
然后拥有最大key值的M个通道会被选择,对应的maski会被设置成1。

随机数生成器 更进一步,对于小数据集,训练通常从预训练模型开始,而不是从头训练。在预训练模型的深层卷积层中,通道之间的差异较大,即只有少数通道被赋予较高的激活值,其他通道接近于零。如果我们在这些层中完全按照score来选择通道,可能对于一个给定的图像,在每个前向处理中被选择的通道始终相同,这不是我们希望的。为了解决这个问题,我们进一步提出在maski中添加参数q的二进制随机数生成器。因此,在maski被设置成1的情况下,xi仍然有1-q的概率没被选择。

应用

  WCD理论上可以插入到CNN模型任意两个连续的卷积层中。WCD与VGGNet、ResNet和Inception等经典网络的整合模式如图3所示:
图3:将WCD与现有网络相结合的方案。(a) VGGNet+WCD;(b) ResNet+WCD;© Inception+WCD。
  具体来说,由于观察到早期卷积层中通道的联系更为紧密,我们主要将WCD部署在深层卷积中,再次强调,WCD作为一个轻量级无参数模块,只在训练阶段添加到网络中,测试阶段的网络没有变化。此外,它不需要在ImageNet重新预训练,所以可以在小数据集上finetune,并很容易的部署。

  这篇文章提到caffe 2D dropout的实现,但是Pytorch中dropout2d是按照channel随机置0的,个人认为这两种实现都不是很好,反正不喜欢dropout,哈哈哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值