04 deepresiduallearningforimagerecognitionmotivation :前:层数越多越有效
问题:学习更好的网络是积累更多的层吗? 或者,学习更好的网络就像积累更多的层一样容易吗?
阻碍:坡度消失/坡度爆炸阻碍了训练的收敛
解决方案: normalizedinitializationandintermediatenormalizationlayers使模型收敛更快
阻碍2:退化探针随着网络的加深正确率饱和,然后下降。 这不是通过拟合造成的,如果将更多的层添加到相应的模型中,训练误差可能反而会更高
解决方案:深度再现学习框架。
insteadofhopingeachfewstackedlayersdirectlyfitadesiredunderlyingmapping,weexplicitlylettheselayersidualmapping。
残差:实际观察值与拟合值之差
我们想要的映射: h(x ) )。
实际要求这些层的映射: f(x )=h ) x )-x
这样,我们想要要求的映射将是f(x ) x
假设求残差映射的方法被优化和求出。 当原本期望的映射是恒等映射时,将残差映射学习为0比大量使用非线性层学习恒等映射更容易。
f(x ) x的具体实现是短连接
实验合格:随着深度优化、训练熟练的层数的加深,准确度真的有所提高
也就是说,直接映射很难学,而残差映射比较容易学
relatedworkresidualrepresentationsshortcutconnectionsdeepresiduallearningresiduallearning表示,如果一些非线性层可以逐渐接近h(x )
其实这里的h(x )-x不能严格地说是残差。 这里我们将shortcut上的所有映射都设置为恒等映射
移动:
在训练的网络中再增加几个层时,如果其中很多层是恒等映射,在理论上就不应该得到比原来更差的结果。 但实际上比原来更糟。 这表明,多个非线性层很难适合恒等映射。 根据我上面学习残差的思想,我把所有的权重都定为0,那么我学到的f(x )就等于0。 0 x是我需要的最佳功能,即恒等映射
现实中很少让人们直接学习恒等映射,但这种思想很有用。
Identity Mapping by Shortcuts ReLU
shortcutconnectionintroducesnoextraparametersandcomputationcomplexity
我认为残差是指实际观察值和拟合值的差,但我的实际观察值其实不是x。 为什么要加上恒等映射x呢? 实验证明,加x可以充分解决降级问题,节约计算资源
在残差块只有一个层,即y=W1x x的情况下,实验上性能似乎没有很大提高
上面的分析都是针对所有连接层,但同样适用于卷积层
networkarchitecturesplainnetwork : inspiredbyvgg
如果residual network :块的输入和输出维不相等(输出维高于输入),则直接使用0填充或使用1*1卷积),后者略优于前者
实施计算评估
标准颜色评估
batchnormalizationafterconvolutionandbeforeactivation
experimentsimagenetclassificationplainnetworks 34-layer略低于18-layer :不应该是梯度消失导致的(使用BN,而且34-layer的结果具有竞争力)
residualnetworksobservations :
1 )更深的网络训练误差小,在验证集中可以很好地泛化。
2 ) 34层resnet模型的错误率优于plain的结果
3 ) res收敛快
Identity vs Projection Shortcuts以前也说过shortcut直接用x。 这是因为不引入参数和额外的计算,可以得到充分的效果。 如果我在shortcut上使用项目呢?
使用projection比直接使用x更有效,主要是因为引入了更多的附加参数。 但是,项目并不是解决降级问题的关键(只有计算残差,项目才是进一步的优化)。
使用恒等shortcut是bottleneck结构避免引入计算量和复杂性的关键
深度引导网络体系结构的目的:考虑实际可承受的时间成本
首先用1*1降维,然后用3*3卷积,最后用1*1适当升维。
主要是利用1*1适当降低维度
使用projection shortcut,模型的大小和时间复杂度将增加一倍
使用bottleneck block结构的152-layer resnet的计算复杂度低于VGG16/19
CIFAR-10 and Analysis的有趣之处在于,它的重点是探索极深的网络表现,而不是必须超越现有的最高级别,因此可以适当地简化所使用的网络结构
随着网络变深,分层响应分析倾向于在resnet的每一层上对信号的修改越来越少,从而导致重建函数接近0。 (
Exploring over 1000 layersopenproblems :
测试性分层(over fitting )。
对于highway network,处理部分输入,另一部分直接通过