残差网络

作者: SmallRookie | 来源:发表于2018-06-09 22:10 被阅读9次

    Residual Network


    原文:Deep Residual Learning for Image Recognition

    博文参考:

    代码参考:https://github.com/tornadomeet/ResNet


    简介

    深度卷积神经网络的出现使得图像分类问题的研究突飞猛进,但随之也出现了两个问题:

    • 梯度消失、爆炸问题;
    • 退化问题(degradation problem)。

    前者,通常在初始化时,对数据进行归一化处理,以及添加正则化层处理。而后者,实验表明除了在浅层网络模型的基础上添加恒等映射(identity mapping)来构建深度网络模型之外,作者还没有找到其他的好的解决方案。


    退化问题:随着网络层数的增加,模型准确度达到某一值后迅速降低,如下图一所示:

    其中,y和x均为残差块所在层的输入与输出向量,函数F(x, {Wi})为训练残差映射所学习到的。

    以图二的残差块为例,其残差函数为F=W2sigma(W1x),其中sigma表示ReLU激活函数,出于简化省略偏置项。对于F(x)+x运算,由一个shortcut connection和以element-wise方式累加实现的,其值为二阶非线性。

    对于y=F(x,{Wi})+x,要求x与F维数相同。若出现维数不同的情况,则在shortcut connection上添加一个线性投影Ws来匹配维度:

    注:残差函数F同样适用于卷积层,且形式灵活。

    网络结构

    Plain Network

    卷积层的filter大多为3*3大小,且遵循两个设计原则:

    • 对于相同大小的输出特征图,其层需含有相同数量的filter;
    • 若特征图的大小减半,则filter的数量需翻倍,以保证每层的时间复杂度。

    在卷积层上以步长为2进行下采样操作。在网络末端以全局的均值池化层和1000个激活函数为softmax函数的全连接层结束。含权重的层总数为34层。

    ResNet

    在plain network的基础上添加shortcut connection,将网络变为ResNet。当维度增加时,可考虑如下两个方法:

    • 使用0来填补增加的维数,且此方法不会引入额外参数;
    • 在shortcut connection上添加一个线性投影Ws来匹配维数(通过卷积核大小为1*1的卷积实现)。

    对于以上两种方法,其步长均为2。


    注:

    对于添加线性投影,实际上有两种情况:

    • 只对维数增加的数据进行处理;
    • 对所有数据进行处理。

    后续实验表明,后者比前者效果好,但引入了额外参数,且线性投影与退化问题无关。因此,为了降低内存的使用、时间复杂度以及模型大小,作者采用前者进行处理。


    相关文章

      网友评论

        本文标题:残差网络

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