ResNet先导
1.论文
论文题目:Deep Residual Learning for Image Recognition
作者 :Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun
核心思想:残差学习
在传统的方式中让几层非线性层直接拟合目标映射 H(x),而残差的方式为让这些层拟合残差映射:F(x)=H(x)−x,则最终输出为:y=F(x)+x。
论文中比较关键的一段话:The degradation (of training accuracy) indicates that not all systems are similarly easy to optimize. Let us consider a shallower architecture and its deeper counterpart that adds more layers onto it. There exists a solution by construction to the deeper model: the added layers are identity mapping, and the other layers are copied from the learned shallower model. The existence of this constructed solution indicates that a deeper model should produce no higher training error than its shallower counterpart. But experiments show that our current solvers on hand are unable to find solutions that are comparably good or better than the constructed solution (or unable to do so in feasible time).
翻译为:训练精度的退化现象表明,并非所有系统都同样容易优化。让我们考虑一个较浅的网络架构,以及在其基础上添加更多层所得到的更深网络。对于这个更深模型,通过构造的方式是存在一个解:只需将新增的层设为恒等映射(即输出等于输入),而其他层则直接复制已训练好的浅层模型的参数。这个构造解的存在说明,深层模型的训练误差在理论上不应高于其浅层对应物。然而,实验结果表明,我们现有的优化求解器无法找到与这个构造解相当或更好的解(或者说,无法在可行的时间内做到这一点)。
从这段看出需要新的方法来优化,即上文的残差学习。
2.ResNet
2.1 Batch Normalization
Batch Normalization 是在每一层的输入上做一个归一化操作,让数据分布更稳定,从而让梯度下降更顺畅。
为什么要用Batch Normalization?
因为在深度网络中,每一层的输入分布会随着前一层参数的变化而不断变化。这就导致:1.每一层都需要不断适应前一层输出的分布变化。2.训练过程不稳定。3.需要更小的学习率、更细致的初始化。而传统方法(例如 Dropout 等正则化手段,使用较小的学习率等)不能根本解决这一问题,这就需要Batch Normalization(对每个 mini-batch 的数据进行归一化),使用了Batch Normalization的好处在于1.加速训练。2.缓解梯度消失/爆炸。3.降低对初始化的依赖。4.允许使用饱和激活函数。
2.2 残差块
ResNet沿用了VGG完整的3×3卷积层设计。残差块里首先有2个有相同输出通道数的3×3卷积 层。每个卷积层后接一个批量规范化层和ReLU 激活函数。
2.2.1 残差块网络参数
输入数据x为224×224×3三通道的图像。
(1)输入为224×224×3,卷积核数量为64个;卷积核的尺寸大小为3×3×3;步幅为1,填充为1; 卷积后得到shape为224×224×64的特征图输出。
(2)输入为224×224×64,将输入的特征图经过批量规范化,然后经过ReLU激活函数进行激活。输出的特征图大小形状不变,为224×224×64。
(3)输入为224×224×64,卷积核数量为3个;卷积核的尺寸大小为3×3×64;步幅为1,填充为1; 卷积后得到shape为224×224×3的特征图输出。
(4)输入为224×224×3,将输入的特征图经过批量规范化。输出的特征图大小形状不变,为224×224×3。
(5)此时,残差结构需要输出特征图之前将经过上述(1)、 (2)、(3)、(4)操作的输出特征图和一开始的输入x进行 相加操作;因为x的大小为224×224×3,经过(1)、(2)、 (3)、(4)操作的输出特征图大小为224×224×3;这两个特征图的高宽和通道数一样,因此此时就不需要利用1×1的卷积核 对输出x的通道进行改变,可以直接进行相加即可。