Batch Normalization 算法训练和推断过程

Batch Normalization就是批归一化,在神经网络的layer未激活输出之前加一道Batch Normalization的工序,以下简称BN。关于BN的原理介绍,网上有很多资料,也可以参考这篇https://www.cnblogs.com/huwj/p/10759532.html,在这里仅仅列出BN的训练和推断过程。

 

一、BN的训练(train)过程

 

 BN的训练过程和普通神经网络采用的方法没有什么不同,都是采用经典的BP(Back Propagation)算法进行训练,利用梯度下降算法,求解损失函数关于参数的梯度,迭代更新参数直到收敛。

(一)前向传播

过程如下图所示:

从图中可以看出,BN的前向传播过程分为三步骤:

1、求解输入向量每一维度特征的均值和方差;

2、对每一维度特征就行0均值,1方差进行归一化;

3、引入可学习参数γβ,对归一化后的结果进行缩放(scale)和平移(shift)操作。

(二)反向传播

反向传播就是根据网络最终输出产生的损失loss,反向一步步求解关于参数Θ、γ和β的梯度,利用梯度下降法更新每一个参数,这里的Θ是指权重和偏置。关于参数求偏导的具体公式很复杂,这里不做推导。根据求导的链式法则,给出大概公式,如下图所示:

 

 

 

二、BN的推断(inference)过程

 

BN训练完成之后,模型的参数Θ、γβ最终就固定下来,当来一个测试样本进行预测(推断)时,我们只需要带入固定的参数,根据BN前向传播的公式进行BN就可以了。但是要注意的是:在推断阶段,对均值和方差的求解不再和训练阶段时的求法一样。这里的均值和方差是根据训练过程中每一次batch得到的均值和方差求解得到的,即求每一个batch的均值和方差的期望的无偏估计。具体如下:

                                                                                                                                

再结合训练好的参数γβ,带入前向传播公式,可得:

                                                                                                                            

但是,实际求解均值E[x]和方差Var[x]计算量较大,在实际软件框架实现中,采用滑动平均法(Moving Average)来近似求解E[x]和Var[x]。即在训练阶段,每更新一次参数,都顺便按照滑动平均法更新均值和方差,最终训练过程结束后得到的均值和方差就用来代替这里的E[x]和方差Var[x]。

滑动平均按照如下公式计算:shadow_variable(cur) = decay * shadow_variable(pre) + (1 - decay) * variable,decay是人为设定的衰减率参数,shadow_variable(cur)相当于当前轮次训练的参数更新,它等于上一轮次的参数更新*衰减率+当前轮次计算出的参数取值*(1-衰减率)。这里所说的参数就是均值和方差,当前计算出的参数取值就是当前伦次训练过程中计算出的batch的均值和方差。(具体什么是滑动平均,自行百度)

 

最后综合给出BN算法训练和推断的算法过程,如下图所示:

 

 

参考:

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 》https://arxiv.org/pdf/1502.03167.pdf  

 

转载于:https://www.cnblogs.com/huwj/p/10765114.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值