残差网络出自论文《Deep Residual Learning for Image Recognition》。
  神经网络是否越深越好?
  从经验来看,网络的深度对模型的性能至关重要,当增加网络层数后,网络可以进行更加复杂的特征模式的提取,所以当模型更深时理论上可以取得更好的结果。但是,网络深度越深其效果就越好吗?其实不然,经大量实践表明,神经网络随着层数的增加可能会出现两个问题:gradient vanishing/exploding problem(梯度爆炸/消失问题)degradation problem(退化问题)
  增加深度带来的首个问题就是梯度爆炸/消失的问题,这是由于随着层数的增多,在网络中反向传播的梯度会随着连乘变得不稳定,变得特别大或者特别小。为了克服梯度消失也想出了许多的解决办法,如使用BatchNorm,将激活函数换为ReLu,使用Xaiver初始化等,可以说梯度消失问题已经得到了很好的解决。
  增加深度的另一个问题就是网络的退化问题,即随着深度的增加,网络的性能会越来越差,直接体现为在训练集上的准确率会下降,残差网络文章解决的就是这个问题,而且在这个问题解决之后,网络的深度上升了好几个量级。
  残差网络是由来自Microsoft Research的4位学者提出的卷积神经网络,在2015年的ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)中获得了图像分类和物体识别的优胜。 残差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题。
  残差网络的残差块如图1所示。

CNN经典模型——ResNet_ResNet

图1 残差块

 

  残差结构人为制造了恒等映射,就能让整个结构朝着恒等映射的方向去收敛,确保最终的错误率不会因为深度的变大而越来越差。
  残差的思想都是去掉相同的主体部分,从而突出微小的变化,引入残差后的映射对输出的变化更敏感。

  残差网络的特点

  1. 网络较瘦,控制了参数数量;
  2. 存在明显层级,特征图个数逐层递进,保证输出特征表达能力;
  3. 使用了较少的池化层,大量使用下采样,提高传播效率;
  4. 没有使用Dropout,利用BN和全局平均池化进行正则化,加快了训练速度;
  5. 层数较高时减少了3×3卷积个数,并用1×1卷积控制了3×3卷积的输入输出特征图数量,称这种结构为“瓶颈”(bottleneck)。