【论文精读】Deep Residual Learning for Image Recognition(ResNet)理论部分

Deep Residual Learning for Image Recognition

摘要

​ 对于那些比之前所使用的网络深的多的网络,作者提出了一种残差学习框架来缓和训练这种网络的难度。

作者明确地将这些层重组为关于层输入的残差学习函数,而不是学习新公式的函数。

​ 作者提供了广泛的经验性的证据,证明这些残差网络更容易被优化,并且能够从急剧增加的深度中获得精确度的提升。

​ 作者在 I m a g e N e t ImageNet ImageNet数据集上评估了一个深达 152 152 152层的残差网络——比 V G G VGG VGG网络深 8 8 8倍,但复杂性依然很低。

​ 这些残差网络的集成在 I m a g e N e t ImageNet ImageNet数据集上达到了 3.57 3.57% 3.57的误差,此结果赢得了 I L S V R C 2015 ILSVRC 2015 ILSVRC2015分类任务的第一名。

​ 作者也展示了在 C i f a r − 10 Cifar-10 Cifar−10数据集上对 100 100 100层和 1000 1000 1000层网络的分析。

​ 表达的深度对视觉识别任务来说是重点中的重点。

​ 仅因为其深读,作者所提出网络在 C O C O COCO COCO目标识别数据集上获得了 28 28% 28的相对提升。

​ 作者凭借深度网络,参加了 I L S V R C & C O C O 2015 ILSVRC \& COCO 2015 ILSVRC&COCO2015竞赛,获得了 I m a g e N e t ImageNet ImageNet 检测任务、 I m a g e N e t ImageNet ImageNet定位任务、 C O C O COCO COCO 检测任务和 C O C O COCO COCO分割任务的第一名。

1. 介绍

​ 深度网络自然的将低级/中级/高级特征和分类器以一种端到端多层的方式整合在一起,并且特征的等级可以通过堆叠层数(深度)来提升。

​ 近期的证据揭示了网络的深度极其重要,并且 I m a g e N e t ImageNet ImageNet数据集挑战中领先的成果皆采用了非常深的模型,这些模型的深度从16层到30层。

​ 许多其他的重大视觉识别任务,也从非常深的模型中取得了成果。

但是出现了一个问题:堆叠层数容易,训练好这些堆叠的层数也一样容易吗?

问 题 一 : 梯 度 消 失 / 梯 度 爆 炸 问题一:梯度消失/梯度爆炸 问题一:梯度消失/梯度爆炸

解决方法:已经很大程度上被正则初始化和中间正则层解决,这种技术能让具有数十层的网络开始因为带有反向传播的随机梯度下降而收敛。

​ 当深度网络能够开始收敛了,一个退化问题又出现了:

问 题 二 : 退 化 问 题 ( 随 着 网 络 深 度 增 加 , 准 确 率 达 到 饱 和 然 后 迅 速 下 降 。 ) 问题二:退化问题(随着网络深度增加,准确率达到饱和然后迅速下降。) 问题二:退化问题(随着网络深度增加,准确率达到饱和然后迅速下降。)

​ 出人意料的是,这种退化并非由于过拟合,向一个深度合适的模型添加层会造成误差升高。

​ 这种退化问题说明不是所有的系统都同样易于优化。

​ 作者提出一种方案,重构这个深层的模型:两个模型,一个是浅层的模型,另一个是向这个浅层加额外的层形成的深层模型。添加的层是 恒 等 映 射 f ( x ) = x 恒等映射f(x)=x 恒等映射f(x)=x,其他的层都是从浅层模型中拷贝而来。这种重构模型的存在说明了一个深度的模型不应该有比它对应的浅层模型低的准确率。

​ 但是实验显示,现有解法无法找到相对好或者好于重构方案的解决方案(或无法在可行时间内解决)

​ 本文中,作者通过引入深度残差学习框架解决了退化问题。

