神经网络中的Batch Normalization

为什么要Batch Normalization

首先,我们做一个类比。在传统机器学习中,我们经常要使用标准化的方法来使输入数据保持在一定的范围(处在同一数量级),这样可以加快模型求解速度。
举例来说,假设我们要用回归的方法预测房价,自变量为房子面积和房间数,因变量为房价,目标函数为:
在这里插入图片描述其中, x 1 x_1 x1代表房间数, x 2 x_2 x2代表房子面积, θ 1 , θ 2 \theta_1,\theta_2 θ1θ2为系数。由于房间数和房子面积的量纲差距较大(如一户房子的房间数为4,房子面积为100平方米,4和100不在同一数量级),我们用梯度下降的方式求最优解,
未标准化的情况下,模型寻求最优解的过程如图一,
图一:未标准化的求解过程
经过标准化之后,模型寻求最优解的过程如图二,
图二:标准化之后的求解过程可以看出,未经标准化时,梯度下降的幅度大,方向曲折,收敛速度慢;而经过标准化后,梯度下降的幅度更小,步长更平缓,收敛的速度更快。所以,数据标准化对加快模型收敛速度有着很大的帮助。
同理,我们分析神经网络的计算过程,如图三所示
在这里插入图片描述在神经网络迭代的过程中,每一层的参数会不断改变,导致每一层的输出分布也会随之改变,例如,以网络第三层为例,在第i次迭代之后,第三层的输出值的分布如图四所示
在这里插入图片描述之后进行反向传播,更新各层参数,在经过第i+1次迭代之后输出的数据的分布如图5所示
在这里插入图片描述可以看出输出数据的分布发生了变化,这种情况就叫做Internal Covariate Shift(ICS),这会导致参数更新缓慢,影响网络的收敛速度,甚至不收敛。
所以我们试图将每一层网络的输出进行标准化,类似于之前举例的传统机器学习的标准化方法,使每一层的输出规范在一个小范围内,这样可以加快参数的学习速度,从而使网络更快收敛。

Batch Normalization的具体做法

神经网络中的batch normalization通常是运用在mini-batch中。
先计算一个batch数据的均值和标准差,如下所示,其中, μ \mu μ σ \sigma σ分别是这个batch数据的平均值和标准差, z i z_i zi是这个batch中的第i个数据,m是这个batch的数据量。
μ = 1 m Σ z i \mu=\frac{1}{m}\Sigma z_i μ=m1Σzi
σ = 1 m Σ ( z i − μ ) 2 \sigma=\frac{1}{m}\Sigma \left(z_i-\mu\right)^2 σ=m1Σ(ziμ)2
之后对batch里的每个数据进行标准化,其中 z i n z_i^n zin是经过normalization之后的数据, ϵ \epsilon ϵ是一个常数,为了防止 σ \sigma σ等于0的情况。
z i n = z i − μ σ 2 + ϵ z_i^n=\frac{z_i-\mu}{\sqrt {\sigma ^2+\epsilon}} zin=σ2+ϵ ziμ
但是这样得到的每一批数据的平均值和标准差都固定为0和1,为了保证模型的表达能力不因为规范化而下降,我们应该让网络自己学习这两个值。所以最后的结果应该为
z ^ i n = γ z i n + β \hat z_i^n=\gamma z_i^n+\beta z^in=γzin+β
γ \gamma γ, β \beta β是需要网络进行学习的参数,通过修改它们可以改变每一个batch数据的均值和标准差,当 γ = σ 2 + ϵ \gamma=\sqrt {\sigma ^2+\epsilon} γ=σ2+ϵ , β = μ \beta=\mu β=μ 时, z ^ i n = z i n \hat z_i^n=z_i^n z^in=zin.

参考文献:
[1] https://blog.csdn.net/program_developer/article/details/78637711
[2] http://www.ai-start.com/dl2017/html/lesson2-week3.html

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值