总体把握
内部协变量转移(internal covariate shift):由于前面网络层的参数发生改变,导致每层网络的输入分布在训练中会发生变化.由于分布变化所以要求较低的学习率和仔细的参数初始化,这造成有饱和非线性模型的模型训练非常困难.
- 内部协变量转移
- 白化
- 平移缩放归一化值
白化(whitened)
目的:修正层输入的均值和方差,减少梯度对参数或者初始值的依赖,允许使用较高学习率而没有发散风险
操作将输入线性变换为零均值和单位方差,有两个步骤:
- 零均值化
- 归一化方差
浅层作用
上述的输入正则化可以有效的训练参数w,b。但在深层的网络中不仅有输入x,还有激活值
- 对每一层输入的整个白化是代价昂贵的(计算协方差矩阵,求逆)
- 简单的标准化会改变层的表达能力,反向传播时并不是处处可微的。
如果我们要训练得到,那么归一化输入的平均值和方差会有好的效果吗?
下面算法中的作用是。
Batch Normalization算法
Require:可训练参数。小常数,为了数值稳定
- 假设L层有隐藏单元值
- 引入可训练参数,对归一化后的值进行缩放和平移,就是微调归一化结果,增强表达能力。
- 我们可以随意设置的均值方差,这里,其作用是恢复出原始网络所要学习的特征分布,恢复表征能力。
网络层可以继续学习输入分布,但表现出更少的内部协变量转移
正则化作用
由于在每个mini-batch计算的均值和方差,而不是在整个数据集上,所以均值方差会有一些噪音。另外缩放过程也有噪声,因为它是用有些噪音的均值和方差计算得出的。
与dropout类似,它往每个隐藏层的激活值上添加了噪音,dropout通过有概率去除隐藏单元来添加噪音。