Deep Residual Learning for Image Recognition
残差连接主要干的一个事情是:
如果你新加的层不能让你的模型变好的时候,因为有残差连接的存在,可以使新加的那些层不会学到任何东西。
Abstract
(提出问题)深的神经网络非常难以训练。(本文做了什么事情)本文做了一个使用残差学习的框架来使得训练非常深的网络比之前容易很多。(本文提出的方法)。本文提供了非常丰富的实验表明残差网络非常容易训练,且能够得到很好的精度,特别是当层数增加时。在ImageNet这个数据集上,评估了深度为152层的残差网络——是VGG nets的8倍,且有更低的复杂性。这个残差网络在ImageNet上得到了3.57%的测试精度。这个结果让他们赢得了ILSVRC2015分类任务。本文还展示了怎么在CIFAR-10(一个非常小的数据集,在cv中常见)训练10—1000层的网络。
对很多视觉的任务来说,深度是非常重要的。仅仅只是把网络换成残差网络,在coco目标检测数据集上便得到了28%的相对改进。
1 Introduction(摘要的增强版本)
深度卷积网络好,因为我们可以加很多层,把网络变得非常深,然后不同程度的层会得到不同level的features。
(提出问题)随着我们网络越来越深,一个问题:只是简单的把所有网络堆在一起就可以了吗?当你的网络非常深的时候,会出现梯度爆炸/消失,解决这个问题的一个措施是初始化权重的时候,不要太大/小,另一措施是在中间加入一些normalization(例如BN,可以使得校验每个层之间的那些输出和其梯度的那些均值和方差。),使用上述技术是可以训练、收敛的。
虽然能够收敛了,但是网络变深的同时精度变差了(如下图,56层的网络精度小于20层)。但不是overfitting,因为56层的训练误差和测试误差都高于20层。
考虑一个比较浅一点的网络和其对应的比较深的一个网络,在理论上,如果较浅的网络效果不错,那个较深的网络效果是不应该变差的,因为新加的那些层总会把这些层学的变成一个identity mapping(恒等映射,输入是x输出也是x),但实际上做不到。
这篇文章就提出了一个办法,使得可以显示的构造出一个identity mapping,解决上述问题,叫做deep residual learning framework。(解释了一下要干什么事情)之前网络已经学到了x,新加的层只需要学习F(x)=H(x)-x(学到的东西和真实的东西之间的残差),最后的输出是F(x)+x (核心)。
identity shortcut connections不会增加任何的参数,也不会让计算变高,整个网络仍然是可以被训练的。
实验表明:(1)非常深的残差网络很容易可以被优化,但是不加残差连接,其效果会很差;(2)残差网络越深,精度越高。
在CIFAR-10可以train到1000层。
讲了一下imagenet上的结果。
2 Related Work
Residual Representations
Shortcut Connections
Deep Residual Network
3.3 Network Architectures
Residual Network(如何处理输入和输出的形状是不同的情况)(A)在输入和输出上分别添加0,是这两个形状能够对应起来;(B)投影,例如使用1*1的卷积层(在空间维度上不做任何东西,主要在通道维度上做改变),使得输出通道是输入通道的2倍,步幅为2以使得在高宽维度上都能匹配上。
4 Experiments
4.1 ImageNet Classification
Plain Networks 和一个没有带残差的18层和34层的网络最比较。细节见下表。可视化结果见下图。
Deeper Bottleneck Architectures(怎么构建更深的残差网络)到50层以上,引入了a bottleneck design。