ResNet(残差网络)之残差模块
分类:
文章
•
2024-08-19 17:35:10
-
2015年何凯明提出的152层ResNet,获得了ILSVRC比赛图像识别的冠军(top1误差3.6%),同时也使得卷积神经网络有了真正的“深度”。
随着网络深度的增加,训练变得愈加困难,这主要是因为在基于随机梯度下降的网络训练过程中,误差信号的多层反向传播非常容易引发“梯度弥散”(梯度过小会使回传的训练误差信号极其微弱)或者“梯度爆炸”(梯度过大导致模型出现NaN)的现象。目前一些特殊的权重初始化策略和批规范化(BN)等方法使这个问题得到了极大改善——网络可以正常训练了!! 但是实际情形不容乐观。当模型收敛时,另外的问题又来了:随着网络深度的增加,训练误差没有降低反而升高。 这一现象与直觉极其不符,浅层网络可以被训练优化到一个很好的解,那么对应的更深层的网络至少也可以,而不是更差。这一现象在一段时间内困扰着更深层卷积神经网络的设计、训练和应用。
- 著名的残差网络(Residual Network,ResNet) 很好的解决了网络深度带来的训练困难的问题,它的网络性能(完成任务的准确度和精度)远超传统网络模型。
残差网络之前——高速公路网络(Highway Network)
-
常规卷积神经网络: y=F(x,wf)
-
高速公路网络: y=F(x,wf)⋅T(x,wt)+x⋅C(x,wc)
(1)T(x,wt),非线性变换,称作“变换门”,负责控制变换的强度
(2)C(x,wc),非线性变换,称作“携带门”,负责控制原输入信号的保留强度
换句话说,y 是 F(x,wf) 和 x 的加权组合,T 和 C 分别控制着两项对应的权重
-
简化的高速公路网络: y=F(x,wf)⋅T(x,wt)+x⋅(1−T(x,wt)),其中 T+C=1
残差网络(ResNet)
-
y=F(x,w)+x
高速公路网络的“变换门”和“携带门”都为恒等映射时(即令 T=1,C=1 ),就得到了残差网络
- 多个残差模块的堆叠形成的网络,称为“残差网络”
- 相比高速公路网络:残差网络中的近路连接(shortcut),直接通过简单的恒等映射完成,不需要复杂的“变换门”和“携带门”,因此不需要引入额外的参数,减小了计算负担。
- 若无近路连接,ResNet 实际上就是更深层的 VGG 网络,只不过 ResNet 以 全局平均汇合层(global average pooling layer) 替代了 VGG 网络中的全连接层,这使得参数量大大减少,并且降低了过拟合风险(全局平均汇合层早在GoogLeNet中就被使用了)
- 常规残差模块(plain residual block):由2个3×3卷积层堆叠而成(随着网络深度的加深,这种残差模块在实践中并不十分有效)
- 瓶颈残差模块(bottleneck residual block):依次由1×1、3×3、1×1,3个卷积层构成
注:这里1×1卷积,能够对通道数channel起到 升维或者降维的作用,从而令3×3的卷积,以相对较低维度的输入进行卷积运算,提高计算效率
-
下图瓶颈残差模块(输入和输出都是256维)的参数量 1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而常规残差模块的话就是2个3x3x256的卷积,参数量 3x3x256x256x2 = 1179648,差了16.94倍