BN:批标准化,固定每层输入信息的均值和方差
原因:当训练集的样本数据和目标样本集分布不一致的时候,训练得到的模型无法很好的泛化。每一层的输入在经过层内操作之后必然会导致与原来对应的输入信号分布不同(Convariate Shift现象),并且前层神经网络的增加会被后面的神经网络不断的累积放大。这个问题的一个解决思路就是根据训练样本与目标样本的比例对训练样本进行一个矫正,而BN算法(批标准化)则可以用来规范化某些层或者所有层的输入,从而固定每层输入信号的均值与方差,让每一层的输入有一个稳定的分布会有利于网络的训练。
作用:
- 归一化数据;
- 可以使网络选用较大学习率,训练过程中学习率衰减加快(Bactch Normalization通过标准化让激活函数分布在线性区间,结果就是加大了梯度,让模型更大胆的进行梯度下降);
- 对随机顺序训练适应性增强,提高了网络的泛化能力;
公式: (一般用在非线性激活前)
先归一化后仿射变换:
归一化后,基本会被限制在正态分布下,使得网络的表达能力下降。为解决该问题,引入两个新的参数:和
,是在训练时网络自己学习得到。在测试时,所使用的
和
是整个训练集的均值 和方差。
参考: