解决的问题:
由于梯度消失,深层网络很难训练。因为梯度反向传播到前面的层,重复相乘可能使梯度无穷小。结果就是,随着网络的层数更深,其性能趋于饱和,甚至迅速下降。
核心思想:
引入一个恒等快捷键(也称之为跳跃连接线),直接跳过一个或者多个层。如图一
图一
当有这条跳跃连接线时,网络层次很深导致梯度消失时,f(x)=0,y=g(x)=relu(x)=x
1. 在网络上堆叠这样的结构,就算梯度消失,我什么也学不到,我至少把原来的样子恒等映射了过去,相当于在浅层网络上堆叠了“复制层”,这样至少不会比浅层网络差。
2. 万一我不小心学到了什么,那就赚大了,由于我经常恒等映射,所以我学习到东西的概率很大。
关于为什么残差结构(即多了一条跳跃连接线后)为什么一定程度缓解了梯度消散的数学推导:
相加是尺寸一样时才可以相加,尺寸一样时如上述,当尺寸不一样时,
而所谓Resnet-18,Resnet-50,等,不过是层数不一罢了,如下图,惯用的是Resnet-50与101
一些注释:
每个卷积模块的第一层,卷积,要做下采样,使分辨率降低,即高和宽减半,同时会让深度随之增加,用3*3的卷积核,步幅为2即可完成下采样,1*1的卷积核步幅为2进行下采样的话会因为跳过造成数据损失。