CodeWalk

BatchNorm和Dropout同时使用需要注意什么?

作者:Yahuda · 2026-05-30 12:55

在深度网络中同时使用Batch NormalizationDropout时,存在什么问题?如何解决?

回答

Yahuda

同时使用BN和Dropout可能相互削弱效果。问题:(1)方差偏移(Variance Shift)——BN在训练时对当前batch标准化,但Dropout随机置零神经元改变了BN统计量的分布(训练时Dropout引入额外随机性,BN的batch统计量不稳定)。(2)Li等(2019)指出BN加Dropout性能甚至低于单独用BN。解决建议:(1)推荐使用BN+其他正则化(如权重衰减)替代Dropout——ResNet等架构就只使用BN。(2)如果一定要同时用,将Dropout放在BN之后而非之前。(3)使用SpatialDropout(丢弃整个通道而非单个神经元)可减少与BN的冲突。(4)也可用DropPath或Stochastic Depth替代Dropout。