Batch Normalization反方向传播求导

作者给出的批标准化的算法如下:
这里写图片描述
算法中的ε是一个常量,为了保证数值的稳定性

反向传播求梯度:

因为:

$${y^{(k)}} = {\gamma ^{(k)}}{\widehat x^{(k)}} + {\beta ^{(k)}}$$
所以:
$${​{\partial l} \over {\partial {​{\widehat x}_i}}} = {​{\partial l} \over {\partial {y_i}}}\gamma $$
因为:
$${\widehat x_i} = {​{​{x_i} - {\mu _B}} \over {\sqrt {\sigma _B^2 + \varepsilon } }}$$
所以:
$${​{\partial l} \over {\partial \sigma _B^2}} = {\sum\limits_{i = 1}^m {​{​{\partial l} \over {\partial {​{\widehat x}_i}}}({x_i} - {u_B}){​{ - 1} \over 2}(\sigma _B^2 + \varepsilon )} ^{ - {3 \over 2}}}$$
$${​{\partial l} \over {\partial {u_B}}} = \sum\limits_{​{\rm{i = 1}}}^m {​{​{\partial l} \over {\partial {​{\widehat x}_i}}}} {​{ - 1} \over {\sqrt {\sigma _B^2 + \varepsilon } }}$$
因为:
$${\mu _B} = {1 \over m}\sum\limits_{i = 1}^m {​{x_i}} $$
$$\sigma _B^2 = {1 \over m}\sum\limits_{i = 1}^m {({x_i}}  - {\mu _B}{)^2}$$
所以:
$${​{\partial l} \over {\partial {x_i}}} = {​{\partial l} \over {\partial {​{\widehat x}_i}}}{1 \over {\sqrt {\sigma _B^2 + \varepsilon } }} + {​{\partial l} \over {\partial \sigma _B^2}}{​{2({x_i} - {\mu _B})} \over m} + {​{\partial l} \over {\partial {u_B}}}{1 \over m}$$
所以:
$${​{\partial l} \over {\partial \gamma }} = \sum\limits_{i = 1}^m {​{​{\partial l} \over {\partial {y_i}}}} {\widehat x_i}$$
$${​{\partial l} \over {\partial \beta }} = \sum\limits_{i = 1}^m {​{​{\partial l} \over {\partial {y_i}}}} $$
对于BN变换是可微分的,随着网络的训练,网络层可以持续学到输入的分布。

BN网络的训练和推断

按照BN方法,输入数据x会经过变化得到BN(x),然后可以通过随机梯度下降进行训练,标准化是在mini-batch上所以是非常高效的。 但是对于推断我们希望输出只取决于输入,而对于输入只有一个实例数据,无法得到mini-batch的其他实例,就无法求对应的均值和方差了。 可以通过从所有训练实例中获得的统计量来**代替**mini-batch中m个训练实例获得统计量均值和方差 我们对每个mini-batch做标准化,可以对记住每个mini-batch的B,然后得到全局统计量

$$E[x] \leftarrow {E_B}[{\mu _B}]$$
$$Var[x] \leftarrow {m \over {m - 1}}{E_B}[\sigma _B^2]$$
(这里方差采用的是无偏方差估计) 所以推断采用BN的方式为:
$$\eqalign{  & y = \gamma {​{x - E(x)} \over {\sqrt {Var[x] + \varepsilon } }} + \beta   \cr   & {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt}  = {\gamma  \over {\sqrt {Var[x] + \varepsilon } }}x + (\beta  - {​{\gamma E[x]} \over {\sqrt {Var[x] + \varepsilon } }}) \cr} $$
作者给出的完整算法:
这里写图片描述

实验

最后给出的实验可以看出使用BN的方式训练精准度很高而且很稳定。

这里写图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值