论文:Deep Networks with Stochastic Depth

一、 内容简述

  本文提出了一种名为Stochastic Depth的深层神经网络训练方法,文中的主要训练对象是ResNet,在不同数据集中的实验表明,这种训练方法可以有效地解决深层网络训练困难的问题,对模型精度和训练速度都有很大的提升,为今后的深层神经网络训练提供了很好的思路,作者之后提出的DenseNet也是受到了Stochastic Depth的启发。

二、 Motivation

  当时ResNet刚提出不久,深层的神经网络展示出了非常好的性能,但是在训练深层神经网络时存在着梯度消失,信息在前向流动时逐渐减少以及训练时间过长的问题,使得深层神经网络的训练变得非常困难。

在一些任务中,如果使用浅层的神经网络,它们结构简单容易训练但是表达能力差;如果使用深层的神经网络,虽然它们的表达能力好但是更难训练,这就是当前存在的主要矛盾。

  为了解决这些问题,在提升精度的同时缩短训练时间,文中提出了Stochastic Depth训练方法,它的核心思路就是在训练时将深层网络变成浅层网络,而在测试时仍然保持原有的深层结构。

三、 Stochastic Depth主要步骤

  文章主要的训练对象是残差第一篇提出的未改进的ResNet,即下图:

神经网络 随机森林 神经网络训练数据随机_神经网络 随机森林


  通过设置一个参数bℓ∈{0,1}(服从二项分布),将原来的残差块输入输出计算公式进行改变:

神经网络 随机森林 神经网络训练数据随机_训练方法_02


  在每个mini-batch中,当bℓ=1时该残差块不作任何改变,记为存活;当bℓ=0时该残差块变为一个恒等变换。同时作者还加入了一个参数pℓ即第ℓ个残差块的存活概率,文中对各个残差块设置了线性递减的存活概率,其中第一个残差块的存活概率p0始终为1(永远不会被丢弃),最后一个残差块的存活概率pL始终为0.5,中间各残差块的存活概率计算公式为:(是线性的)

        

神经网络 随机森林 神经网络训练数据随机_深层网络_03


神经网络 随机森林 神经网络训练数据随机_深层网络_04


  以上的随机丢弃方法只用于训练当中,在测试时仍使用深层的网络,即所有的残差块都为存活状态。

四、 实验

(1) 在CIFAR-10/10+上的实验(baseline为ResNet-110)

      

神经网络 随机森林 神经网络训练数据随机_训练方法_05


  其中使用随机深度训练的ResNet的其他训练参数设置与baseline相同。从实验结果(红色框)可以看出,使用随机深度法训练的ResNet在CIFAR10+测试集中的错误率仅为5.25%,不仅比残差第一篇中训练的ResNet精度更高,也比现有的训练方法效果都要好。

       

神经网络 随机森林 神经网络训练数据随机_CNN_06


  从图中也可以看出,在CIFAR-10测试集中使用随机深度训练出的ResNet精度更高但是波动较大,文中认为是训练时网络深度不是固定的而引起的。

(2) 在CIFAR-100/100+上的实验(baseline为ResNet-110)

    

神经网络 随机森林 神经网络训练数据随机_深层网络_07


       

神经网络 随机森林 神经网络训练数据随机_深层网络_08


  实验结果为表中蓝色框,使用随机深度训练的ResNet在CIFAR-100+测试集上得到了最低的24.98%的错误率,不仅比残差第一篇中训练的ResNet精度更高,也比现有的训练方法效果都要好。

(3) 在SVHN数据集中的实验(baseline为ResNet-152)

    

神经网络 随机森林 神经网络训练数据随机_深层网络_09


       

神经网络 随机森林 神经网络训练数据随机_随机深度_10


  实验结果为表中的绿色框,在SVHN数据集的测试集中,使用随机深度训练得到的ResNet的精度排第二,错误率比残差第一篇训练出的ResNet低0.05%的同时,避免了过拟合现象的发生。(红色曲线:baseline在该数据集中出现了过拟合现象)

(4) 训练时间对比实验

        

神经网络 随机森林 神经网络训练数据随机_随机深度_11


  使用随机深度训练的时间比原来的训练时间缩短了约25%。

(5) 在CIFAR-10中使用两种方法训练ResNet-110和ResNet-1202对比

           

神经网络 随机森林 神经网络训练数据随机_训练方法_12


           

神经网络 随机森林 神经网络训练数据随机_深层网络_13


  从实验结果可以看出使用随机深度训练得到的ResNet不仅比残差第一篇训练得到的精度更高,还有效地避免了过拟合现象的发生。

(6) 在ImageNet上的实验(baseline为ResNet-152)

        

神经网络 随机森林 神经网络训练数据随机_训练方法_14


         

神经网络 随机森林 神经网络训练数据随机_训练方法_15


  按照原先ResNet的训练epoch=90,发现使用随机深度训练的ResNet错误率更高,但是有下降的趋势,作者将epoch增加为120再次对比两者,错误率基本相同,原先的ResNet比随机深度训练的ResNet错误率仅低0.2%(实验结果为紫色框)。

(7) 关于梯度消失的分析实验

神经网络 随机森林 神经网络训练数据随机_CNN_16


  如图是训练中每个epoch的第一个卷积层的平均梯度大小,两次大的降落表示设置学习率衰减的位置,可以看出使用随机深度训练的网络梯度更大,验证了这种方法可以有效地改善梯度消失的问题。

(8) 不同的pL对比实验

        

神经网络 随机森林 神经网络训练数据随机_训练方法_17


  上图方框中的数字代表错误率,对于深层的网络来说pL=0.5更加好,浅层的网络来说不是。疑问:下图中的存活率p衰减方法uniform assignment rules是什么?

神经网络 随机森林 神经网络训练数据随机_神经网络 随机森林_18


注:与dropout的主要区别:随机深度是让网络变短变浅,随机丢弃一些残差块(残差块变为恒等变换);而dropout是按比例随机切断一些神经元之间的连接,让网络变稀疏。