ResNet的成功在深度学习上有着不可磨灭的地位,但是往往为了增加一点精度,就得增加大量的网络层。非常深的网络往往会出现diminishing feature reuse,这往往会导致网络的训练速度会变得相当的慢。为了解决这个问题,本文提出了wide ResNet

以往的深度学习网络一般都是瘦长型的,这样有个好处就是会减少相应的参数量。在电路复杂度理论中证明浅网络往往比深网络需要其指数倍的元件。因此ResNet就设计的thinner and deeper。

但是像ResNet这类网络也会存在着一些问题:
由于梯度在反向传播的时候,可以直接经过shortcut,而不用被强制经过residual block,这会导致可能只有很有限的layer学到了有用的知识,而
更多的layers对最终结果只做出了很少的贡献。这个问题也被称之为diminishing feature reuse。当然在后续的工作中,很多人都朝着解决这个问题的方向做,比如对residual block进行随机失活,类似于特殊的dropout。

基于上述问题,作者认为widening of ResNet blocks可能会提供更有效的方法。事实上作者搭建了16层的wide Residual Network的精度赶上了1000layer 的resNet, 并且在训练速度上提升了几倍。

另一个insight: Use of dropout in ResNet blocks

随着BN的提出,drop out用的越来越少了,由于BN的效果可以看做是一个正则化器,并且能够减少网络内部的covariate shift。事实上,前人在identity part中插入dropout时,效果变差。在本文中,作者选择了在两个卷积layer中加入了drop out, 事实证明结果提升了不少。

resnet出现nan resnet identity_Network

上图自左向右分别为:ResNet, bottleneck ResNet, WideResNet, Wide-dropout.

关于Wide:

作者的思路比较简单粗暴,第一组的conv不增加宽度,在后面的conv中将feature map扩宽:

resnet出现nan resnet identity_resnet出现nan_02

其中k表示扩宽倍数