美文网首页
残差神经网络 - ResNet50

残差神经网络 - ResNet50

作者: 是风车大渣渣啊 | 来源:发表于2019-11-21 22:12 被阅读0次

    上周写论文的时候,引用了一下恺明大神的ResNet,发现引用量已经到了32888了。柠檬精附体了……现在来回味经典~

    万能近似定理已经说明了深度神经网络的强大之处,只要有一个足够宽足够神的非线性神经网络,可以以任意精度的近似模拟一个可测映射函数。然而,臭名昭著的梯度消失(爆炸)问题,让我们认识到现实:随着深度的增加,网络表示能力增强的同时,训练的难度也在增加。于是,恺明大神为我们带来了ResNet

    ResNet v1

    paper在这里

    shortcut

    ResNet的贡献之一,就是残差结构H(x)=F(x)+x

    Res block.png

    上图中,假设拟合目标函数为H(x),非线性的叠加层为F(x),一般的做法是,使F(x)逼近H(x)。而残差结构中,使用F(x)的方式,逼近H(x)-x

    在反向传播过程中,求解每层参数的梯度,需要通过链式求导法则由深层到浅层,浅层参数的梯度中包含深层梯度的累乘。而在深度较大的神经网络中,连续的累乘极易导致梯度过小或者过大,造成浅层网络的权重难以正常更新。造成深度网络的学习能力退化的现象。
    为了解决网络退化,恺明大神提出了残差结构,这种结构有两个好处:

    • 前向传播时,浅层的特征可以在深层得到重用
      part.png
      而在F(x)→ 0时,残差结构H(x)=F(x)+x退化为H(x)=x。这正是Resnet的一个假设点,对于n层的神经网络 PlainNet,在其结构之上增加新的残差结构区块,得到更深的神经网络结构 ResidualNet,最差的结果是退化为原始的n层结构。PlainNet 是 ResidualNet 的一种特殊子结构,训练后,得到的 ResidualNet 不会弱于 PlainNet。
    • 反向传播,深层的梯度可以直接传回浅层
      res-grad.png
      浅层的梯度可以看做两个部分,一部分来源于后置深层梯度的逐层累乘,另一部分沿着shortcut结构中的支路返回,深层的梯度可以通过shortcut直接传回浅层,对浅层进行更新:
      H(x)=F(x)+x \\ \bigtriangledown x=\bigtriangledown H(x)\bigtriangledown F(x)+\bigtriangledown H(x)
      这样的梯度计算方式,可以保证在\bigtriangledown H(x)\bigtriangledown F(x)→ 0时,浅层的网络仍然可以通过 shortcut 传回的梯度\bigtriangledown H(x)进行更新。

    Identity 和 Bottleneck

    含有shortcut的残差结构可以解决在深度增加时的网络退化问题。在进行shortcut连接时,需要保证张量xF(x)具有相同的尺寸,然而,我们在进行网络结构设计时,倾向于在浅层网络使用较少的通道,在深层网络,采用更大的通道提取更加抽象的特征。为了在网络中使用不同的通道数,恺明大神带来了两种可选的结构:Identity 和 Bottleneck。

    • Identity


      identity.png

      Identity 用于输入和输出具有相同通道的情况,用于ResNet-34。

    • Bottleneck


      bottleneck.png

      Bottleneck 用于ResNet-50/101/152。

    ResNet v2

    待定。

    相关文章

      网友评论

          本文标题:残差神经网络 - ResNet50

          本文链接:https://www.haomeiwen.com/subject/dfbgictx.html