Deep Residual Learning for Image Recognition(深度残差网络)
提出原因
深度卷积网络在图像分类、目标检测等问题上做出了巨大贡献,VGG网络证明了网络层数(深度)对于分类准确的影响。但是问题随之而来:是否性能表现好的网络仅仅只是简单需要更多层的堆叠?下图展示了一个典型例子:随着网络深度的增加,准确度开始变得饱和。然后迅速退化,而且这个退化不是由于过拟合引起的。层数更多的网络,导致更高的训练误差。
残差单元
假设在浅层网络上叠加与其相同,称之为恒等映射的层,那么即使网络深度增加,其训练误差应该不高于原来的浅层网络。因为直接让一些叠加层去拟合一个潜在的恒等映射函数
H
(
x
)
−
x
H(x)-x
H(x)−x会比较困难,所以采用一些非线性层,让它们去拟合另一种残差映射
F
(
x
)
:
=
H
(
x
)
−
x
F(x) := H(x)-x
F(x):=H(x)−x,而原来的映射则变成
H
(
x
)
=
F
(
x
)
+
x
H(x)=F(x)+x
H(x)=F(x)+x。Resnet学习的是残差函数
F
(
x
)
=
H
(
x
)
−
x
F(x) = H(x)-x
F(x)=H(x)−x,优化这种残差映射要比优化原始的映射容易。
H
(
x
)
=
F
(
x
)
+
x
H(x) = F(x) + x
H(x)=F(x)+x可以通过前向神经网络和“shortcut connections”
来实现,如图中所示。其中“shortcut connections”
是指那些被跳过的层。在resnet里,这些“shortcut connections”
是恒等映射的,其输出被加到叠加层的输出上。这些“identity shortcut connections”
没有引入额外的参数和计算复杂度,整个网络可以用端到端的后向传输SGD训练,采用一般的库即可轻松实现。
残差单元的输出由多个卷积层级联的输出和输入元素间相加(保证卷积层输出和输入元素维度相同),再经过ReLU激活后得到。将这种结构级联起来,就得到了残差网络。
两种方式
第一种
第二种
总结:
- 使用跳跃连接能够对反向传播的梯度下降有益,且能够对更深的网络进行训练
- 跳跃连接能够使得网络轻松地学习残差块中输入输出之间的恒等映射
网络结构
残差网络的特点
- 网络较瘦,控制了参数数量
- 存在明显层级,特征图个数逐层递进,保证输出特征表达能力
- 使用了较少的池化层,大量使用下采样,提高传播效率
- 没有使用Dropout,利用BN和全局平均池化进行正则化,加快了训练速度
- 层数较高时减少了 3 ∗ 3 3*3 3∗3卷积个数,并用 1 ∗ 1 1*1 1∗1卷积控制了 3 ∗ 3 3*3 3∗3卷积的输入输出特征图数量,称这种结构为“瓶颈”(bottleneck)
仅以此记录个人学习论文中的知识点,更多详细内容请仔细阅读原稿!
参考
[1] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. “Imagenet classification with deep convolutional neural networks.” Advances in neural information processing systems. 2012
[2] https://zhuanlan.zhihu.com/p/22447440