论文地址: Deep Residual Learning for Image Recognition
工程代码: Github链接
0. 摘要
众所周知,神经网络的效果和神经网络的层数有很大的关系,通常越深的网络效果越好,训练难度也就越大。但是随着深度进一步增加,网络的训练代价大幅上升,但效果却没有提升,甚至有所下降,为了解决这个问题,论文提出了深度残差模块并在此基础上形成了深度残差学习框架ResNet,网络层数更深,优化更加简单,并且能够得到和深度对应的更好的训练结果。
1. 简介
深度卷积神经网络不断发展,带来了图片分类任务的一次次突破,这些模型能够集成低/中/高层的特征然后进行端到端的分类,特征的层次可以通过使用更深的模型来进行丰富。不断有实验表明模型层数越深,学习的效果也就越好,从Alexnet到VGG,正是如此。
但是训练一个深层的模型要比设计深层的模型难的多,比如梯度不稳定问题(梯度弥散和梯度爆炸),这个问题在某种程度上已经通过正则化[归一化初始化和BN层]得到了解决,使得有数十层的网络能够通过SGD和后向传播算法得到收敛。
另一个问题是当更深的层能够收敛的时候,网络的精度会开始快速下降。这种下降和过拟合无关,带来了更大的训练误差。这个问题说明并不是所有的模型都易于训练,浅层模型和在其基础简单重复模型layer的深层模型相比,效果可能会更好。
该论文中为了解决深层网络精度下降的问题提出了一中深度残差学习框架,其使用恒等快捷链接,如下图所示,将最终得到的结果记为
H
(
x
)
H(x)
H(x),令
F
(
x
)
:
=
H
(
x
)
−
x
F(x):=H(x)-x
F(x):=H(x)−x。其中
x
x
x是恒等映射,
F
(
x
)
F(x)
F(x)是残差映射。如此一来,如果残差模块的原始版本能够收敛,那么残差版本会更容易收敛。
在ImageNet上的实验结果表明:
- 论文提出的深度残差网络更容易优化而且相比对应的没有shortcut连接的版本训练误差更低;
- 论文提出的深度残差网络能够获得层数增加带来的精度提升。
2. 深度残差学习
2.1 恒等快速连接
恒等快捷链接也就是残差模块定义为:
y
=
F
(
x
,
W
i
)
+
x
y=F(x,{W_i})+x
y=F(x,Wi)+x
其中,x和y是输入和输出,函数F代表的是需要学习的残差映射,在恒等快捷连接的示意图中这个模块有两层,则残差学习可以表示为:
F
=
W
2
σ
(
W
1
x
)
F=W_2 \sigma(W_1x)
F=W2σ(W1x)
其中
σ
\sigma
σ表示ReLu激活函数(为了表示简单,bias被省略)
这样一来
F
+
x
F+x
F+x通过快速连接“相遇”然后执行逐元素相加,这就要求
F
F
F和
x
x
x的维度相同,如果不相同需要一个线性投影来调整以完成维度的匹配,其中
W
s
W_s
Ws是一个卷积操作,用于调整x通道的个数:
y
=
F
(
x
,
w
i
)
+
W
s
x
y=F(x,{w_i})+W_sx
y=F(x,wi)+Wsx
ResNet结构中F通常包含多层,当其只有一层的时候和其他线性层相似:
y
=
W
i
x
+
x
y=W_ix+x
y=Wix+x
然而这样做在实验中并没有观察到优势。
2.2 网络架构
网络和VGG16以及其Plain版本的结构图如下:
残差网络有几个特点:
- 网络较瘦,控制了参数数量
- 存在明显层级,特征图个数逐层递进,保证输出特征表达能力
- 使用了较少的池化层,大量使用下采样,提高传播效率
- 没有使用Dropout,利用BN和全局平均池化进行正则化,加快了训练速度
- 层数较高时减少了3x3卷积个数,并用1x1卷积控制了3x3卷积的输入输出特征图数量(瓶颈结构)
2.3 实现
- 将图片的最小边缩放到一个尺寸,论文中从[256, 480] 范围进行采样,然后截取 224×224 的区域
- 让截取区域的每个像素减去均值
- 使用标准颜色增强
- 在卷积层与激活层中间加入 BN层
- 初始化权重,并从头开始训练,使用批次大小为256 的 SGD
- 学习速率从 0.1 开始,每次误差停止下降时就让学习速率下降10倍。
- 模型迭代次数达到 60 x 1 0 4 60x10^4 60x104次
- 动量为 0.9,权重衰减 0.0001
- 不使用 Dropout。
3. 深入理解ResNet
残差网络单元可以进行分解,如下图,可以看出残差网络其实是由多种路径组合的一个网络,即多并行子网络的组合,整个网络相当与一个多人投票系统。
因为若整个网络是一个投票系统,那么删除网络的一部分就是少一些投票的人对最后的影响应该很小,而且最后的分类错误率应该是和删除的残差单元的个数成正比的,实验结果如下图:
根据上面的残差单元分解结构可以看出,网络较深的路径还是少数,也就是说ResNet是由大多数中度网络和小部分的浅度和深度网络组成的,虽然表面上看起来深,但实际起作用的网络层数并没有很深,ResNet的大多数梯度几种在中间的路径上,称为effective path。这样看来,ResNet作为一个多人投票系统,并没有完全解决深度网络梯度小时的问题。
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]