深度的网络相当难训练,ResNet提出了一种残差结构来训练相当深度的网络
1. 网络变深会带来参数的问题,一个梯度爆炸或者消失的情况,可以从两个方面来调节,a是选取合适的参数,b通过BN对参数做一些限制。通过这些种种方式会使得网络可以收敛,但是往往深度的网络效果没那么好,
理论上更加深度的网络是不应该训练比浅层的网络效果差的,因为多的层理论上可以输出和浅层一项的特征输出(identity mapping)
resnet提出残差结构来保证深度的效果比浅层网络好!!
2 假设浅层的输出为H(x), 然后残差模块学习Y-H(x),即残差模块F 为F(H(x))的收敛目标为Y-H(x), 以Y为训练样本的话,残差模块输出为F(H(x)) + H(x)
相当于残差模块学习了plain模块所没学到的东西,从而互补
3 "bottlenect"设计是在深层结构通道数增加的时候,做残差模块资源消耗比较大,可以通过1维卷积将特征通道降维,再做空间卷积,再在残差模块输出的时候将特征通道投影回去