Stochastic Depth ResNet

Paper : Deep Networks with Stochastic Depth
Code : unofficial

摘要

随机深度神经网络是一种训练神经网络的方法,它是基于ResNet具有相当程度的冗余性的而提出的。在训练ResNet的过程中发现去掉中间几层对最终的结果也没什么影响,说明ResNet每一层学习的特征信息都非常少,冗余性很高。随机深度训练过程主要是用于解决梯度消失问题,提高训练速度,为之后的DenseNet 的提出奠定了基础。

网络结构

随机深度的训练过程核心是对于训练过程中的每个batch,我们随机选取网络层的子集,将其他层的变换使用恒等变换代替。也就是说,训练中,如果一个特定的残差块被启用了,那么它的输入就会同时流经identity shortcut和权重层;否则输入就只会流经identity shortcut。在训练的过程中,每一个层都有一个“生存概率”,并且都会被任意丢弃。在测试过程中,所有的block都将保持被激活状态,而且block都将根据其在训练中的生存概率进行调整。

image.png

在上图中,权重层 f l f_l fl使用的是经典的ResNet Block,也就是Conv-BN-ReLU-Conv-BN-ReLU

形式化的表示如下,令 b l b_l bl为服从Bernoulli 分布的随机变量,则 b l ∈ { 0 , 1 } b_l \in \{0,1\} bl{0,1} p l = P ( b l = 1 ) p_l = \text P(b_l = 1) pl=P(bl=1)为网络中第 l l l层保留的概率,则有

H l = ReLU ( b l f l ( H l − 1 ) + id ( H l − 1 ) ) H_l = \text{ReLU}(b_l f_l(H_{l-1})+\text{id}(H_{l-1})) Hl=ReLU(blfl(Hl1)+id(Hl1))

b l = 0 b_l=0 bl=0该层相当于恒等映射,当 b l = 1 b_l=1 bl=1该层相当于ResNet Block。

p l p_l pl的取值可以采用如下的式子

p l = 1 − l L ( 1 − p L ) p_l = 1-\frac{l}{L}(1-p_L) pl=1Ll(1pL)

其中超参数只有 p L p_L pL,1~L层存活的概率线性下降。作者认为浅层的网络主要用于提取底层特征,而顶层特征完全依赖于底层特征,因此越浅的网络层越不应该被丢弃。

随机深度网络可以看作是参数共享的多个浅层网络的ensemble learning,而ensemble learning的特点是综合所有的模型的预测结果,因此我们可以类似地定义随机深度测试,将每层的保留概率结合到测试过程中。正向传播的过程如下

H l t e s t = ReLU ( p l f l ( H l − 1 t e s t ; W l ) + H l − 1 t e s t ) H_l^{test} = \text{ReLU} (p_lf_l(H_{l-1}^{test};W_l)+H_{l-1}^{test}) Hltest=ReLU(plfl(Hl1test;Wl)+Hl1test)

核心观点

  1. 提出了随机深度训练方法,加速了神经网络的训练过程,改善了网络的表现。
  2. 有效地减缓了梯度消失的现象,使得残差神经网络的可训练深度更高。
  3. 强调了模块与模块之间的顺序连接并没有那么重要,为之后全连接的Dense Net奠定了基础。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值