【卷积神经网络】(六) 残差⽹络 ResNet
1 简介以及开发背景
残差神经网络(ResNet)是由微软研究院的何恺明、张祥雨、任少卿、孙剑等人提出的。ResNet 在2015 年的ILSVRC(ImageNet Large Scale Visual Recognition Challenge)中取得了冠军。
在2012年的ILSVRC挑战赛中,AlexNet取得了冠军,并且大幅度领先于第二名。由此引发了对AlexNet广泛研究,并让大家树立了一个信念——“越深网络准确率越高”。这个信念随着VGGNet、Inception v1、Inception v2、Inception v3不断验证、不断强化,在当时得到越来越多的认可。
人们发现,在实际应用中,随着模型的深度加深,模型的性能虽然会得到较大的改善。但是模型的训练难度也会急剧上升,以导致模型的准确率呈现出“越深网络准确率越低”,该现象亦被称为“退化现象(degradation)”。
ResNet 导入了“快捷连接(shortcut connection)”以解决这一问题。导入该结构后,就可以随着层的加深而不断提高性能了。
2 ResNet网络结构
2.1 短连接 shortcut connection
图1 一个构建块中的残差学习示意图
(此图来源于原论文)
在公式
y
=
F
(
X
,
W
i
)
+
W
s
X
y = F(X,{W_i})+W_s X
y=F(X,Wi)+WsX中,说明了一个残差构建块的输出
y
y
y与输入
x
x
x的映射关系,“
+
W
s
X
+W_sX
+WsX”表示了短连接。
在 ResNet 中添加短连接的主要目的是解决深度神经网络中的梯度消失和梯度爆炸问题。当神经网络的深度增加时,梯度在反向传播过程中会逐渐变小,导致训练变得困难,甚至无法收敛。通过添加短连接,可以让网络直接从前面的层中绕过一些层,使得梯度可以更快地传递,从而避免梯度消失的问题。此外,短连接还可以帮助防止过拟合,因为它可以增加网络中的参数数量,从而提高模型的复杂度,进而提高模型的泛化能力。
2.2 ResNet
按照这个思路,ResNet团队分别构建了带有“快捷连接(Shortcut Connection)”的ResNet构建块(building block)、以及降采样的ResNet构建块,区降采样构建块的主杆分支上增加了一个1×1的卷积操作,见图2。
图2 ResNet构建块示意图
(此图来源于原论文)
图3展示了34层ResNet模型的架构图,仿照AlexNet的8层网络结构,我们也将ResNet划分成8个构建层(Building Layer)。一个构建层可以包含一个或多个网络层、以及一个或多个构建块(如ResNet构建块)。
图3 34层ResNet模型的架构图
(此图来源于《TensorFlow深度学习实战大全》)
第一个构建层,由1个普通卷积层和最大池化层构建。
第二个构建层,由3个残差模块构成。
第三、第四、第五构建层,都是由降采样残差模块开始,紧接着3个、5个、2个残差模块。
其余各个构建层见图3。