《Deep Residual Learning for lmage Recognition》图像识别的深度残差学习
- 作者:Kaiming He,Xiangyu Zhang,Shaoqing Ren,Jian Sun
- 单位:Microsoft Research
- 发表会议及时间:CVPR2016
作者简介
论文简介
- 现象:更深的神经网络训练效果并不好。
- 核心观念:深层次表征信息是很多视觉任务的核心点
“Deep neural networks are more difficult to train”
如何解决?
-方法:Residual Learning——残差学习
- 学习残差函数——Residual Function
- 容易优化,随深度提升,准确率提升显著
- 很好地学习了深度特征表示,即通俗理解的高级语义信息
- 获得ILSVRC2015分类任务第一名
效果?
- 152层深度——ImageNet test set获得3.57%错误率
- COCO目标检测数据集获得28%的相对提升
- 2015年ImageNet detection、localization,COCO detection、segmentation第一名
问题:简单的叠加更多神轻网络层就可以吗?
现象:
- 明显的梯度消失/爆炸问题,难以收敛——正则化解决
- 模型
退化问题
凸显,准确率饱和—? - 模型
退化问题
并非过拟合导致,增加深度导致训练集错误率提升 - 深层网络不能比浅层网络错误率更高——
identity mapping
(恒等映射)
相关工作
残差表示(Residual Representations):
- 有效的浅层表示方法:
- VLAD(vector of locally aggregated descriptors)
- Fisher Vector:Probabilistic version of VLAD
- 编码残差向量比编码原始向量表现更好
跳跃连接(Skip Connections):
- MLP——通过线性层将输入连接到输出
- 从中间层直接连接到辅助分类器
- GoogLeNet——Inception Layer
- Highway Networks——以来于数据,需要调整参数
- Residual Learning——提高信息流效率
深度残差学习(Deep Residual Learning)
深度神经网络可以拟合高维非线性函数
- 可以拟合 H(x),也可以拟合 H(x)-x
- 令 F(x)=H(x)-x,则 H(X)=F(x)+x
- 网络学习的难易程度不同
- 解决梯度消失问题,增加的网络层学习成恒等映射,则不会提升训练误差
跳层的恒等映射:
-
残差块:
y=F(x,{Wi})+x- F——需要学习的残差映射,维度与x一致
- F+x:跳跃连接,逐一加和,最后输出经过激活函数ReLU
- 没有额外参数,不增加复杂度
- F包含两个或两个以上网络层,否则表现为线性层y=W1x+x
-
残差网络:
- 两个简单的设计原则:
- 具有相同输出特征图大小的网络层卷积核数量相同
- 特征图大小减半,则卷积核数量加一倍,保证时间复杂度
- 基于普通网络,插入跳跃连接
- 维度增加时:
- A.增加零输出
- B.1x1卷积改变维度
- 两个简单的设计原则:
实验和结果(Experiments and Results)
数据集:ImageNet 2012分类数据集,1000类别
- 训练数据:128万图像
- 验证数据:50000图像
- 测试数据:100000图像
- 输出:Top-1,Top-5错误率
建议只有在设计很深的网络的时候才使用BottleNeck。
总结
源码地址:
可以参考b站讲解resnet50的视频,史上最详细ResNet50复现解析