BatchNorm和Dropout在训练和测试的区别
AI摘要: 本文探讨了BatchNorm和Dropout在训练和测试阶段的区别,并解释了它们各自的作用。BatchNorm通过滑动平均计算全局均值和方差,用于加快数值稳定性和加速训练过程。同时,它保留这些参数至测试阶段以供使用。Dropout则在训练过程中对神经元输出进行随机冻结,减少过拟合,并在测试时将输出结果放缩1-r倍,保证激活函数输入的稳定。文章还指出Dropout的本质是Bagging思想,通过随机选择不同的神经元来降低模型的方差。
BatchNorm
每次小Batch训练都会进行标准化,将数值的分布调整为均值0、方差1,以保证数值的稳定性、加快训练。
同时,Batch Norm会维护一个全局的均值和方差,通过滑动平均计算得到。
这两个全局参数将会保留到测试的时候使用
Dropout
在训练的过程中,会对神经元的输出按照一定概率 冻结,实际操作上就是将神经元的输出全部置0,可以有效避免过拟合。
在测试的时候,所有的神经元都会参与计算,为了保证在激活函数的输入数值稳定性,需对输出的结果进行的放缩。
证明:激活函数的依赖于输入的信号强度,在训练的时候,信号强度的期望为 ,表示第个神经元能输出的概率为, 输出强度为 , 在测试的时候,所有的神经元都能输出,信号强度的期望为 ,为了保证信号强度相等,所以, 所以需要在测试的时候,将数值放缩倍。
Dropout的本质是Bagging思想。
随机选择不同的神经元等价于训练不同的模型,这种多样性可以降低模型的方差。
所谓方差,方差大代表着过于复杂,对数据集过于敏感,过于依赖某些特征,在测试集效果表现不佳