【深度学习】经典卷积神经网络(七)ResNet

介绍

ResNet几乎是现在应用最广泛的特征提取网络,于2015年由何恺明等人提出拿到了ImageNet的冠军,并且发表在2016年的CVPR上,现在针对各种问题也衍生了很多新的网络。很多经典的网络也通过借鉴其思想在效果上得到了提升。一般来说,随着网络变深学习能力应该会更强,但是事实上一味地增加深度并不能继续提升性能,反而会导致模型收敛变慢,效果甚至还会变差,ResNet就是针对这样的问题。文中提出了很多值得借鉴的思想,可以说将卷积神经网络又向前推进了一个阶段,我们可以去训练更深的网络。

一般来说,我们认为随着网络深度的增加即使验证集可能会因为训练集过拟合而准确率下降,但是训练集的拟合效果会越来越好,而事实上更深的网络无论是训练集还是验证集上表现都不好。
作者称这种现象为退化。ResNet研究的便是如何增加网络深度并避免退化现象。

结构


这个思想该怎么理解呢?比如先学一个20层的网络,再学一个36层的网络,其参数均为0(表示退化现象),将20层网络输出到36层网络中,这个结果再与20层网络的输出相加,可以保证56层的网络的输出一定不会比20层差。
我们的目标是学习一个复杂的H(x),但H(x) = F(x) + x,那么可以先学习F(x),然后再加x。这样如果F(x)要好学一些则能够极大地提升性能,再通过求和进行跨层连接。
这样的网络最终发现深层的表现会好于浅层的,即解决了文章开头提出的问题。

另外ResNet发现可以在FC前加入avg pool,可以降低参数量。

16年ECCV又对其做了调整,将BN和ReLU移到了里面。可以看到,左边那种情况即使第二个分支都是0但因为ReLU的存在最终结果xl也不一定等于xl+1,除非都是正数。这种调整后的结果将更像是一个恒等映射。尽管过深的网络不一定会有太大的提升,但通过这种方法至少不会下降。不过经过实验,即使是1000层网络,比150层的提升也没有太大,甚至不如做个数据增强。

xl可以一直保留到xL从数学推导也可以很好地发现恒等映射对梯度消失避免的作用,使之在“1”周围。
当然还可以从Adaboost角度来解释,虽然有很多残差块学到互补的东西,最终提升性能。
然后再看一下ResNet结构上细节的东西,当X与Y通道数目不同时,作者尝试了两种identity mapping的方式。一种即简单地将X相对Y缺失的通道直接补零从而使其能够相对齐的方式,另一种则是通过使用1x1的conv来表示Ws映射从而使得最终输入与输出的通道达到一致的方式。

为了计算效率,还使用了bottleneck,具体思路可以看GoogLeNet。不仅能缩小计算量和训练时间,对精度的影响也并不大。

思考

ResNet的角度比很多网络又新了很多,不是盲目的增加深度或宽度,而是从梯度消失这个问题出发寻找解决方案,最终设计残差单元通过跨层连接有效地解决了问题,因此也成为了很多后来的网络的基本模块。这里总结一下里面一些思路:

  • 跨层连接抑制梯度消失
  • 残差块relu位置的选择
  • bottleneck的应用

参考资料

https://www.jianshu.com/p/93990a641066

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值