batch normalization基本内容

本文围绕Batch Normalization算法展开,介绍其主要解决的Internal Covariate Shift问题,分析两种不可行思路,阐述正统算法及BP算法。还提及训练和推理时的操作,探讨其放置位置,最后说明该算法的好处,如加快学习速度、避免梯度问题等。

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可以省略

在这里插入图片描述
推导过程如下:
BN(Wu+b)=γxik−E(xk)σ(x(k))+BBN(Wu+b)=\gamma \frac {x_{i}^{k}-E(x^{k})} {\sigma(x^{(k)})}+BBN(Wu+b)=γσ(x(k))xikE(xk)+B
=γwkmi+b−E(wkm+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
=γwkmi−E(wkm)σ(x(k))+B =\gamma \frac {w^{k}m_{i}-E(w^{k}m)} {\sigma(x^{(k)})}+B=γσ(x(k))wkmiE(wkm)+B
=BN(Wu)=BN(Wu)=BN(Wu)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值