​ 作者明确地让这些层来学习一个残差映射,而不是希望这些堆叠在一起的层直接学习潜在的映射。正式地说,将潜在的映射表示为 $\Eta(x) , 作 者 让 堆 叠 起 来 的 非 线 性 层 学 习 另 一 个 映 射 : ,作者让堆叠起来的非线性层学习另一个映射: ,作者让堆叠起来的非线性层学习另一个映射:F(x) = \Eta(x)-x$,原始的映射被转换为 F ( x ) + x F(x)+x F(x)+x,作者假设优化残差映射比优化原始映射简单。极端来讲,如果恒等映射就是最优解,那么把残差变为 0 0 0比通过一堆非线性层学习一个恒等映射要简单的多。

​ 公式 F ( x ) + x F(x)+x F(x)+x可以通过带有“捷径”的前馈神经网络来实现。捷径连接是那些跳过一个或多个层的连接。

就作者而言,这种捷径连接仅进行了恒等映射,其输出被加在了堆叠的层的输出上。恒等捷径连接即没有增加额外的参数,也没有增加计算复杂度。整个网络依然可以通过带有反向传播算法的 S G D SGD SGD来进行端到端的训练。

也可以通过普通的库轻易的实现。

​ 作者在 I m a g e N e t ImageNet ImageNet数据集上进行了广泛的实验来说明退化问题以及评估提出的方法。

​ 作者说明了:

  • 所提出的极深的残差网络易于优化,但对应的普通网络当层数增加的时候展现出了较高的误差
  • 所提出的深度残差网络能够从大大增加的深度中获取准确率的提升,产生比之前的工作好的多的结果。

​ 相似的现象也发生在 C I F A R − 10 CIFAR-10 CIFAR−10数据集上,表明优化难题和作者所提出方法的作用不仅限于特定的数据集。作者展示了在此数据集上成功训练的 100 100 100层的模型,并探索了 1000 1000 1000层的模型。

​ 在 I m a g e N e t ImageNet ImageNet分类数据集上,获得了优异的结果。 152 152 152层的残差网络是 I m a g e N e t ImageNet ImageNet上出现过的最深的网络,但复杂度比 V G G VGG VGG还低。

​ 残差网络的集成在 I m a g e N e t ImageNet ImageNet测试集上有 3.57 3.57% 3.57的 t o p − 5 top-5 top−5误差,赢得了 I L S V R C 2015 ILSVRC 2015 ILSVRC2015分类竞赛的第一名。这种极其深的表示方法在其他识别任务上也具有杰出的泛化能力,让作者赢得了 I m a g e N e t ImageNet ImageNet检测 , I m a g e N e t ImageNet ImageNet定位, C O C O COCO COCO检测, C O C O COCO COCO分割的第一名,这种强大证据表明残差学习法则是通适的,作者希望其能用于其他视觉问题和非视觉问题。

2. 相关工作

3. 深度残差学习

3.1 残差学习

​ 将 H ( x ) \Eta(x) H(x)看成是一些堆叠起来的层(不必是整个网络)将要学习的潜在映射, x x x表示这些层中第一层的输入,如果有假说:多个非线性层能够逐渐的逼近复杂的函数,也就等于说这些非线性层可以逐渐逼近残差函数: H ( x ) − x \Eta(x)-x H(x)−x,(假定输出和输入维度相同),所有与其让这些堆叠起来的层去逼近 H ( x ) \Eta(x) H(x),作者明确地让这些层去逼近残差函数: F ( x ) = H ( x ) − x F(x)=\Eta(x)-x F(x)=H(x)−x,原来的函数因此可以表示为: H ( x ) = F ( x ) + x \Eta(x)=F(x)+x H(x)=F(x)+x。虽然这两种形式应该都能够去逐渐的逼近期望的函数,但是学习的难度不同。

​ 这种公式的重组的原因是退化问题的反直觉现象。就像前面提到的,如果添加的层是恒等映射,那么一个更深层的模型应该有不大于其对应浅层的训练误差。退化问题表明解法也许在通过多个非线形层逼近恒等映射

上存在困难。有了残差学习重组公式,如果恒等映射是最优的,解法只需要将这些非线性的权重逼向 0 0 0就可以达到恒等映射了。

​ 在实际情况中,恒等映射不太可能是最优的,但我们的重组也许能够帮助将问题预处理。如果最优函数接近于恒等映射而不是0映射,对于解法来说寻找关于恒等映射的扰动应该比学习新的函数更加容易。

