【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读

前言:温故而知新。这里将几篇经典文章进行总结,不想分太多篇,所以一篇讲完,篇幅较长,且每篇论文的更新时间可能不同。

本文将对AlexNet  VGG NIN ResNet FCN这五篇经典的DL文章进行回顾,motivation/解决的问题/网络的结构/创新点等大致进行梳理。(点击论文名转到论文)

会把每篇论文尽量讲透彻,想弄清的同学们最好也结合论文和分享的其他资料一起阅读,没明白的/未谈到的问题,欢迎留言讨论。

-------------------------------------------------

目录

AlexNet(待续)

VGG(待续)

FCN(待续)

NIN(待续)

ResNet(已完成)

Motivation

Idea

Identity mapping(恒等映射,f(x)=x)

Bottleneck design

实验

ResNet的缺点

补充 indentity mapping2(replacing relu)


AlexNet


VGG


FCN


NIN


ResNet

ResNet残差网络。首先推荐何恺明本人在ICML 2016上的关于ResNet的报告,看完之后看论文思路会更清晰:ResNet report ppt in ICML2016 by 何恺明  。

---------------------------------------

Motivation

特征是图像/视频所有相关问题中最重要的,"features matter"。从VGG和其他人的工作我们可以知道,网络的深度可以影响特征,越深的网络深度可以使得特征的信息更丰富。 但是“Is learning better networks as simple as stacking more layers?” NO,学习更好的网络不是只是把层叠加起来就够了。当网络深度增加,会出现问题:A. 梯度消失 or 梯度爆炸(vanishing or exploding gradients); B. *退化问题(degradation problem)。

ResNet提出来基于恒等映射(identity mapping)的shortcut 连接,主要来解决退化问题。

*degradation problem means with the network depth increasing, accuracy gets saturated(which might be unsurprising) and then degrades rapidly. 退化问题就是指,当网络的深度增加时,模型的精度开始变得饱和,不再升高,最后快速减小。在作者的实验中如下图,层数增加后误差变大,plain net显然出现了退化问题。

*为什么是退化而不是过拟合?  1)如果是过拟合,train error会减小,而test error会减小后不断增大,显然这里不符合,这里的test and train error都增大了。 2)假想有一个n层的网络A 和一个m层的网络B (m>n)都要去拟合H(x),按道理来说,假如把B网络的前n层用已经训练好的网络A来代替,而后m-n层用恒等映射代替(identity mapping,f(x)=x),那么对于足够复杂的数据,B网络的原版应该会比B网络的代替版学到更好的表征,也就是B网络的误差

 

【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读_第1张图片 左:plain net test accuracy with the depth of network increasing--from resnet's work;
右:网络A和B, 反常的degradation现象  图 by  Prakash Jay

---------------------------------------

Idea

