东阳的学习记录,坚持就是胜利!
文章目录
研究背景及意义
研究背景
Highway Network
首个成功训练成百上千层(100层及900层)
的卷积神经网络
思路:借鉴LSTM, 引入门控单元,将传统前向传播增加一条计算路径, 变成公式( 3) 形式
增加了额外训练参数W_T(这是一个缺点,并且再resnet中避免了
)
研究意义
简洁高效
(没有花里胡哨的训练技巧和网络结构)的ResNet受到工业界宠爱
, 自提出以来已经成为工业界最受欢迎的卷积神经网络结构- 近代卷积神经网络发展史的又一
里程碑
, 突破千层网络, 跳层连接成为标配
摘要
- 提出问题: 深度卷积网络难训练
- 本文方法: 残差学习框架可以让深层网络更容易训练
- 本文优点: ResNet易优化,
并随着层数增加精度也能提升
(虽然精度不如低层,但也能得到比较好的结果) - 本文成果: ResNet比VGG深8倍, 但是计算复杂度更低, 在ILSVRC-2015获得3.57%的top-error
- 本文其它工作: CIFAR-10上训练1000层的ResNet
- 本文其它成果: 在coco目标检测任务中提升28%的精度, 并基于ResNet夺得ILSVRC的检测、 定位, COCO
的检测和分割四大任务的冠军
网络退化
越深的网络拟合能力越强,因此越深的网络训练误差
应该越低, 但实际相反。因为新加的网络就算什么都不做(恒等映射
),也不至于变坏。
原因:并非过拟合
,而是网络优化困难
,见下图:
残差结构
Residual learning: 让网络层拟合H(x)-x
, 而非H(x)
注: 整个building block仍旧拟合H(x) , 注意区分building block与网络层的差异, 两者不一定等价
如下图所示:
每层网络输出的结果是两项相加的结果。
加了跳层连接(shortcut),增加了恒等映射
的可能行!
当F(x)为0,则H(x) = x,网络实现恒等映射
Shortcut mapping
Identity与F(X)结合形式探讨:
- A-全0填充:维度增加的部分采用0来填充
B-网络层映射
:当维度发生变化时,通过网络层映射(例如:1*1卷积)特征图至相同维度- C-所有Shortcut均通过网络层映射(例如:1*1卷积)
在论文中使用的时B方案。
Shortcut mapping 有助于梯度的传播
恒等映射使得梯度畅通无阻的从后向前传播,这使得Resnet结构可拓展到上千层(1202层)
网络结构
划分为6个stage
(和6模型融合有关吗)
- 头部迅速降低分辨率
- 4阶
残差结构堆叠
(4个layers层) - 池化 + FC层输出
残差结构堆叠的两种方式
Basic:两个33卷积堆叠
Bottleeneck:利用11卷积减少计算量
Bottleneck:
第一个11下降1/4通道数
第二个11提升4倍通道数
预热训练
避免一开始较大学习率导致模型的不稳定, 因而一开始训练时用较小的学习率训练一个epochs
(这里视情况而定), 然后恢复正常学习率。
实验结果及分析
实验1
如下图:可以看到residual learning可解决网络退化问题, 可训练更深网络,并得到更好的结果。
实验2
横纵对比,shortcut策略(ABC)及层数
从上图中可以看到:网络层映射可以提升模型表现,深度的增加也可以提升精度。
模型融合
用作模型融合的几个模型的只是在深度上有区别。
思考与展望
- 大部分的梯度消失与梯度爆炸问题,可以通过
良好的初始化或者中间层的标准化
来解决。 shortcut connection有很多种方法
,本文主要采用的时恒等映射,即什么也不操作的往后传播。- highway network引入了门阀,增加了需要额外训练的参数,但
resnet没有增加新参数
。 - 恒等映射形式的shortcut connection是从网络退化问题中思考而来(
就算什么也不做,也不至于变坏、那就增加什么也不做的可能性
) - 借鉴VGG:本文设计原则
- 处理相同大小的特征图,卷积核数量一样;
- 特征图分辨率降低的时候,通道数翻倍;
- 当特征图的分辨率变化时,shortcut 采用的是stride=2进行处理
- 当特征图分辨率变化时,short connection同样采用stride=2进行处理
- bottlenect中使用1*1卷积用于增加/减少通道数
- 模型采用6中不同深度的resnet结构做模型融合
- 采用小学习率预训练,之后再用大学习率训练,以此加速模型的收敛。
- cifar-10数据集上, ResNet-1202比110要差, 原因可能是
过拟合
, 而不是网络退化 - 比较重要的一点:在googlenet-v3中的非对称卷积分解建议在分辨率在12-20之间,在resnet中是在14*14时修改building block的数量,为什么都选择在这个分辨率进行修改呢,是否可以得出某种经验结论。
- VGG因为全连接层,导致参数数量很大,所以经常被“鞭尸”。
- 人类完成的是逻辑上的改变,给模型更多的可能性,美其名曰,
一切交给模型
。