On this page

    Abstract

    深度神经网络难以训练, 提出一种残差学习框架易于训练非常深的网络。

    残差网络易于优化, 可以通过增加深度提高准确率。

    残差网络在ImageNet数据集上取得了3.57%的错误率, 在ILSVRC2015分类任务上取得了第一。

    Introduction

    深度网络融合低中高级特征, 分类器以一种端到端的方式, 特征的等级可以通过堆叠层数来丰富。

    深度带来的问题:

    解决退化问题:

    深度残差网络:

    CIFAR-10:

    ImageNet:

    Related Work

    Residual Representations

    编码残差向量比编码原始向量更有效。

    为了解决偏微分方程(PDEs), 多网格的方法重新定义系统为多尺度的子问题, 其中每个子问题是一个由粗到细的尺度的残差解决方案。

    Shortcut Connections

    最开始的快捷连接是从网络输入到输出添加一个线性层。

    中间层直接连接到一个辅助分类器解决梯度消失和爆炸。

    inception层由捷径分支和更深的分支组成。

    “highway networks”的门控是依赖参数的, 当门控接近于0的时候,它是没有残差的。 而identity shortcut是没有参数的, 他总会学习到残差。

    identity shortcuts永远不会关闭, 所有的信息都会传递下去, 使用额外的残差函数学习。

    “highway networks”在层数超过100层后准确率没有提升。

    Deep Residual Learning

    Residual Learning

    H(x)表示几个叠起来层的映射, x表示第一层的输入。

    假设多个非线性激活可以渐进估计复杂的函数, 那么它等价于假设它们可以渐进地估计残差函数(H(x) - x)。

    与其估计H(x), 我们估计残差函数F(x) = H(x) - x, 原始的函数就可以表示成F(x) + x。

    尽管两种形式都是估计所要的函数, 学习的难度不相同。

    如果恒等映射最优的话, 多个非线性层会变为0, 解会变成恒等映射。意思是H(x) = F(x) + x, 当F(x)为0的时候, H(x) = 0。

    Identity Mapping by Shortcuts

    \[y = F(x, {W_i}) + x\]

    x为输入 , y为输出, $F(x, {W_i})$表示学习到的残差映射, $F = W_2 \sigma(W_1 x)$, $\sigma$表示ReLU, 为了简化表示,省略bias。 $F + x$由快捷连接和按元素相加实现, 在相加后采用第二次非线性激活。

    快捷连接没有引入额外的参数和计算复杂度。

    输入和输出的维度必须相等,如果不相等, 可以用W_s对输入投影:

    \[y = F{x, {W_i}} + W_s x\]

    F可以是两层或者三层, 但如果是一层的话, y=W_1x + x, 没有观察到什么优势。

    同样可以应用于卷积层。

    Network Architectures

    Plain Network

    plain baseline 受到 VGG网络 的启发。

    对于相同的特征映射尺寸, 每层都有相等的滤波器数量。

    如果特征映射的尺寸减半, 滤波器的数量加倍以保留每层的时间复杂度。

    直接使用步长为2的卷积降采样。

    最后使用一个全局平均池化和一个1000分类的全连接层。

    Residual Network

    当输入和输出是相同的维度的时候, identity shortcuts可以直接使用。

    随着维度的增加, 有两种选择:

    当shortcuts穿过两种尺寸的特征映射时, 对这两个选择, 它们都步长为2

    Implementation

    图像减去均值, 从[256, 480]随机采样, 在裁剪出224x224或者它的镜像翻转, 用于尺度增强。

    标准的色彩增强。

    在卷积之后, 激活函数之前, 使用了BatchNorm。

    SGD mini-batch 256。

    learning rate 从 0.1 开始, 当错误率稳定后除以10, 模型训练迭代到600000迭代。

    权重衰减0.0001, 动量0.9, 没有使用dropout。

    测试时采用10-crop。

    使用全卷积, 在多尺度平均分数。

    Experiments

    ImageNet Classification

    Plain Networks

    34层的plain net 比 18层的plain net 验证错误率更高

    表4表明 34层plain net贯穿整个训练过程有更高的训练误差

    我们认为这种优化困难很可能并不是由梯度消失引起的:

    Residual Networks

    对所有的shortcuts使用identity mapping, 对增加的维度使用zero-padding, 因此相比于plain net并没有增加额外的参数

    34层的ResNet要比18层的ResNet更好, 34层ResNet展现出相当低的训练错误并且泛化到验证数据

    这表明这种设置退化问题得到很好地解决并且我们可以增加深度得到更高的准确率

    18层的plain net 和 ResNet 准确率相当, 但是18层的ResNet收敛更快:

    Identity vs. Projection Shortcuts.

    比较三种选择:

    三种的结果都好于plain net:

    Deeper Bottleneck Architectures.

    对于每个残差函数F, 使用3个层堆叠起来替换2层:

    50-layer ResNet: 用3层的bottleneck block取代2层的block

    101-layer and 152-layer ResNet:

    Comparisons with State-of-the-art Methods.

    单模型 34层的ResNet取得了具有竞争力的准确率

    单模型 152层的ResNet top-5 错误率 4.49%

    融合六个不同深度的模型, 在测试机上取得3.57% top-5 错误率, 在ILSVRC 2015第一名

    CIFAR-10 and Analysis

    plain architecture

    网络输入32x32图像, 每个像素减去均值

    第一层是3x3卷积

    分别在{32, 16, 8}三种feature map大小使用了6n层3x3卷积, 每种feature map大小2n层

    卷积核的数量分别是{16, 32, 64}

    降采样的方式是使用步长为2的卷积

    网络的最后是一个全局平均池化, 10分类的全连接和softmnax

    residual architecture

    在每对3x3层使用shortcut connections, 使用zero-padding的方式identity shortcuts

    residual model 和 plain model 有相同的深度宽度和参数量

    training

    0.0001权重衰减, 0.9动量

    使用BN, 没有dropout

    双GPU 128 mini-batch size

    初始学习率0.1, 在32K和48K迭代时除以10, 64K迭代时停止训练

    数据增强: 在每个边填充4个像素, 对它或者它的水平翻转随机裁剪32x32

    测试时, 使用原始32x32图像

    令n={3, 5, 7, 9}, 使得网络20, 32, 44和56层:

    当n=18时, 网络为110层的ResNet:

    Analysis of Layer Responses.

    response是BN之后ReLU/addtion之前的

    ResNet比plain net通常有更小的responses

    这些结果支持了残差函数比非残差函数通常更接近0

    在对比ResNet20, 56和110中,更深的ResNet的response更小

    当有更多层时, ResNet的层倾向于更小地改变信号

    Exploring Over 1000 layers.

    我们探索了一个超过1000层的更激进的深度模型

    设置n=200, 网络为1202层的网络

    但是1202层的网络比110层的网络表现更差, 我们认为这是由于过拟合

    1202网络对于小的数据集可能不必要地太大了

    在这个数据及上使用强大的正则化比如maxout和dropout取得最好的结果。

    我们没有使用maxout/dropout, 而仅仅通过增加深度和更窄的结构施加正则化。

    ResNet