• 2015年何凯明提出的152层ResNet,获得了ILSVRC比赛图像识别的冠军(top1误差3.6%),同时也使得卷积神经网络有了真正的“深度”。
    随着网络深度的增加,训练变得愈加困难,这主要是因为在基于随机梯度下降的网络训练过程中,误差信号的多层反向传播非常容易引发“梯度弥散”(梯度过小会使回传的训练误差信号极其微弱)或者“梯度爆炸”(梯度过大导致模型出现NaN)的现象。目前一些特殊的权重初始化策略和批规范化(BN)等方法使这个问题得到了极大改善——网络可以正常训练了!! 但是实际情形不容乐观。当模型收敛时,另外的问题又来了:随着网络深度的增加,训练误差没有降低反而升高。 这一现象与直觉极其不符,浅层网络可以被训练优化到一个很好的解,那么对应的更深层的网络至少也可以,而不是更差。这一现象在一段时间内困扰着更深层卷积神经网络的设计、训练和应用。
  • 著名的残差网络(Residual Network,ResNet) 很好的解决了网络深度带来的训练困难的问题,它的网络性能(完成任务的准确度和精度)远超传统网络模型。

残差网络之前——高速公路网络(Highway Network)

  • 常规卷积神经网络: y = F ( x , w f ) y=\mathcal{F}(x,w_f) y=F(x,wf)
  • 高速公路网络: y = F ( x , w f ) ⋅ T ( x , w t ) + x ⋅ C ( x , w c ) y=\mathcal{F}(x,w_f)\cdot \mathcal{T}(x,w_t)+x\cdot \mathcal{C}(x,w_c) y=F(x,wf)T(x,wt)+xC(x,wc)
    (1) T ( x , w t ) \mathcal{T}(x,w_t) T(x,wt),非线性变换,称作“变换门”,负责控制变换的强度
    (2) C ( x , w c ) \mathcal{C}(x,w_c) C(x,wc),非线性变换,称作“携带门”,负责控制原输入信号的保留强度
    换句话说, y y y F ( x , w f ) \mathcal{F}(x,w_f) F(x,wf) x x x 的加权组合, T \mathcal{T} T C \mathcal{C} C 分别控制着两项对应的权重
  • 简化的高速公路网络: y = F ( x , w f ) ⋅ T ( x , w t ) + x ⋅ ( 1 − T ( x , w t ) ) y=\mathcal{F}(x,w_f)\cdot \mathcal{T}(x,w_t)+x\cdot (1-\mathcal{T}(x,w_t)) y=F(x,wf)T(x,wt)+x(1T(x,wt)),其中 T + C = 1 \mathcal{T}+\mathcal{C}=1 T+C=1

残差网络(ResNet)

  • y = F ( x , w ) + x y=\mathcal{F}(x,w)+x y=F(x,w)+x
    高速公路网络的“变换门”和“携带门”都为恒等映射时(即令 T = 1 , C = 1 \mathcal{T}=1,\mathcal{C}=1 T=1C=1 ),就得到了残差网络
  • 多个残差模块的堆叠形成的网络,称为“残差网络”
  • 相比高速公路网络:残差网络中的近路连接(shortcut),直接通过简单的恒等映射完成,不需要复杂的“变换门”和“携带门”,因此不需要引入额外的参数,减小了计算负担。
  • 若无近路连接,ResNet 实际上就是更深层的 VGG 网络,只不过 ResNet 以 全局平均汇合层(global average pooling layer) 替代了 VGG 网络中的全连接层,这使得参数量大大减少,并且降低了过拟合风险(全局平均汇合层早在GoogLeNet中就被使用了)
  • 常规残差模块(plain residual block):由 2 2 2 3 × 3 3×3 3×3卷积层堆叠而成(随着网络深度的加深,这种残差模块在实践中并不十分有效)
  • 瓶颈残差模块(bottleneck residual block):依次由 1 × 1 、 3 × 3 、 1 × 1 1×1、3×3、1×1 1×13×31×1 3 3 3个卷积层构成
    注:这里 1 × 1 1×1 1×1卷积,能够对通道数channel起到 升维或者降维的作用,从而令 3 × 3 3×3 3×3的卷积,以相对较低维度的输入进行卷积运算,提高计算效率
  • 下图瓶颈残差模块(输入和输出都是256维)的参数量 1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而常规残差模块的话就是2个3x3x256的卷积,参数量 3x3x256x256x2 = 1179648,差了16.94倍
    在这里插入图片描述
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