Residual Network
原文:Deep Residual Learning for Image Recognition
博文参考:
- [译] Deep Residual Learning for Image Recognition (ResNet)
- Deep Residual Learning for Image Recognition(译)
- Resnet理解
- 残差网络ResNet笔记
代码参考: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。
注:
对于添加线性投影,实际上有两种情况:
- 只对维数增加的数据进行处理;
- 对所有数据进行处理。
后续实验表明,后者比前者效果好,但引入了额外参数,且线性投影与退化问题无关。因此,为了降低内存的使用、时间复杂度以及模型大小,作者采用前者进行处理。
网友评论