论文链接:https://openaccess.thecvf.com/content_cvpr_2016/papers/He_Deep_Residual_Learning_CVPR_2016_paper.pdf
参考学习视频:【精读AI论文】ResNet深度残差网络_哔哩哔哩_bilibili
目录
2.2.2 当x和F(x)数据结构不相同难以相加时的处理方法
3.2 ResNet网络层数变高会产生过拟合,模型效果会变差
1. 介绍
1.1 痛点——退化问题
1.1.1 问题描述
退化问题指的是当网络变深后性能还不如浅层的网络。如Figure 1. 所示,56层的训练和测试误差比20层还大。
1.1.2 解决方法
ResNet引入残差模块解决了网络退化的问题
1.2 残差
残差,即预测值和真实值之间的偏差。
如下图所示,红点为真实值,红线为预测值(相当于恒等映射),真实值与预测值之间的偏差就是残差。预测值x+偏差F(x)=真实值H(x)
2. 方法
2.1 残差结构
残差结构,如Figure 2. 所示
残差学习分为两条路:
- 右边的那条:short/skip connection,直接将输入原封不动的传到输出,是个恒等映射(identity mapping)
- 左边那条:两层的神经网络,不用拟合真正的低层分布(underlying mapping),只用拟合在原来的输入恒等映射基础上进行的修改(残差)
(相当于残差+恒等映射的效果坑定>=恒等映射,及加入残差后效果必然会大于等于原来的模型)
最后,F(x)+x(逐元素求和)再用relu处理。
实际的ResNet中,很多的残差模块堆叠,使得网络非常的深,同时解决退化问题。
2.2 通过shortcuts进行恒等映射
2.2.1 数学表达式
如公式 (1) 所示,x代表输入,y代表输出
当层数是两层时(Figure 2. ),F=W2σ(W1x),σ是ReLU函数,偏差为了简化表示被省略。
F+x这个操作由一个逐元素相加的shortcut connection来进行 。
2.2.2 当x和F(x)数据结构不相同难以相加时的处理方法
在(1)中x和F(x)尺寸必须相等(即数据的结构相同),这样才能进行逐元素相加。若进行了下采样等操作,F(x)的尺寸会变。
当x和F的尺寸不相等时,可以用以下三种方法来解决:
- 下采样时,x多出来的通道用0进行padding
- 下采样时,对identity的分支做1×1的卷积,把维度调整的和F一样
- 在下采样和普通的卷积的模块里,全都在shortcut路径里都使用1×1的卷积
2.3 网络结构
2.3.1 Plain Network
如Figure 3. 所示,受到VGG-19的启发,plain network卷积层大多具有 3×3 滤波器,并遵循两个简单的设计规则:
- 对于相同的输出特征图大小,层具有相同数量的滤波器;
- 如果特征图大小减半,滤波器的数量加倍,以保持每层的时间复杂度。
直接通过步长为 2 的卷积层执行下采样。最后,输入全局平均池化层和带有 softmax 的 1000 个全连接层。图3(中)中加权层的总数为34。
2.3.2 Residual Network
如Figure 3. 所示,residual network在plain network的基础上加入了shortnet connections。
3.实验
3.1 残差网络能够解决退化问题
如Figure 4. Figure 6. 所示,在ImageNet和CIFAR-10数据集上,(第一幅图)没有残差结构时,网络层数越多,错误率越高(出现退化问题);(第二幅图)有残差结构时,网络层数越多,错误率越低。
3.2 ResNet网络层数变高会产生过拟合,模型效果会变差
如Figure 6. 最后一幅图所示,网络层数过高时(1202),错误率会因为产生过拟合而提高。这是因为cifar-10数据集太小,1000多层表示能力太强。