batch normalization基本内容

introduction

最近读了提出batch normalization 的文章,是想 了解batch normalization 算法创建的思考过程。还是有些细节没弄懂,在这里记录下。
文章主要讲了batch normalization 主要想解决的问题,也就是internal covariate shift。文章接着分析了两种不太可行的batch normalization的思路,并分析了他们为什么不可行。 接下来,文章提出了正统的batch normalization算法,并介绍了如何对它做bp。最后,文章介绍了batch normalization的其他好处,例如加快学习速度,省却dropout操作等。

Towards Reducing Internal Covariate Shift

Internal Covariate Shift是指当网络参数不断变化时,不同层的activation 分布也随之变化。这所带来的坏处基本有两点。第一点是会使得网络不断地去适应新的分布,带来学习难度;第二点是当我们使用类似sigmoid的激活函数时,当输入分布不是0均值时,会容易进入非线性区,这会容易导致梯度消失或者降低训练速度。

两种不合适的思路

第一种:求导时没有将bn考虑进来,会导致bn操作将更新削弱。按照文中给出的例子,就是bn将 Δ \Delta Δb减掉了,所以bn层之后b没有更新,但是bn层之前b-> Δ b \Delta b Δb +b 这样就会使得bn层之前 Δ b \Delta b Δb不断累加,最终产生inf。(处于一知半解的状态,希望后面能理解)
在这里插入图片描述
第二种,思路完全没看明白,只是粘在这里,希望有机会能懂

在这里插入图片描述
在这里插入图片描述

BN 的正确做法

在这里插入图片描述
注意,这里的公式都是针对x的某个维度的,也就是 x ( k ) x^{(k)} x(k) γ \gamma γ β \beta β都是可学习的变量。

BN bp算法

在这里插入图片描述

Training and Inference with Batch- Normalized Networks

Training的时候没有什么好说的,就是不断学习 γ , β \gamma ,\beta γ,β,在inference的时候,我们要固定所学到的 γ , β \gamma ,\beta γ,β,同时,对于均值和方差,我们也无法获取到,只能依赖之前的统计进行估算。
在这里插入图片描述
从上文可以看出, E [ x ] E[x] E[x]是通过对多个training mini-batches 的均值求期望得来的;Var[x]是通过多方差求期望得来的。

BN应该放在什么位置?

一般是放在线性变换之后,非线性变换之前。
在这里插入图片描述
这个图不是原文的,是https://www.learnopencv.com/batch-normalization-in-deep-networks/这篇blog讲的。
之所以放在这里,而不是放在nonlinear之后,原文给出了这样的解释:
在这里插入图片描述
并不是十分理解文中给出的解答,只能记住一个linear层输出more Gaussian
其实也有工作证明了放在激活函数之后,在特定情况下效果会更好。

BN的其他好处

Batch Normalization enables higher learning rates

通常更高的learning rates会导致梯度爆炸或者梯度消失。
BN首先可以避免梯度消失。由于之前已经说过,BN可以使输入均值为0,从而保证sigmoid(有可能使其他激活函数)的输入在线性区域,保证梯度存在。
BN其次可以避免梯度爆炸。通常大学习速度会导致参数变大,进一步导致梯度爆炸。作者用下面的公式表明,BN不仅不受大参数影响而梯度爆炸,反而参数越大,梯度越小。
在这里插入图片描述

为什么加入bn后前面层的bias可以省略

在这里插入图片描述
推导过程如下:
B N ( W u + b ) = γ x i k − E ( x k ) σ ( x ( k ) ) + B BN(Wu+b)=\gamma \frac {x_{i}^{k}-E(x^{k})} {\sigma(x^{(k)})}+B BN(Wu+b)=γσ(x(k))xikE(xk)+B
= γ w k m i + b − E ( w k m + b ) σ ( x ( k ) ) + B =\gamma \frac {w^{k}m_{i}+b-E(w^{k}m+b)} {\sigma(x^{(k)})}+B =γσ(x(k))wkmi+bE(wkm+b)+B
= γ w k m i − E ( w k m ) σ ( x ( k ) ) + B =\gamma \frac {w^{k}m_{i}-E(w^{k}m)} {\sigma(x^{(k)})}+B =γσ(x(k))wkmiE(wkm)+B
= B N ( W u ) =BN(Wu) =BN(Wu)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值