【deeplearning.ai笔记第二课】2.4 batch normalization

来源:互联网 发布:淘宝开网店视频 编辑:程序博客网 时间:2024/06/04 00:57

1. batch normalization介绍

批标准化(batch normalization) 是优化深度神经网络中最激动人心的最新创新之一。实际上它并不是一个优化算法,而是一个自适应的重参数化的方法,试图解决训练非常深的模型的困难。

说的通俗点,实际上就是BN就是在对每一个隐藏层的输出Zi做标准化。

非常深的模型会涉及多个函数或层组合。这使得我们很难选择一个合适的学习率,因为某一层中参数更新的效果很大程度上取决于其他所有层。而批标准化显著减少了多层之间协调更新的问题,使得超参数选择更加鲁棒。

1.1 公式

这里写图片描述

Z=z1,z2,...zm 是需要标准化的某层的激活函数的输入值,m表示该层有m个单元。为了标准化Z,我们将Z替换为:

Z=Zμσ

其中μ是包含该层所有单元均值的向量,σ是包含该层所有单元单元标准差的向量。

注意均值和方差是由一个batch的z(i)计算的来。

1.2 参数αβ

这里写图片描述

标准化一个单元的均值和标准差会降低包含该单元的神经网络的表达能力。为了保持网络的表现力,通常会将Z^ 替换为γZ^+β ,而不是简单的使用标准化的Z^ .

αβ 是引入的参数。可以通过SGD训练。

2 .为什么BN会work?

BN会限制每一层的z(i)的值的分布,使得z(i)相对于z(i+1)的值更加稳定。从而加快模型的训练和稳定性。

另外,因为标准化给网络引入了噪声,BN也有一定的正则化效果。

3. 测试时的BN

这里写图片描述

因为测试时一般用一个测试用例,即batch_size=1,均值和方差没办法准确估计,因此用训练数据来进行估计。

一般可以用的估计方法有指数加权平均等。

Reference:
https://github.com/exacity/deeplearningbook-chinese

原创粉丝点击