【deeplearning.ai笔记第二课】2.4 batch normalization
1. batch normalization介绍
批标准化(batch normalization) 是优化深度神经网络中最激动人心的最新创新之一。实际上它并不是一个优化算法,而是一个自适应的重参数化的方法,试图解决训练非常深的模型的困难。
说的通俗点,实际上就是BN就是在对每一个隐藏层的输出
非常深的模型会涉及多个函数或层组合。这使得我们很难选择一个合适的学习率,因为某一层中参数更新的效果很大程度上取决于其他所有层。而批标准化显著减少了多层之间协调更新的问题,使得超参数选择更加鲁棒。
1.1 公式
设
其中
注意均值和方差是由一个batch的z(i)计算的来。
1.2 参数α 和β
标准化一个单元的均值和标准差会降低包含该单元的神经网络的表达能力。为了保持网络的表现力,通常会将
2 .为什么BN会work?
BN会限制每一层的z(i)的值的分布,使得z(i)相对于z(i+1)的值更加稳定。从而加快模型的训练和稳定性。
另外,因为标准化给网络引入了噪声,BN也有一定的正则化效果。
3. 测试时的BN
因为测试时一般用一个测试用例,即batch_size=1,均值和方差没办法准确估计,因此用训练数据来进行估计。
一般可以用的估计方法有指数加权平均等。
Reference:
https://github.com/exacity/deeplearningbook-chinese