​ 图 7 图7 图7展示了学习好的残差函数一般具有小的回应,说明恒等映射提供了合理的预处理。

3.2 通过捷径进行恒等映射
【论文精读】Deep Residual Learning for Image Recognition(ResNet)理论部分

​ 作者将残差学习用于每一个“层堆”,结构如 图 2 图2 图2所示,我们将其定义为:

​ y = F ( x 1 , { W i } ) + x y=F(x_1,\{W_i\})+x y=F(x1​,{Wi​})+x

​ F ( x 1 , { W i } ) F(x_1,\{W_i\}) F(x1​,{Wi​})是要学习的残差映射,例如图二中有两层, F = W 2 σ ( W 1 x ) F=W_2 \sigma(W_1x) F=W2​σ(W1​x),其中 σ \sigma σ表示 R e L U ReLU ReLU。

​ 操作 F + x F+x F+x通过捷径连接和逐元素相加来实现,相加后执行第二个非线性变化。

​ 上式中的捷径连接既没有引入额外的参数,也没有增加计算复杂度。这对于进行残差网络和普通网络的对比很有帮助。

​ 上式中 x 和 F x和F x和F的维度必须相同,如果不是这样的话(比如,改变了输入输出的通道),作者认为可以通过捷径连接执行一个线性投影 W s W_s Ws​将维度变一致。

​ y = F ( x , { W i } ) + W s x y=F(x,\{W_i\})+W_sx y=F(x,{Wi​})+Ws​x

​ 就算 x 和 F x和F x和F的维度一致,作者认为也可以使用此方阵 W s W_s Ws​进行投影,但实验证明了对于解决退化问题恒等映射已经足够了。所以 W s W_s Ws​仅仅用于维度匹配。

​ 残差公式 F F F的形式非常灵活,本文中的实验涉及有 2 2 2层或者 3 3 3层的公式 F F F,虽然也可能有更多层。但如果 F F F仅有一层,那么就会类似于一个线性层: y = W 1 x + x = ( W 1 + 1 ) x y=W_1x+x=(W_1+1)x y=W1​x+x=(W1​+1)x,不具有显著 优势。

​ 虽然上述是关于 F C FC FC层的,但也能用于卷积层。

3.3 网络结构

​ 作者测试了多个普通/残差网络,观察到了一致的现象,并描述了关于 I m a g e N e t ImageNet ImageNet的两个模型以便讨论:

  • 普通网络

    主要受VGG启发,卷积层大部分使用 3 × 3 3\times3 3×3卷积核,并遵循两个法则:

    • 对于输出的相同特征图尺寸,有相同数量的卷积核
    • 如果特征图尺寸减半,那么卷积核的数量加倍,目的是每一层的时间复杂度。

    作者通过步长为 2 2 2的卷积层直接进行下采样。网络以全局平均池化和带有 s o f t m a x softmax softmax的 1000 1000 1000路全连接结束,总层数为34层。

  • 残差网络

    基于普通网络,插入捷径连接。当输入和输出维度相同时,恒等映射可以直接使用;当输出的维度增加时,有两种处理方法:

    • 继续执行恒等映射,用 0 0 0作填充,没有额外的参数
    • 用 W s W_s Ws​投影,进行投影

【论文精读】Deep Residual Learning for Image Recognition(ResNet)理论部分

4. 实验

​ 重点提一下深度瓶颈结构

​ 考虑到训练的时间开销,调整了网络的结构,用三层的卷积堆代替了之前两层的。

​ ( 3 × 3 , 3 × 3 ) − − − − − > ( 1 × 1 , 3 × 3 , 1 × 1 ) (3\times3,3\times3)----->(1\times1,3\times3,1\times1) (3×3,3×3)−−−−−>(1×1,3×3,1×1)

1 × 1 1\times1 1×1的卷积核用于降低然后增加维度,让 3 × 3 3\times3 3×3的卷积核只需要进行更少的计算。

上一篇:深度学习《再探AE和VAE的区别》


下一篇:vim练习