本文主要是介绍BN的真正作用,How Does Batch Normalization Help Optimization?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
与BN相关的两篇论文
Batch Normalization说BN的作用是因为解决了Internal Covariate Shift(ICS,内部输入分布变化)问题
MIT 的 NeurIPS18 How Does Batch Normalization Help Optimization?从数学推导以及实验方面证明了BN的真正作用
BN原论文的理解与分析
原始论文作者认为 BN 减小了所谓的 internal covariate shift(ICS),是 BN 成功的根基;这一观点被广泛接受但是没有被证明。
- BN:normalizing each layer,for each mini-batch
- 将每个mini-batch都进行零均值归一化,将原始数据映射到均值为0,方差为1的分布上;假设原始特征的均值为μ,标准差为δ,那么归一化公式如下(输入减均值再除以标准差),为了保证原数据的表达能力所以增加的一个平移因子β,和一个放大因子γ,这两个参数均由学习得到
- 归一化的好处,让数据在相同的学习率下,不同X的更新速率会变得更为一致,容易更快的通过梯度下降找到最优解,节约计算资源。
- 但是即使BN将每个batch数据的均值和方差分布控制在0,1,也不能说明每个batch的数据分布是一致的,因为不同分布的数据也可以有相同的均值和方差
How Does Batch Normalization Help Optimization?的理解分析
-
BN带来的性能跟输入分布的稳定性(ICS的减少)无关,并且在一定程度上认为BN并不能减少ICS;
-
BN的作用是因为它能使优化问题的解空间更加平滑,这使得梯度更具预测性和稳定性可以使用更大范围的学习速率加速网络收敛;
-
实验证明这种平滑效果并非与BatchNorm唯一相关,许多其他的正则化技术也具有类似的效果,其效果在线性网络上不如L1),P范数正则化都能对训练性能提供类似的效果改善;
-
How Does Batch Normalization Help Optimization?的实验证明,如下
-
实验具体讲解,转载至seniusen
这篇关于BN的真正作用,How Does Batch Normalization Help Optimization?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!