Dropout和BN为什么不能共同使用? |
您所在的位置:网站首页 › si和ds为什么一起使用 › Dropout和BN为什么不能共同使用? |
一、问题:
Dropout和BN都有防止过拟合的作用,单独使用,都带来一定的性能改进,但最近的工作都不一起使用,这是为何? 二、原因:1.当网络的状态从训练转移到测试时,Dropout转移了特定神经单元的方差。但是,在测试阶段,BN保持了它的统计方差,这是在整个学习过程中积累的。Dropout和BN中方差的不一致性(命名为“方差偏移”)导致推断中不稳定的数值行为,最终导致错误的预测。 2.对于下图,展示了BN和Dropout的训练和测试区别,Dropout在训练直接以p的概率进行失活,而在测试,对每个神经元进行尺度放缩(乘p)。另一种等价的表现形式,在训练阶段乘1/p,而测试阶段不需要做任何改动,所以,训练:X=a*(1/p)*X,测试:X=X,存在方差偏移。
3.作者的发现: (1)在任何情况下,更高的dropout概率会打破神经反应的稳定性,因此我们dropout概率< 0.5。综上所述,转移风险同时取决于Dropout比率和特征维数。特征维度就是隐藏层神经元个数,Dropout以一定概率对隐藏元个数进行失活,这个会受到影响。而BN也在每一层隐藏层个数进行BN计算(或者说沿着C维度进行BN计算)。 详细的数学证明看原文。 (2)通过训练数据调整移动均值和方差有利于改进,但与没有Dropout训练的baseline相比,它不能弥补性能上的全部损失。此外,在测试期间应用Dropout来避免“方差漂移”的网络预测的集合仍然低于这些baseline。 (3)我们理解为什么最近的一些模型(如Inception-v4 [30], SENet[14])在整个网络的最后一个BN层之后采用了一个Dropout层,因为根据我们的理论,它不会导致方差的本质偏移。 (4)我们还发现,Dropout的形式可以修改,以减少它们的方差偏移,从而提高它们的性能,即使它们处于瓶颈构建块中。 4.对我们实验的启发: (1)丢失率别太大,通道维度多一点,网络宽一点 (2)Dropout放到BN后面,对偏移有缓解。 (3)改进Dropout的形式,减少方差偏移(听着就麻烦)。 参考文章:Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |