CNN

ResNet

ResNet

参考:

设计思想

为什么模型越深越好?

  • 网络越深,越能提取到更抽象更深的特征,而这些特征往往具有丰富的语义信息,且网络越深提取到的特征对输入图像变化(噪声)的敏感度越小,鲁棒性越高;

  • 网络越深,梯度回传的时候易产生梯度消失的问题。

设计思想

引入残差网络:差分放大器

  • 增加了梯度之间的相关性;
  • 训练速度变快了;
  • 网络可以更深了;

核心模块 Residual Block

  • skip connection、short cut
  • identity mappings,恒等映射
  • 没有引入额外参数和计算复杂度
  • 将差分变得更大,即梯度就放大了,有利于解决梯度消失的问题;

从H(x) = F(x)转变为H(x) = F(x) = x

short cut

如果short cut的两个feature map大小不一样(即short cut之间的卷积层的stride > 1),那么需要对要加到另一个卷积层的feature map进行pooling的下采样(MaxPooling,avgpooling),以使得相加的两个feature map大小相同。

对于短路连接,当输入和输出维度一致时,可以直接将输入加到输出上。但是当维度不一致时(对应的是维度增加一倍),这就不能直接相加。有两种策略:(1)采用zero-padding增加维度,此时一般要先做一个downsamp,可以采用strde=2的pooling,这样不会增加参数;(2)采用新的映射(projection shortcut),一般采用1x1的卷积,这样会增加参数,也会增加计算量。短路连接除了直接使用恒等映射,当然都可以采用projection shortcut。

residual block的相关推导

详情见resnet v2的文章

image

v2的改进

采用pre-activation,BN和ReLU都提前了。而且作者推荐短路连接采用恒等变换,这样保证短路连接不会有阻碍。

Stochastic_Depth

设计思想

ECCV2016文章,和DenseNet同一个作者

在训练策略上的创新;