Deep Residual Learning for Image Recognition

        Deep Residual Learning for Image Recognition中提出的152层网络结构在ILSRC 2015获得第一名,集成后的网络在ImageNet分类错误率3.57%,作者微软研究院的何凯明等。


        上图中两条曲线分别为20层和56层的“plain”网络在训练集和测试集上的错误率,这里的“plain”是指一般的无环的“直流”卷积网络。按照以往的经验理论,网络越深应该有更好的分类效果,加大网络的深度是一种很有效的提高准确率的方法。但从上图中的曲线很明显是与这一结论相矛盾的,20层的网络无论是在训练集还是测试集上的错误率都比56层的要低。为了说明出现这一现象并不是因为梯度弥散或是膨胀导致的,所以在每一个卷积之后,ReLU之前 会使用bn层。对于深层的网络,有这样一个现象,算法开始是收敛的,但随着网络加深,准确略逐渐的下降,但并没有出现过拟合。所以说明出现这样的现象是因为优化出现问题。

这篇文章提出一种deep residual learning framework的结构,解决对于很深的网络的优化问题。这种结构主要受启发于LSTM和HighWay


这种结构有两个优点(1)比较容易优化(2)网络层数加深可以有更高的准确率。


这种short connection 实际上是卷积之后的output与input的逐点加和,这句就需要二者具有相同的维度,但是由于采样的原因使得很多时候并不能满足,通常有三种方法可以解决上述问题:

(A)使用zero-padding shortcuts增加维度,并且所有的shortcut是参数自由的(B)维度不同时使用projection shortcuts,相同时使用恒等变换x(C)完全使用projection shortcuts

实验验证三种方法的错误率为:


从结果可以看出B方法相较于A方法有一定的提升,但是C相对于B提升极少,但是计算量却增加很大,所以并不使用C方法。


对于上图中的两种结构identity shortcut有相似的时间复杂度。但是对于右侧的结构来说如果使用projection shortcuts计算量和模型大小相当于identity shortcut的二倍。所以identity shortcut对于这种bottleneck的设计来说是更好地。




这个实验说明resnet确实可以提高深度网络的准确率,使得网络优化的更好。

【注】这里需要注意一点的是,在这个网络结构中pool只出现了一次,使用的2步长的方法进行下采样。二者的最大的不同在于2步长的卷积虽然会使得output size 减小,但是由于卷积核大小为3,实际上每个像素点的信息都是利用到的,相较于pool来说带来的信息损失会比较小。并且在Google的rethink文章中也指出,在网络的前期尽量不要制造bottleneck,但频繁使用pool必然会增加这种信息的减少而出现bottleneck。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值