note-ResNet
note-ResNet
Ivoripuion工作:使用参差学习网络来让使得训练深的网络比之前容易得多。
问题:当网络特别深,梯度要么爆炸要么消失。
传统的解决办法:
- 权重在随机初始化的时候设置适中一点
- 在中间加一些BN,使得校验每个层之间的输出、梯度和方差,使得每个层
但是当网络变深,效率变低、精度会变差。这种情况并非过拟合,而是因为训练误差、测试误差都变高了(过拟合是训练误差低、测试误差高)。
文章就提出一个办法,通过显式构造一个identity mapping,使得深得网络不会比浅的网络效果差。文章构造了一个函数:$F(x)=H(x)-x$,让使得网络更深的层不去学习之前通过网络的输出学习(比如卷积核扫出来的)到的$H(x)$,而是学习一个参差$H(x)-x$,这个参差就是学到的东西和真实的东西的参差,最终输出的东西就是:$F(x)+x$。优化的目标在此就变成了$F(x)$。
参差连接处理输入输出形状不等的情况:
- 在输入和输出上添加一些额外的零,然后就可以做相加
- 做投影,用1*1卷积核去扫
实验数据表明,有参差连接的模型,收敛会快很多、后期会好,而更深的网络-34层会比16层的效果好。
当ResNet在50+层数以上时,需要引入一个bottleneck的设计:先对特征维度降维,最后再投影回去。