如何通过方差偏移理解批归一化与Dropout之间的冲突

近日南京理工大学和清华大学的研究表明 Dropout 在网络测试的时候神经元会产生方差偏移,因而进一步分析与理解如何能避免方差偏移风险,并克服二者组合的局限性。

自批量归一化提出以来,Dropout 似乎就失去了用武之处,流行的深度架构也心照不宣地在批归一化上不采用 Dropout。而近日南京理工大学和清华大学的研究表明 Dropout 在网络测试的时候神经元会产生方差偏移,因而进一步分析与理解如何能避免方差偏移风险,并克服二者组合的局限性。


在批归一化提出之前,Dropout 几乎是所有的最优网络的标配,尽管很简单,但它成功的帮助网络缓解了过拟合问题。Ioffe & Szegedy 于 2015 提出批归一化(BN)技术,通过运用该技术,不仅可以加速现代模型的速度,而且可以以正则项的形式来提高基线水平。因此,批归一化几乎应用在近期所有的网络架构中,这说明了它强大的实用性和高效性。


但是,当 Dropout 和 BN 结合在一起时并不能获得额外的增益。事实上,当一个网络同时使用这两者时,甚至会得到更差的结果。Ioffe & Szegedy 于 2015 就已经认识到,BN 在某些情况下会削弱 Dropout 的效果。他们揭露了两者之间的不相容性,从而推测 BN 提供了与 Dropout 相似的正则化功能。很多现代模型 如 Resnet,Densenet 等为这一观点添加佐证,它们在只使用 BN 的情况下得到更好的结果。


但比较有意思的是 Wide ResNet(WRN),若我们在每个 Bottleneck 的两个卷积层之间加上 Dropout,性能却可以得到稳定的提升。因此到目前为止,以前的信息和线索仍不能解释 Dropout 和 BN 之间的复杂关系。


本论文作者发现理解 Dropout 与 BN 之间冲突的关键是网络状态切换过程中存在神经方差的(neural variance)不一致行为。试想若有图一中的神经响应 X,当网络从训练转为测试时,Dropout 可以通过其随机失活保留率(即 p)来缩放响应,并在学习中改变神经元的方差,而 BN 仍然维持 X 的统计滑动方差。这种方差不匹配可能导致数值不稳定(见图 1 中的红色曲线)。而随着网络越来越深,最终预测的数值偏差可能会累计,从而降低系统的性能。简单起见,作者们将这一现象命名为「方差偏移」。事实上,如果没有 Dropout,那么实际前馈中的神经元方差将与 BN 所累计的滑动方差非常接近(见图 1 中的蓝色曲线),这也保证了其较高的测试准确率。


图 1:上:关于「方差偏移」的一个简单数学说明。由于使用了 Dropout,X 在测试阶段的方差不同于训练阶段。同时,BN 将该方差视作训练中累计的通用统计数据。注意 p 代表 Dropout 的保留率。下:在 CIFAR100 上训练 DenseNet 得到的方差偏移实验统计数据。两条曲线都是从同一训练数据集中计算所得。「滑动变量i」是在整个学习过程中第 i 个 BN 层的累计滑动方差(取其平均值,而不是其向量),「实际变量i」代表在前馈推理过程中第 i 个 BN 层之前的神经响应实际方差。


本文作者从理论上证明了「方差偏移」要满足两个一般条件,并对上文提到的 Dropout 和 BN 之间的关系给出了令人满意的解释。除此之外,他们在 CIFAR10/100 数据集上进行的其它模型试验(即 PreResNet、ResNeXt、DenseNet、Wide ResNet)证明了他们的预期想法。


由于结合二者造成性能损失的主要原因已经发现,作者们采用了两种策略来探索如何打破这种局限。一个是在所有 BN 层后使用 Dropout,另一个就是修改 Dropout 的公式让它对方差并不那么敏感。因为这两种方法都能降低方差偏移的风险,它们大多数情况下都能工作得很好,且能取得额外的提升。


论文:Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift



论文地址:https://arxiv.org/pdf/1801.05134.pdf


摘要:本篇论文首先从理论上和实验数据两方面回答了「为何通常两个强大的技术 Dropout 和 BN 结合起来用反而会造成性能损失?」理论上,我们发现,当模型状态由训练到测试时,Dropout 会使具体神经元的方差产生偏移。但是,BN 在整个测试阶段都会保留它在训练过程学习并累计得到的方差。当在 BN 之前应用 Dropout 时,该方差的不一致(我们将该现象命名为「方差偏移」)造成推理中的数值不稳定性,最终将导致更多的错误预测。尽管在 DenseNet、ResNet、ResNeXt 和 Wide ResNet 上做的实验验证了我们的发现。我们接下来探讨修改 Dropout 的几种策略,并通过避免方差偏移风险来克服二者组合的局限性。


图 2:分析方差偏移的两种情况。



图 4:按列看,四个深度网络在 BN 层上的「方差偏移」统计数据可视化,每一行分别代表 1)Dropout 类型;2)Dropout 失活率;3)数据集,连同他们的测试错误率(第五行)。很明显,当 Dropout 失活率≤ 0.5 时,WRN 受 Dropout 影响最小(即小的方差偏移),因此,它在将 Dropout 用于 BN 前甚至有些许提升。



图 5:训练轮数对应的准确率。蓝线表示两个模型没有 Dropout 的训练结果。红线表示对应模型的有 Dropout 的训练结果。所有准确率均由训练集计算得出,且实线表示 train 阶段结果,虚线表示评估阶段结果。我们发现 Dropout 失活率为 0.5 的网络从训练转换成测试阶段的准确率发生了显著变化,同时网络的所有参数都是不变的,但是测试时应用了 Dropout 和 BN。



图 6:DenseNet 在 CIFAR10 数据集上以0.5的随机失活率训练所产生的训练模式和测试模式之间的神经元不一致响应的例子。样本取自训练集,模型参数不变时虽然它们在学习过程中被正确地分类,但在推理过程中却被分错类。方差偏移最终导致预测错误,由此降低模型性能。



表 4:在所有 BN 层后应用 Dropout 的错误率。所有数值取 5 次并行实验(随机初始输入)的均值。



表 5:ImageNet 上表现顶尖的模型,在它们所有 BN 层后应用 Dropout 的错误率。所有数值取 5 次并行实验(随机初始输入)的均值。我们可以看到持续的提升。



表 6:在 Dropout-(b) 上应用新型 Dropout(即 Uout)。所有数值取 5 次并行实验(随机初始输入)的均值。


该论文的第一作者李翔在知乎专栏解释了这篇论文的主要思想与发现,希望详细了解该研究的读者可查看原论文和作者专栏(https://zhuanlan.zhihu.com/p/33101420)。

理论理论论文Dropout
2