ResNet详解

ResNet

论文《Deep Residual Learning for Image Recognition》

1 现状

​ 随着卷积神经网络(CNN,Convolutional Neural Network)的不断发展,出现了很多新的模型,例如AlexNet、ZFNet、NIN、VGG、Inception v1/v2/v3等,其中各类模型共通点就是CNN的深度在不断增加。

​ 但随着深度增加,CNN出现了网络退化问题(degradation):随着网络深度增加,模型的准确度趋于饱和,并开始下降。

​ 退化问题并不是由于模型出现过拟合产生的。过拟合时模型会出现训练误差小,测试误差大的情况,而退化问题是训练误差和测试误差都很大。

ResNet详解_第1张图片

2 解决思路

​ 文中提出了一种解决退化问题的思路:如果深层模型在浅层模型的基础上加入的层都是恒等映射(identity mapping)的话,则至少可以保证深层模型的误差不会比浅层模型的误差大。

Let us consider a shallower architecture and its deeper counterpart that adds more layers onto it. There exists a solution by construction to the deeper model: the added layers are identity mapping, and the other layers are copied from the learned shallower model. The existence of this constructed solution indicates that a deeper model should produce no higher training error than its shallower counterpart.

​ 神经网络增加网络深度会出现退化问题的情况,说明了深层网络在浅层网络的基础上额外增加的非线性层很难去拟合恒等映射。为了使网络中的多个非线性层能更好的拟合恒等映射,文中设计了如下结构:

ResNet详解_第2张图片

​ 上述结构解决了传统网络中恒等映射难以拟合的问题:使用上述结构的多个非线性层如果要拟合恒等映射的话,只需要使F(x)=0即可,拟合难度大大下降。

​ 换句话说,当多个非线性层层的最优解是恒等映射的话,只需要将F(x)=0即可,但是实际中部分层的最优解一般都不是恒等映射。

​ 文中通过实验表明,上述结构中F(x)的的响应值一般都比较小,这也就说明部分层的最优解更接近于恒等映射,具体实验如下图。那么比起去求解一个全新的最优映射,在恒等映射的基础上去求解多个非线性层的最优解将会更容易,也就是说,比起求解H(x),求解F(x)=H(x)-x更容易。

ResNet详解_第3张图片

3 Residual Block

​ 对于残差结构,文中描述了两种不同情况下的实现方式,分别为identity mappingprojection shortcut。当shortcut前后通道维度相同,使用identity mapping来实现残差学习;当shortcut前后通道维度不同,则使用projection shortcut(1*1 conv)来实现残差学习。

3.1 identity mapping

​ x与F(x)通道数一致,直接通过shortcut实现identity,这不会给模型增加额外的参数和计算量。
H ( x ) = F ( x ) + x = ω 2 ∗ σ ( ω 1 ∗ x ) + x H(x)=F(x)+x=\omega_2*\sigma(\omega_1*x)+x H(x)=F(x)+x=ω2σ(ω1x)+x

3.2 projection shortcut

​ x与F(x)通道数不一致,需要对shortcut进行线性变换保证两者通道数相同,线性变换引入了额外的参数。
H ( x ) = F ( x ) + ω c ∗ x = ω 2 ∗ σ ( ω 1 ∗ x ) + ω c ∗ x H(x)=F(x)+\omega_c*x=\omega_2*\sigma(\omega_1*x)+\omega_c*x H(x)=F(x)+ωcx=ω2σ(ω1x)+ωcx
​ 文中提供了两种改变x的通道数的方法:

  1. 1*1 conv:使用1*1卷积层会引入额外参数,增加计算量。

  2. 0-padding:feature mapping额外多出的通道全为0,没有增加额外参数。

​ 以x为64*64*128的feature mappings为例,下图说明了1*1 conv和0-padding两种方法的区别。

ResNet详解_第4张图片

​ 需要注意的是,在模型运行过程中,0-padding中全0部分实际上并没有进行残差学习,即全0的通道所对应的F(x)仍然需要去拟合恒等映射,所以相较于使用1*1 conv来说效果更差。

4 Bottleneck

​ 在深度较浅的模型中(如ResNet-34),通过identity mapping来实现残差结构。

​ 对于较深的模型(如ResNet-50/101/152),文中采用bottleneck来实现残差结构。bottleneck通过引入1*1 conv来减少网络中的参数数量,提高模型的深度。

ResNet详解_第5张图片

5 模型结构 ResNet-34

ResNet详解_第6张图片

6 模型性能

​ 实验表明,ResNet确实能够解决网络退化问题,同时能显著的提高模型的准确度。

ResNet详解_第7张图片

你可能感兴趣的:(卷积神经网络,神经网络,深度学习,人工智能,机器学习)