论文笔记——ResNet


论文下载:

https://arxiv.org/pdf/1512.03385.pdf

论文代码:

https://github.com/pytorch/vision/tree/master/torchvision/models


论文摘要:

作者提到,更深层次的神经网络更难训练,提出一个残差学习框架(residual learning framework)能从大幅度增加的深度获得准确性,且这些残差网络(residual networks)更容易优化。作者在ImageNet数据集上评估高达152层的残差网络复杂性依然很低,尽管它比VGG网深8倍。该网络在2015年的ILSVRC和COCO 竞赛的各项目中均获得第一名


传统网络:

20层和56层普通网络上的CIFAR-10的训练错误(左)和测试错误(右),网络越深,训练误差越大,测试误差也越大:

论文笔记——ResNet

ImageNet上的类似现象:

论文笔记——ResNet

传统网络层数增加后,会出现“梯度爆炸/消失”问题,使得网络难以收敛

这个问题可以通过归一化(标准化)初始化和中间归一化层解决,可以让只有数十层的网络能够通过具有反向传播的SGD(随机梯度下降)开始收敛

更深的网络开始收敛时,就会出现一个退化问题,随着网络深度的增加,精度会达到饱和,然后迅速退化。作者提到这种问题并不是由过拟合引起的


关于退化问题的思考:

训练精度的降低表明并不是所有的系统都同样容易优化。让人们思考采用一个较浅层的网络结构,然后在此基础上添加后续层的深层的对应(对等)的特征

构造深层次的模型的一个解决方案:添加的层是身份特征(identity mapping),其他层是从学习过的较浅的特征层节点复制过来的


残差结构:

论文笔记——ResNet

如果一个身份映射是最优的,将残差变成零比用一堆非线性层来拟合身份映射要容易的多

快捷连接(shortcut connections)既不增加额外的参数,也不增加计算复杂度

普通神经网络块:

论文笔记——ResNet

残差卷积网络块:

论文笔记——ResNet

残差块函数F是可变的:

论文笔记——ResNet

左:F有两层;右:F有三层


残差网络结构:

论文笔记——ResNet

论文笔记——ResNet

左:VGG-19

中:一个拥有34个参数层的简单网络(36亿FLOPs)

右:一个拥有34个参数层的残余网络(36亿FLOPs),虚线捷径增加了维度


ResNet更多的结构:

论文笔记——ResNet


实验结果:

残差函数有更小的响并且残差结构可以提供合理的预处理效果:

论文笔记——ResNet

残差网络和普通网络相比,没有额外的参数:

论文笔记——ResNet

在ImageNet验证上的错误率:

论文笔记——ResNet

CIFAR-10训练结果,虚线表示训练错误,黑线表示测试错误:

论文笔记——ResNet

左:简单网络-110的误差大于60%,未显示

中间残差网络

右:残差网络110和1202层。


相关文章: