Batch Normalization

总体把握

内部协变量转移(internal covariate shift):由于前面网络层的参数发生改变,导致每层网络的输入分布在训练中会发生变化.由于分布变化所以要求较低的学习率和仔细的参数初始化,这造成有饱和非线性模型的模型训练非常困难.

  • 内部协变量转移
  • 白化
  • 平移缩放归一化值

白化(whitened)

目的:修正层输入的均值和方差,减少梯度对参数或者初始值的依赖,允许使用较高学习率而没有发散风险

操作将输入线性变换为零均值和单位方差,有两个步骤:

  • 零均值化 

\mu = \frac{1}{m}\sum_{i=1}^{m}x^{(i)}\quad,x :=x-\mu

  • 归一化方差

\sigma ^{2} = \frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu)^{2}\quad,x :=x/\sigma ^{2}

浅层作用

上述的输入正则化可以有效的训练参数w,b。但在深层的网络中不仅有输入x,还有激活值a^{(1)},a^{(2)}

  1. 对每一层输入的整个白化是代价昂贵的(计算协方差矩阵,求逆)
  2. 简单的标准化会改变层的表达能力,反向传播时并不是处处可微的。

如果我们要训练得到\omega^{(3)},b^{(3)},那么归一化输入a^{(2)}的平均值和方差会有好的效果吗?

下面算法中的作用是。

Batch Normalization算法

Require:可训练参数\gamma ,\beta。小常数\delta,为了数值稳定

  • 假设L有隐藏单元值 z^{[L](i)} = \left \{ z^{(1)},...,z^{(m)} \right \}

\mu = \frac{1}{m}\sum_{i=1}^{m}z^{(i)}\quad,\sigma ^{2} = \frac{1}{m}\sum_{i=1}^{m}(z^{(i)}-\mu)^{2}

z_{norm}^{(i)} = \frac{z^{(i)} - \mu}{\sqrt {\sigma^{2} + \delta } }

  • 引入可训练参数\gamma ,\beta,对归一化后的值进行缩放和平移,就是微调归一化结果,增强表达能力。

\widetilde{z}^{(i)} = \gamma z_{norm}^{(i)} + \beta

  • 我们可以随意设置\widetilde{z}的均值方差,这里\gamma = \sqrt{\sigma ^{2} +\delta }, \beta =\mu,其作用是恢复出原始网络所要学习的特征分布,恢复表征能力。

网络层可以继续学习输入分布,但表现出更少的内部协变量转移

正则化作用

由于在每个mini-batch计算的均值和方差,而不是在整个数据集上,所以均值方差会有一些噪音。另外缩放过程z^{(i)}\rightarrow \widetilde{z}^{(i)}也有噪声,因为它是用有些噪音的均值和方差计算得出的。

与dropout类似,它往每个隐藏层的激活值上添加了噪音,dropout通过有概率去除隐藏单元来添加噪音。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值