【深度学习】残差结构:1000层网络
2016-10-12 17:53
579 查看
本文介绍网络从几层加深到一千层的各种关键技术,尤其聚焦残差结构(Residual)在其中发挥的作用。
但简单地累加层数,并不能直接带来更好的收敛性和精度。
网络的宽度也是决定性能的关键因素,“深vs宽”未有定论,不在本文讨论之列。
ReLU响应函数(蓝色)的值域是[0,∞],只要响应为正,梯度不会消失。
ReLU的另一个优点是:计算很快。
Batch Normalization对每一个mini-batch样本进行归一化,削减了训练时网络内部的方差变化,避免过大或过小的响应。
BN的额外优点是:可以使用较大的学习率,并且对参数初始值不敏感。
虽然参数更多,但深层网络的问题显然不是over-fitting:训练集上的表现也很糟糕。
作者的设计思路如下:
如果新增的层为单位映射H(x)=x,深层网络等价于浅层网络,性能不应该变差;
但是,仅通过叠加深度网络中的非线性层,很难模拟单位映射;
所以,干脆创造一个包含单位映射的结构H(x)=x+F(x),直接训练F(x)的参数。
一个典型的残差结构如下,蓝色为需要训练的卷积层,绿色为Batch Normalization,红色为激活层 ReLU:
数据流维持尺寸和通道数不变。新增的直通路只需要添加一个对位加运算,计算量极低。
数据流先压缩成N通道,再重新扩展成M通道。卷积核较大的一层(3*3)中,使用较小的通道数N;而通道数较多(M)的两层中,使用较小的卷积核尺寸(1*1)
虽然深度远超20层的VGG4网络,但Deep Residual网络的计算复杂度却比前者更低。
和残差结构相比,直通结构把直通路x上的非线性运算,转移到了运算路F(x)上。
即使堆叠多个直通结构,也能保证一条无损的x传递到网络深层。
A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification
with deep convolutional neural networks. In NIPS,
2012. ↩
S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep
network training by reducing internal covariate shift. In ICML, 2015. ↩
He, Kaiming, et al. “Deep residual learning for image recognition.” arXiv preprint arXiv:1512.03385 (2015). ↩
K. Simonyan and A. Zisserman. Very deep convolutional networks
for large-scale image recognition. In ICLR, 2015. ↩
He, Kaiming, et al. “Identity mappings in deep residual networks.” arXiv preprint arXiv:1603.05027 (2016). ↩
问题
网络的层数越深,可覆盖的解空间越广,理论上应该有越高精度。但简单地累加层数,并不能直接带来更好的收敛性和精度。
网络的宽度也是决定性能的关键因素,“深vs宽”未有定论,不在本文讨论之列。
几层到几十层
问题:梯度消失
对于较深的网络时,在反向传播时,很容易由于响应过大/过小,进入梯度为0的区域。导致浅层无法训练。解决
ReLU
2012年5层的AlexNet1使用了ReLU结构,斩获当年ILSVRC图像分类竞赛第一名。ReLU响应函数(蓝色)的值域是[0,∞],只要响应为正,梯度不会消失。
ReLU的另一个优点是:计算很快。
Batch Normalization
2015年初的Batch Normalization2虽然没有打榜ImageNet,不过在2015年ILSVRC的参赛算法中已经是标准配置。Batch Normalization对每一个mini-batch样本进行归一化,削减了训练时网络内部的方差变化,避免过大或过小的响应。
BN的额外优点是:可以使用较大的学习率,并且对参数初始值不敏感。
一百层
问题
当层数更深时,出现了“退化问题”:深层网络和浅层网络相比,训练误差和测试误差都更大。虽然参数更多,但深层网络的问题显然不是over-fitting:训练集上的表现也很糟糕。
解决
残差结构
2015年的Deep Residual3训练出了152层网络,勇夺2015年ILSVRC分类问题第一名。作者的设计思路如下:
如果新增的层为单位映射H(x)=x,深层网络等价于浅层网络,性能不应该变差;
但是,仅通过叠加深度网络中的非线性层,很难模拟单位映射;
所以,干脆创造一个包含单位映射的结构H(x)=x+F(x),直接训练F(x)的参数。
一个典型的残差结构如下,蓝色为需要训练的卷积层,绿色为Batch Normalization,红色为激活层 ReLU:
数据流维持尺寸和通道数不变。新增的直通路只需要添加一个对位加运算,计算量极低。
瓶颈式残差结构
这个结构可以进一步增加深度,但依然保有较低的运算量。数据流先压缩成N通道,再重新扩展成M通道。卷积核较大的一层(3*3)中,使用较小的通道数N;而通道数较多(M)的两层中,使用较小的卷积核尺寸(1*1)
虽然深度远超20层的VGG4网络,但Deep Residual网络的计算复杂度却比前者更低。
一千层
问题
进一步增加层数,还能获得更好的结果吗?解决:直通结构
2016年的Identity Mapping5训练出了惊人的1001层网络,在CIFAR-10获得低于5%错误率。和残差结构相比,直通结构把直通路x上的非线性运算,转移到了运算路F(x)上。
即使堆叠多个直通结构,也能保证一条无损的x传递到网络深层。
A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification
with deep convolutional neural networks. In NIPS,
2012. ↩
S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep
network training by reducing internal covariate shift. In ICML, 2015. ↩
He, Kaiming, et al. “Deep residual learning for image recognition.” arXiv preprint arXiv:1512.03385 (2015). ↩
K. Simonyan and A. Zisserman. Very deep convolutional networks
for large-scale image recognition. In ICLR, 2015. ↩
He, Kaiming, et al. “Identity mappings in deep residual networks.” arXiv preprint arXiv:1603.05027 (2016). ↩
相关文章推荐
- 深度学习之神经网络结构——残差网络ResNet
- 深度学习与计算机视觉系列(6)_神经网络结构与神经元激励函数
- [深度学习]暴走的残差深度学习网络家族!加深了网络还是隐式多网络叠加?
- 深度学习Caffe实战笔记(15)CNN网络结构可视化
- 深度学习论文随记(四)ResNet 残差网络-2015年Deep Residual Learning for Image Recognition
- [深度学习]暴走的残差深度学习网络家族!加深了网络还是隐式多网络叠加?
- 深度学习与计算机视觉系列(6)_神经网络结构与神经元激励函数
- 【深度学习】在Caffe中配置神经网络的每一层结构
- [深度学习]Deep Residual Learning for Image Recognition(ResNet,残差网络)阅读笔记
- 【深度学习】论文导读:图像识别中的深度残差网络(Deep Residual Learning for Image Recognition)
- 深度学习与计算机视觉系列(6)_神经网络结构与神经元激励函数
- 深度学习与计算机视觉系列(6)_神经网络结构与神经元激励函数
- 【深度学习】在Caffe中配置神经网络的每一层结构
- 深度学习与计算机视觉系列(6)_神经网络结构与神经元激励函数
- 【深度学习】论文导读:GoogLeNet模型,Inception结构网络简化(Going deeper with convolutions)
- 结构递归神经网络: 时空领域图像中的深度学习--CVPR2016最佳论文详解
- 深度学习 网络结构 可视化
- 【神经网络与深度学习】【python开发】caffe-windows使能python接口使用draw_net.py绘制网络结构图过程
- 深度学习与计算机视觉系列(6)_神经网络结构与神经元激励函数
- 深度学习基础(五):循环神经网络概念、结构及原理实现