简介:
第一段:
核心思想:网络的深度对模型性能至关重要。
深度卷积网络自动的整合底层/中层/高层特征,然后进行端到端的分类。这是目前非常流行的识别模式。层次化的特征可以得到充实通过堆砌网络层的数量(也就是增加网络的深度),有证据表明网络的深度至关重要,在ImageNet数据集的大赛上,所有取得领先成绩的模型均采用了非常深的网络。
第二段:
核心思想:梯度消失/梯度爆炸是阻止不断增加网络深度的障碍。
虽然网络的深度对模型性能很重要,但是也不能通过简单的堆砌网络层来得到学习性更好的模型。因为臭名昭著的梯度下降/梯度爆炸问题。然而,这个问题可以通过标准的初始化和中间层标准化得到很大的缓解。通过以上的处理可以使得数十层的模型使用SGD开始收敛。
第三段:
核心思想:非常深的网络可以收敛,但又出现了退化问题。
网络退化问题:当不断的增加模型的深度,不出意料的精度会不断的上升,到饱和,然后会快速的下降。并且出人意料的是,这个问题不是由于过拟合导致的,在一个合适深度的模型增加更多的网络层会得到更大的训练精度。这就是网络退化问题。在论文【11,42】和论文的实验中均得到了证实。
第四段:
核心思想:提出疑问:更深的网络应该得到比较浅网络更低的训练误差,为什么会出现网络退化的问题
假设有一个较浅的模型,和一个较深的模型:再较浅模型后增加几层。存在这样一种可能:后加的几层都是恒等映射。这种可能性的存在表明了较深的网络不应该得到比较浅网络更高的训练误差(至少是相同的训练误差)。但是实验表明,目前的解决方案不能得到比上述恒等映射效果更好,或者一样好的模型。
第五段:
核心思想:提出解决退化问题的方案:深度残差框架
论文提出了深度残差网络来解决网络退化问题。不让网络层直接学习期望的底层映射,而是让模型去学习残差映射。假设用H(x)来表示期望网络学习的底层映射,现在改变策略,让非线性层去学习另外一个映射F(x)=H(x)-x。作者认为相较于原始映射,网络层更容易去学习残差映射。例如,在极端情况下,恒等映射是目前最优的选择,相较于让堆叠的非线性层去学习恒等映射,将残差置0更容易实现。
第六段:
核心思想:残差模块可以使用“shortcut connections”快速实现,并且不会增加额外的参数和计算复杂度。
残差模块可使用“shortcut connections”实现,shortcut连接代表恒等映射。整个网络可以使用SGD去优化,并且可以使用现有的框架(如caffe)快速简单的实现。
第七段:
核心思想:用实验结果证明以上论点
在ImageNet全面的实验结果证实了网络退化问题的存在,也评估了作者的方法。结论如下:1)深度残差网络容易被优化,相反简单增加网络层数会得到更高的训练误差。2)深度残差网络随着网络深度的增加可以很容易获得准确率的提升。得到大幅优于之前网络的结果。
第八、九、十段:
残差网络横扫各大数据集
相关工作:
第一部分:残差表示:暂时没看懂
第二部分:捷径连接:捷径连接经历了很久的实践与研究。早起的多层感知机从网络输入到输出添加一个线性层,或一些中间层直接连接。用于解决梯度消失/梯度爆炸的问题。【39,38,31,47】提出用捷径连接实现集中层响应。
“hightway network”将快捷连接和门控函数结合起来。这些门有参数并且依赖于数据。本文的残差模块没有参数。而且“hightway network”可能会被关闭,从而网络层学习的是期望的底层映射,而不是残差映射。本文的方法网络层学习的一直都是残差映射。
深度残差学习
第一部分:残差学习
假设H(X)是几个少数堆砌层(不一定指整个网络)要学习的底层映射。x表示这些层中第一层的输入。假设这些非线性层可以逐渐逼近复杂的函数h(x)。那么可以等同的认为这些非线性层可以逐渐逼近残差函数H(x)-x(假设输入输出有相同的维度)。预期让这些堆砌的网络层去逼近H(x),不如让其去逼近残差函数F(x)=H(x)-x。原来的函数等同于F(x)+x。虽然这两种方式都可以逼近所期望的函数。但可能模型学习的难易程度不同。
残差函数设计的灵感来自于网络退化问题。如果将增加的几个堆砌层构造为恒等映射。则更深的网络比应该比较浅的有更高的训练误差。退化问题表明模型在学习中很难去逼近恒等映射。相反利用残差学习的结构。如果恒等映射最有,模型在学习中可以简单的全置0。以逼近恒等映射。
第二部分:使用捷径连接实现恒等映射
论文让少数几个堆砌网络层去学习残杀。一个残差快被定义如下:
公式中F(x,{W})表示残差映射。如下图的残差块中包含两层,残差映射。F(x)+x操作有快捷连接和element-wise实现。在加法之后在执行一此非线性操作(如relu激活)。
在以上公式中,为执行F(x)+x操作,要求F(x)和x的尺寸必须相等。在不相等的情况下(当改变输入输出通道时),使用线性投影改变x的尺寸使之匹配F(x)的尺寸。
虽然在公示1中也可以给x加权重Ws。但实验结果证明,恒等映射足以解决退化问题。只有在调整x的尺寸时才使用Ws。
残差函数F(x)是灵活的。可以有多个网络层,但如果F(x)只有一层时,公示1类似于线性层。也就是说残差模块的F(x)部分也多于一层。
第三部分:网络结构
对比测试了普通网络/残差网络。网络结构设计如下:
Plain网络:主要参照VGG网络设计。使用3x3卷积核,并遵循以下两个规则:(1)相同尺寸特征图的网络层深度相同。(2)如果特征图尺寸减半,则增加一倍的深度来保证每层的复杂度相同。用步长为2的卷积层进行下采样+GAP+全连接输出。
残差网络:
1)当残差学习F(x)和x的维度相同时,直接使用element-wise的方式相加即可。
2)当残差学习F(x)和x的维度不同时,可以采取两种方式:a)shortcut连接x补0填充。此方式不会增加额外的参数。b)通过公式2实现维度调整(通过1x1卷积实现),会增加额外的参数。
可参考这篇中英文对照翻译