1 abstract
将层改为residual functions,模型更容易优化
模型越深越好,是VGG的8倍。模型复杂度比VGG更低
是2015年ImageNet 的1st
深度是获胜的关键
2 indroduction
模型的深度丰富了模型的features
深模型的问题:梯度消失或爆炸,难找到最优值,现有方案:normalized initlalization ,intermediate
更深: 精度无法进一步提高,损失值比浅层更大
3 解决: 优化F(X) 比优化F(x) +x 的难度更高
+x的部分:
identify function
跳跃一层或者多层layers
不增加parameters
不增加复杂度计算
容易实现
让损失值和预测精度都随着深度更好。
总共152层,复杂程度比VGG更低。
3.1 多层layers=H(x),约等于a residual function==F(x)=H(x)-x=F(x)+x
3.2 identity maping by shortcut
shortcut block的流程:y=F(x,{wi})+x, 其中
plain block 没有x,在深度,参数,成本没有差别
pooling 的因素会改变input,output的维数,用Ws 来补齐x 需要的维度
F(x,{w}) 中的layer 可以是FC,也可以是Conv layers
3.3 network 结构
普通版:大量连续相同的conv layer,input和output 的shape 相同,当feature map 减半,filter 的数量就翻倍。普通版的filter 更少,计算复杂度更低,运算量更少(VGG 18%)
Resnet: 增加了 shortcout connection,维度不同的时候用Ws 补齐(padding with Zeros)1*1 的convolution
3.4 代码实现:
数据处理: rescale: 最短边从S=randomized[256,480] 之间抽样,得到更多的图; 224*224 修剪; 翻转;所有样本的像素减去均值; 标准颜色扩充处理。
conv layer: BN **
sgd,lr=0.1 ,当error 不降的时候,降10倍,60万iteration,weight decay =0.0001 momentum =0.9,没有drouout
4.1 ImageNet classification
plain network :
x2 是代表2个block
stride=2 让模型缩小一半
BN 避免了梯度小时,也没有影响预测精度,但是深模型的training error 很高。可能是很低的convergence rate 造成的,
RseNet: ResNet converge faster 在反向传递中产生效果,zero padding
Bottleneck 的设计目的: 加速计算;1*1 conv ,3*3 conv,1*1 conv;先缩小,再放大还原;相比于两个3*3 的conv 并没有增加计算量,bottleneck +identity short cut 很完美;
50层的layer ResNet :
换成了bottleneck block
101 和152 的layer: 增加了bottleneck block 的数量,复杂性大幅度低于VGG16-19.没有degradation。预测精度大幅度提高,
5 why Resnet works
梯度消失或爆炸导致反向传递的时候很难更新
Resnet 梯度消失时,返回自己,可以进行参数更新。相同颜色的shape一致。
参考: https://www.bilibili.com/video/av16274698
https://www.bilibili.com/video/av16275481
https://www.bilibili.com/video/av16284825
https://www.bilibili.com/video/av16186719?from=search&seid=11680144772516069001