深度学习基础网络 ResNet (2)

对于更深的网络使用三层的残差结构,如下图所示,使用两个1x1的卷积先降维再增加维度,减少了3x3卷积层的个数及其输入输出维度,这个较小维度的3x3卷积即为bottleneck.图示的两种结构设计有相近的时间复杂度.

deeper-residual-func

无参数的Identity shortcut对于bottleneck结构尤为重要,如果替换成有参数的投射,模型大小和复杂度将会增加.

论文中给出的18,34,50,101,152层网络如下表所示:

ResNet-arch


Plain Network,Residual Network与VGG-19的区别:

ResNet34

关于degradation

论文指出网络的退化不太可能是梯度消失造成的,因为网络中使用了BatchNorm层来保持信号的传播.具体原因尚不明确,需要后续研究.

实验发现通过更多的迭代次数(3x),仍然是degradation.

ResNet解读

参考论文作者另一篇论文Identity Mappings in Deep Residual Networks对ResNet的解读,

residual-block

残差网络单元其中可以分解成右图的形式,从图中可以看出,残差网络其实是由多种路径组合的一个网络,直白了说,残差网络其实是很多并行子网络的组合,整个残差网络其实相当于一个多人投票系统(Ensembling)。

ResNet只是表面上看起来很深,事实上网络却很浅。
所示ResNet真的解决了深度网络的梯度消失的问题了吗?似乎没有,ResNet其实就是一个多人投票系统。

代码实现

caffe中实现特征的加法,用Eltwise层的SUM operation即可:

layer { name: "Eltwise3" type: "Eltwise" bottom: "Eltwise2" bottom: "Convolution7" top: "Eltwise3" eltwise_param { operation: SUM } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspyxj.html