回到刚才,我们已经确认网络的深度可以提高网络的性能,接下来就是我们要设计一个什么样的网络结构才能最大化的把depth increasing的优点发挥出来。假如我们只是单纯地叠加层,如下图左,假设我们想要拟合的映射为H(x),想要直接从多个非线性层去拟合是十分困难的。这里作者考虑,如果把多个非线性层看成渐进地近似一个复杂函数(asymptotically approximate complicated function,那么,这就等价于,多个非线性层叠加也可以是渐进地在近似一个残差函数F(x),F(x)=H(x)-x。在同样用非线性层去渐进拟合一个复杂函数时,残差函数更容易学习(下图中),此时的H(x)= F(x)+x,通过学习这个残差,作者认为可以比较好的解决退化问题。

这时作者构建的结构为: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. 其余结构保持不变,增加恒等映射的层,即ResNet的方法是 在每n层增加一个跳跃连接(也就是本文的shortcut, identity mapping),构成一个残差块。(n一般为2/3,为1时意义不大)

*引入了跳跃连接,这可以使上一个残差块的信息没有阻碍的流入到下一个残差块,提高了信息流通,并且也避免了由与网络过深所引起的消失梯度问题和退化问题

【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读_第2张图片 residual block design

 

这里我们再解释一下中间图。首先F(x)是什么?为什么要用残差?

  1. F(x) here is simply the entire two-layer non-linear chain that is operating on the input x. Then, the final output is simply F(x)+x=H(x).  F(x)指代的是一个residual block内 加上恒等映射x之前 的 所有 stacked layers的非线性操作。
  2. 假设模型学出来的映射为h(\cdot ),而我们要拟合的函数为H(x)H(x)\approx h\left ( \cdot \right ),同样的,残差网络学学出来的映射为R(\cdot )H(x)\approx R\left ( \cdot \right )+ x。   为什么要用残差?这里我们不妨用泰勒展开进行理解:令H(x)=c_{0}+c_{1} x+c_{2}x^{2}+...,那么就有H(x)=0+ 1*x+r(x) (,也就是说resnet 可以看作c0=0,c1=1)。那么,直接去学习r(x)比直接去学习H(x)更简单,使用SGD优化过程便不会出现退化现象,残差网络工作起来比plain net更好。这里也同样解释了为什么要加上x这个identity mapping。
【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读_第3张图片 来源 stackexchange

---------------------------------------

Identity mapping(恒等映射,f(x)=x)

  • indetity mapping。 实现ResNet的最重要因素是shortcut connection,其依赖于 基于skip connection的Identity mapping。
【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读_第4张图片 转自 图 by  Prakash Jay

关于跳跃连接里的identity mapping,论文里给的Intuition是,假设恒等映射是optimal的(是我们能训练出的最好的模型),那么我们可以让F(x),也就是stacked layers中的权重全部为0,这样我们就能够很轻易得学得weights = 0 且 达到y=x(optimal的效果)。而如果没有这个跳跃连接的shortcut的话,我们直接让这些非线性层去学习一个线性映射 y=x 是非常之难的,这就是为什么这里用了一个恒等映射。同理,即便x不是最优的,F(x)\approx 0,这个0附近的扰动也是可以用weights约等于0学到的,总之,比起plain net 更易学习。F(x)就是我们的residual function。

The identity shortcuts (x) can be directly used when the input and output are of the same dimensions.

  • indentity vs projection

当维度不一致的时候,使用projection W_{s}来对齐输入输出

那么这两个有什么区别呢,作者也就那些了实验来说明:A(identity mapping with zero-padding) B(在不一致维度时采用projection) C(全用projection)。

效果 C>B>A, 原因:A的zero-padding没有残差学习功能,B更好。C比B加入更多的参数,C更好,但是ABC精度差别不大,不能说明projection对于退化问题的解决起主要作用。

  • identity mapping的优点:帮助解决退化问题以提高模型精度,使网络相对传统结构而言变得更深,无多余参数(parameter free)

---------------------------------------

Bottleneck design

作者在实验中还设计了一个bottleneck结构,这个设计主要解决的是concern on the training time。

具体来说,增加的两个1×1的卷积,分别是用来减少和增加维度的,这样传递到3×3的卷积的时候,它的输入输出维度都会更小,计算速度可以更快。

【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读_第5张图片 bottleneck

 

---------------------------------------

实验

最后来说说实验。实验做的非常详细,论文也叙述的很清楚,深度学习的黑箱大家都知道,所以作者做了很多的test来验证自己的hypothsis。

  1. 比如分析layer response,通过计算响应得出 残差函数的确比非残差函数更接近0。
  2. plain net 和 resnet的对比,plain net中的退化问题,在plain net 加上了shortcut之后就解决了;而即便是一样的精度的网络深度,也有更快的收敛速度。
  3. plain net的网络深度增加引起的原因不是overfitting 而是 退化。
  4. 1000层的时候resnet效果开始变差是因为数据不够,是overfitting而不是没解决退化[捂脸]
  5. 网络深度成功加深后,的确学到了更好的特征,在目标检测这样的识别任务上效果更好。
  6. 比VGG更深/同样深度比它精度更高 时间更快 参数更少(identity mapping is parameter free)

---------------------------------------

ResNet的缺点

缺点是:Diminishing feature reuse

因为当梯度流经网络时,没有让它作用在residual block的权重上,所以训练时有可能并未学习,那么这将导致:可能只有一小部分学到了有用的representation,或者说许多块共享了很少信息贡献给网络。

【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读_第6张图片 solution 3

solution:减少深度,提高residual block的表征能力:

  1. 每一个block加更多的卷积层
  2. 加大每一层卷积核的大小
  3. 通过增加特征平面去拓宽卷积层(见右图)

 

 

 

---------------------------------------

补充 indentity mapping2(replacing relu)

另一篇论文 Identity Mapping in Deep Residual Networks 和本节开头给出的ppt里,作者这里还探讨了 用identity mapping在after-add mapping 替换relu。这里的identity mapping可以保证前向后向传播时梯度传播更smooth。具体的结构见下图

【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读_第7张图片 Identity Mappings in Deep Residual Networks by 何恺明

前向后向传播推导(比较懒直接粘ppt了)

【论文系列】AlexNet & VGG & FCN & NIN & ResNet论文解读_第8张图片 identity mapping replace relu后,梯度的前向后向传播都可以更smooth.  pics from ICML 2016 Pre by 何恺明

 

有兴趣的可以看论文和这篇博文

                                                                                                                                                                          2019.6.29 


 

你可能感兴趣的:(论文系列,深度学习)