论文名:
Deep Residual Learning for Image Recognition
摘要:
更深的神经网络难以训练,层数越多反而效果不好。提出了一个剩余学习框架,以减轻训练的难度。即残差网络。
内容:
更深的神经网络存在一个退化问题:随着网络深度的增加,准确度变得饱和,然后迅速退化。这种退化不是由过度拟合引起的,并且向适当深度的模型添加更多层会导致更高的训练误差。
深层模型存在一个构造上的解决方案:添加的层是恒等映射,其他层是从学习的较浅模型中复制。这种构造性解决方案的存在表明较深的模型不会产生比较浅的模型更高的训练误差。
该论文通过引用深度残差学习框架来解决退化问题。
不是希望每个堆叠层直接适合残差映射。形式上,将所需的基础映射表示为H(x),让堆叠的非线性层拟合另一个映射F(x):=H(x)-x。原始映射被重铸为F(x)+x,假设优化残差映射比优化原始、未引用的映射更容易。极端情况下,如果恒等映射是最优的,则将残差推至0要比通过一维非线性层拟合恒等映射更容易。
F(x)+x可以通过具有“快捷链接”的前馈神经网络来实现。 残差网络通过加入 shortcut connections,变得更加容易被优化。包含一个 shortcut connection 的几层网络被称为一个残差块(residual block) 如上图。shortcut connection,即图中右侧从 x 到 ⨁ 的箭头)
左图ResNet沿用VGG全3x3卷积层的设计,输入通道数等于输出通道数。
右图先使用1*1卷积核进行数据降维,再对其进行空间卷积,再投影回256通道数。这里为什么使用1*1卷积核?:如果使用3*3*256的卷积,参数量为:
3
∗
3
∗
256
∗
256
=
589824
3*3*256*256=589824
3∗3∗256∗256=589824
如果使用11卷积降维后构建残差块,参数为:
1
∗
1
∗
64
∗
256
+
3
∗
3
∗
64
∗
64
+
1
∗
1
∗
64
∗
256
=
69632
1*1*64*256+3*3*64*64+1*1*64*256=69632
1∗1∗64∗256+3∗3∗64∗64+1∗1∗64∗256=69632
对比参数量的增长,11卷积可以大幅度减少参数量。
同时1*1卷积可以增加非线性激活函数,提高模型的表达能力。
结论:
ResNet基于VGG和AlexNet基础上探索得到,该论文验证了大量的结构,进行大量的横向和纵向对比才得到的最理想的结果。
最终在 ImageNet 验证集上的表现也证明了 ResNet 比当时其他网络要强,并且 ResNet 本身层级越多准确率越高。
为了证明 ResNet 的泛化能力,作者也在 CIFAR-10 数据集上做了测试和分析,ResNet 甚至做到了 1000 层以上。
这证明了基于残差学习可以让网络更深。
附录:
-
批量归一化(BN:Batch Normalization)
解决在训练过程中,中间层数据分布发生改变的问题,以防止梯度消失或爆炸、加快训练速度)
方法: 随机梯度下降法(SGD)
-
为什么使用3*3的卷积核
多个3*3的卷积核比一个较大尺寸的卷积核有更多层的非线性函数,增加了非线性表达,使判决函数更具有判决性。
-
小卷积核的优势:(一般指3x3的卷积核)
1、参数量少
2、小卷积可以堆叠使用,可以使得模型的非线性表达能力更好
3、小卷积的堆叠使用可以使模型的计算量减少
4、小卷积核堆叠使用可以达到核大卷积核一样的探测面积,还能提取到有用特征,不会丢失重要特
-
-
1*1卷积核的作用
- 升维降维
- 增加激活函数提升模型语义能力
- 减少参数数量
- 通道间数据整合(输入层和1*1卷积核连接类似全连接)