ResNet 论文阅读笔记
原文:Deep Residual Learning for Image Recognition
概括
文章提出了深度残差学习网络,解决了深层网络难以优化的问题,核心思想是以学习残差代替学习直接映射,理论上这降低了网络学习到恒等映射的难度,从而使得更深的网络起码和浅的网络效果一样好
文章解决了什么问题
- 更深的神经网络更难训练,容易出现梯度爆炸和消失的问题,但初始化的正规化和中间层的正规化很大程度的降低了这一可能(不是本文主要解决的问题)
- 更深的网络的准确率达到饱和,进而不断下降,增加更多层反而引起更多的误差
- 这意味着这个系统难以优化(本文主要解决的就是更深的网络的优化问题)
用了什么方法
主要思想
理论上来说,更深的网络至少可以表现地和浅层的网络一样好,只要在一个浅层的网络后加多层恒等变换层
提出了残差学习网络来降低深层神经网络的学习难度,网络不直接学习输入到输出的映射 H ( x ) H(x) H(x)而学习输出和输入之差 F ( x ) = H ( x ) − x F(x)=H(x)-x F(x)=H(x)−x,然后通过 F ( x ) + x F(x)+x F(x)+x重建原映射,作者认为,如果恒等映射是最优的,这样的网络学习恒等变换比原来要简单(只要层的所有参数为0即可)
细节
x的传播可以很容易地使用shortcut connections实现
图中给出了ResNet的building block,定义为
y
=
F
(
x
,
{
W
i
}
)
+
x
y=F(x,\{W_i\})+x
y=F(x,{Wi})+x
其中
x
x
x,
y
y
y分别为输入和输出,
F
F
F表示待学习的残差映射,比如在上图中,就有
F
=
W
2
σ
(
W
1
x
)
F=W_2\sigma(W_1x)
F=W2σ(W1x),其中
σ
\sigma
σ是ReLU函数,且为了简洁省略了偏置项,注意第二个非线性层在
F
(
x
)
+
x
F(x)+x
F(x)+x之后使用
注意到这个shortcut connection没有引入新的参数和额外的计算复杂度
注意到
F
F
F和
x
x
x的维度必须相同,如果不相同,可以通过一个投影变换实现
y
=
F
(
x
,
{
W
i
}
)
+
W
s
x
y=F(x,\{W_i\})+W_sx
y=F(x,{Wi})+Wsx
作者也提出可以在维度match的时候在
x
x
x前加一个方阵
W
s
W_s
Ws,但实验中表明恒等映射已经足够,
W
s
W_s
Ws仅仅在维度不匹配时使用
每个building block中的层数大于等于两层(图例中是两层),作者观察到使用1层并不能带来什么好处,可能由于1层本身就是一个线性变换
y
=
W
1
x
+
x
y=W_1x+x
y=W1x+x
网络结构
作者使用一个plain网络和一个ResNet来做对比,其中
- plain Network
- 所有卷积之后输出的大小不变
- 如果特征图长宽小一半,则卷积核的数量加倍(channel加倍)以保证每层计算复杂度一样
- Residual Network
- 在plain Network的基础上加shortcut connections
- channel相同时,之间使用identity shortcuts
- 如果channel增加了(图中虚线),有两个选择:
- (A) 0 padding
- (B) 使用投影变换
- channel增加伴随着feature map的减小,此时相加的时候对x使用stride=2
注意其中的多数下采样均是由stride为2的卷积网络实现的,而非池化层
不同层的ResNet
层数不同的ResNet的区别如下
bottleneck是权衡之后的building block,更深的网络可以得到更好的结果,但是相比训练时间来说是不值得的
ResNet-50
用3层的block代替ResNet34中的2层block
ResNet101和ResNet152
使用更多的3层block得到
效果如何
plain Net和ResNet的对比
浅层的网络精度相差不多,但ResNet18收敛更快,随着层数增加,plain Net的误差反而上升,而ResNet的误差大大下降
shortcuts connection和不同层数的ResNet的对比(ImageNet)
三种shortcuts
- (A)0 padding
- (B)只在维度改变时使用投影
- ©所有shortcuts都使用投影
结果表明三种方法的结果相差不多,C比AB好一点,但C引入了太多的参数,且ResNet50/101/152比ResNet34有更高的准确率
CIFAR-10
注意到ResNet1202虽然误差也很好,但是没有ResNet110好,可能是因为过拟合的原因
结论
- ResNet更容易优化
- 更容易使得网络更深以获得更高的准确率
- 以3.57%的top-5错误率赢得了2015年ILSVRC的冠军,获得了ImageNet detection,ImageNet localization,COCO detection 和COCO segmentation的冠军
存在什么不足
?
其他
术语
- FLOPS 每秒浮点运算次数
训练的细节
Image Net
- 图片随机将小的那一维resize成[256,480]中的值,然后crop成224*224
- 使用了standard color augmentation
- 在卷积之后激活之前使用batch normalization
- 使用SGD,初始学习率为0.1,当误差停滞的时候,将学习率除以10
- weight decay 0.0001,动量0.9
- 不使用dropout
CIFAR-10
- mini batch 128
- 初始学习率0.1,在32k和48k次迭代时除以10
- 在64k次迭代时终止
问题
具体地,A、B是怎么实现的?