文章主旨:  在以往的认知中,dropout会导致信息发生损失,不适用于low level的任务中,作者发现dropout平均特征图的重要性,提升通道之间的利用率,从而提升模型的泛化能力, 对此作者进行了一系列的实验证明

文章介绍

简介

dropout旨在缓解高级视觉中的过拟合问题,但是很少应用在如超分辨重构的低级视觉任务中。作为一个经典的回归问题,SR表现出与高级任务不同的行为,且对dropout操作非常敏感。然而在本文中,我们证明了使用dropout有利于超分网络,并能提高其泛化能力。具体而言,将dropout嵌入到网络的末端,对多重降级设置有很大的帮助。这一发现打破了我们的常识,激励我们探索其工作机制。我们进一步使用了两种分析工具------一种来自最近的网络解释工作,另外一种专门为此任务设计的。分析结果为我们的实验结果提供了侧面的证据,并为我们理解超分网络提供了新的视角。

观察

dropout是有害的 本实验在传统的SR设置下进行,其中唯一的退化是双三线性下采样。我们使用广泛的dropout策略,即channel-wise的dropout(随机将整个通道归为0)在每一个SRResnet的卷积之后。意料之中,效果急速的下降,这个符合我们的常识。这表明回归问题不同于分类问题。回归中,每一个元素对最终输出有贡献,这是一个连续的强度值,而不是离散的类标签。

 

dropout不影响SR效果 然而,我们发现了一种与上述观察不一致的情况。在相同的设置下,我们仅仅在最后一层卷积后面添加channel-wise的dropout.最后的结果并没有被影响。这个现象是非常有趣的。这表明在这一层的特征可以被随机的掩盖,且并不会影响回归的效果。我们尝试在测试的时候将一些特征丢弃,发现没有明显的效果降低。这是不是意味着回归和分类网络有一些共同的东西? 

dropout对SR是有益的 最后的观察更加有趣。在多种降级的设置下,dropout甚至有利于SR效果。一个简单的实验如下,训练数据包含足够的降级,名字叫Real-SRResNet。我们在倒数第二层的卷积后面添加dropout层。在双三线性下采样的数据(训练集中见过)和最近邻下采样的数据(未见过)测试性能。我们观察到,dropout提高了在分内和分外数据的性能。这说明dropout在一定程度上提高了泛化能力。

在SR网络上应用Dropout

一般来说, dropout的效果主要取决于两个方面, 第一个是dropout的位置,第二个是dropout的策略,接下来我们会在下面进行讨论

1.Dropout的位置

这个位置可以主要被分为三种策略

(1) 在最后一层的输出层之前使用dropout, Hinton首次将介绍dropout,并将其使用在全连接层即分类层之前。同样的,我们将dropout使用在输出卷积的前面(从特征层到RGB层),我们使用last-conv来表示这个方法
(2)使用dropout在中间的网络层。很多工作液尝试在中间层使用dropout,在一个特殊的卷积和特定的位置。不失概括性,我们将SRResnet残差块(16 块)分成4个组。每一个组包含4个残差块。我们选择B4,B8,B12,B16作为代表位置,其中数字表示dropout被添加到哪些块后面
(3)在残差网络中使用多个dropout, Ghiasi建议我们可以在残差块中使用dropout,并且多次使用dropout残差块。在他们的实验中,在网络深层位置使用dropout残差层可以产生更好的效果。我们采用了三种不同的方式在SR网络中使用drop残差块,我们命名它为all-part, half-part, quarter-part,all-part表示全部的残差块被dropout残差块替换,half-part表示剩余第二部分被残差块替代,剩余的不变;quarter表示只有最后的4个残差块被取代
2.Dropout维度和概率
除了位置,dropout的维度和drop通道/元素的概率值也是重要的。使用在卷积层,dropout的表现在不同的维度(元素和通道)带来了不同的影响。element-wise dropout在所有的特征图上随机丢弃元素,然而channel-wise仅随机丢一个整个通道。dropout的概率值决定了dropout元素和通道的分数。在不破坏网络的情况实现可能的增益,我们首次尝试10%,20%,30%的概率
 
实验
 
1.成就
SR设置 这里有两个经常使用的设置对于SR,一个简单的退化设置和多退化设置。单次退化设置中最常见的退化是双三线性插值。训练和测试可以用来学习SR模型的能力和性能。然而SR网络会有较弱的生成能力在这种设置下,因为网络只需要对这种单一的退化做过拟合
              不像上述的设置,多级退化设置采用了多种不同的退化更好的模拟现实中的退化。在此设置下,SR有望在现实场景下发挥作用。这种设置不容易发生过拟合。SR的能力取决于器泛化能力。我们使用多种退化方式(模糊,下采样,噪声和压缩),不是一次,而是多次生成复杂的退化。
 
2.如何在SR网络中应用dropout 
 在这个例子中,使用一个简单的dropout层,当dropout位置接近于输出层时,我们可以获得更好的效果。当使用多重dropout层时,我们可以看到更大效果的降低对于更多的dropout层。相比于所有,last-conv的方式是最好的,这个观察和分类网络中的一致。另外的,
element-wise dropout往往会降低性能,然而channel-wise dropout的方法通常会表现的更好。第三,符合预期,更大的dropout比例在多数情况下会带来更差的影响。总之,我们使用channel-wise droput在最后一个卷积层
 
结论
在这个工作中,我们挖掘了在SR工作中的droput的使用和工作机理。特别的,我们发现添加dropput使用last-conv方法可以有效的提高模型的性能在多级退化设置中。对于工作机理,我们发现dropout可以提高通道的表达能力以及网络的泛化能力。我们相信这个工作可以带来对于SR任务新的观点,同时帮助我们更好的理解网络的行为。
 
posted on 2022-05-05 23:51  python我的最爱  阅读(763)  评论(0编辑  收藏  举报