ResNet 论文阅读笔记

04 Deep Residual Learning for Image Recognition

Motivation:

之前:层数增加,效果越好

问题:学习更好的网络,是否就是堆叠更多的层数?或者说,学习更好的网络是否就跟堆叠更多的层数一样简单?

阻碍:梯度消失/梯度爆炸,妨碍了训练的收敛

解决:normalized initialization and intermediate normalization layers 使模型收敛地更快

阻碍2: degradation problem 随着网络变深,正确率会达到饱和,然后下降。有时候这并不是由过拟合造成的,且向适宜的模型中加入更多的层反而会导致更高的训练误差

解决:deep residual learning framework.

Instead of hoping each few stacked layers directly fit a desired underlying mapping, we explicitly let these layers fit a residual mapping.

残差:实际观察值与拟合值之间的差

我们原本想要求到的映射:H(x)

实际上让这些层求的映射:F(x)=H(x)-x

这样我们想要求的映射就变成了:F(x)+x

假定求残差映射更好被优化、被求得。当原本想要的映射是恒等映射时,把残差映射学成0会比使用一堆非线性层学到恒等映射要简单。

F(x)+x的具体实现就是shortcut connections

通过实验:即使很深也很好优化、训练;随着层数的加深正确率真的在增加

即:直接映射很难学,但是残差映射相对更好学

Related Work

Residual Representations
Shortcut Connections

Deep Residual Learning

Residual Learning

假设:如果一些非线性层可以渐进地逼近H(x),那么它们就也可以渐进的逼近H(x)-x。而对后者的逼近会简单一些

其实这里的H(x)-x不能严格算作是残差,这里是把shortcut上的映射全部变成了恒等映射

motivation:

​ 当我向一个训练好的网络中再多加几层的时候,如果这多出来的几层是恒等映射,按理来说所得到的结果不应该比原来差。但事实上是比原来差了的。这表示多个非线性层在拟合恒等映射上有困难。按照我上面的学习残差的思想来说,我只要把所有的权重变成0,学到的F(x)就是0了,0+x就是我所需要的optimal function,即恒等映射

​ 现实中不太有可能直接让学恒等映射,但这个思想还是有用的。

Identity Mapping by Shortcuts

ReLU

shortcut connection introduces no extra parameters and computation complexity

残差指的应该是实际观察值和拟合值之间的差,我的实际观察值其实并不是x,为什么加上的是恒等映射x呢?实验证明加上x就已经足够解决degradation的问题了,而且很节省计算资源

如果一个残差块只有一层,即y=W1x+x,实验表示似乎并没有什么性能提升

上面的分析都是针对全连接层的,但是对于卷积层也同样适用

Network Architectures

plain network: inspired by VGG

residual network: 当block的input和output维度不相等时(output的维度比input高),要么直接用0 padding,要么使用1*1卷积(后者略优于前者)

Implementation

scale augmentation

standard color augmentation

batch normalization after convolution and before activation

Experiments

ImageNet Classification
Plain networks

34-layer的比18-layer的表现略低:应该不是由于梯度消失造成的(用了BN,而且34-layer的结果还是有竞争力的),推测是因为34-layer的有更慢的收敛速度,所以在错误率的下降上更慢

Residual Networks

observations:

​ 1) 更深的网络训练误差更小,且在验证集上能够很好泛化。

​ 2)34-layer的resnet模型的错误率比plain的结果好

​ 3)res收敛更快

Identity vs Projection Shortcuts

之前也说了shortcut直接用的是x,因为这样不会引入任何参数和多余的计算,且达到的效果已经足够好了。那么如果我在shortcut上使用projection呢?

使用projection收到的效果显著优于直接用x,主要是因为额外引入了很多参数。但是projection并不是解决degradation问题的关键(计算残差才是,projection只是一种进一步的优化)。

使用恒等shortcut是bottleneck结构不引入计算量和复杂性的关键点

Deeper Bottleneck Architectures

目的:考虑到所能实际承受的时间成本

先用1*1降维,然后使用3*3卷积,最后再用1*1适当提升维度。

主要就是利用1*1适当降低维度

如果使用projection shortcut,模型的大小和时间复杂度会加倍

使用了bottleneck block构造的152-layer resnet的计算复杂度比VGG16/19还低

CIFAR-10 and Analysis

比较有趣的点:重点是放在探索极深的网络的表现上的,而不是非得超过现有的最好水平,所以说使用的网络的结构可以适当简化

Analysis of Layer Responses

随着网络加深,resnet每一层更倾向于去更少的修改信号,residual function会更接近于0(这样更好学到)

Exploring Over 1000 Layers

open problems:

​ test result is worse than that of 110-layer (overfitting)

关于highway network

对输入的一部分进行处理,另一部分直接通过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值