同时使用batchnorm和dropout?

数据挖掘 机器学习 神经网络 辍学 批量标准化
2022-03-05 01:11:06

我对术语“Dropout”和“BatchNorm”之间的关系有点困惑。我认为,

  1. Dropout 是正则化技术,仅在训练期间使用。

  2. BatchNorm 是一种技术,用于加快训练速度,提高准确性等 但我也看到一些关于问题的相互矛盾的意见:BatchNorm 正则化技术吗?

那么,请有人回答一些问题:

  1. BatchNorm 是正则化技术吗?为什么?

  2. 我们应该只在训练过程中使用 BatchNorm 吗?为什么?

  3. 我们可以同时使用 Dropout 和 BatchNorm 吗?如果可以,按什么顺序?

1个回答
  1. 批量归一化可以解释为一种隐式正则化技术,因为它可以分解为总体归一化项和伽马衰减项,后者是正则化的一种形式。这在 ICLR'19 会议上发表的文章Towards Understanding Regularization in Batch Normalization中有描述。

  2. 批量标准化发生在训练时。然而,在推理时,我们仍然应用归一化,但使用训练期间学习的均值和方差统计,而不是当前批次。Batch normalization的Wikipedia 页面对此进行了很好的描述。

  3. 可以在同一个网络中同时使用 dropout 和批量归一化,没有特定的顺序。但是,在某些设置中,它们组合的性能比单独应用它们要差。在 CVPR'19 会议上发表的文章通过 Variance Shift 理解 Dropout 和 Batch Normalization 之间的不和谐进行了研究:

    [...] 当我们将该网络的状态从训练转移到测试时,Dropout 会改变特定神经单元的方差。但是,BN 在测试阶段保持其统计方差,该方差是从整个学习过程中累积的。Dropout 和 BN 的方差不一致(我们将此方案命名为“方差偏移”)导致推理中的不稳定数值行为,最终导致错误的预测。[...]