Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift
这篇文章主要讲了两个问题
- 为什么在诸多网络模型中,Dropout 和BN组合在一起会使得网络性能变差?
- 为什么在Wide ResNet上,Dropout 和BN组合在一起有时会有效?
问题原因很简单:
- Dorpout设计时保证了神经元的输出在train和test时均值一致, 但会使得神经元的输出在train和test时方差不一致。而BN则要求神经元的输出在train和test时均值和方差均保持一致。两者存在variance shift的情况。
- Wide ResNet 的输出channel很多,降低了variance shift的影响。
Kalman Normalization: Normalizing Internal Representations Across Network Layers
这篇文章提出了BN存在的两点问题
- 必须要batch够大
- 只利用了当前layer的信息,没有利用上之前layer的信息
基于此,KN利用了之前layer的均值方差信息,同时降低了batchsize的依赖。
KN的核心公式如下:
参数说明:
-
μ ^ k ∣ k , μ ^ k − 1 ∣ k − 1 \hat\mu^{k|k},\hat\mu^{k-1|k-1} μ^k∣k,μ^k−1∣k−1:第K层和第K-1层均值的最终估计值,是利用初始估计值和无偏统计值计算得到的。
-
μ ^ k ∣ k − 1 \hat\mu^{k|k-1} μ^