Batch normalization (BN)的操作就是首先计算mean和variance,然后归一化 对于一个(N,D)的batch,N是样本或者feature map个数,D是维度,对每一维计算mean和variance。
BN是放在激活函数之前,在没有采用BN之前,一般是,采用BN之后变成. BN算法如下:
本来通过学习得到的输出通过这种归一化操作,改变了网络学习到的特征分布,所以提出BN的作者又提出一个变换重构: 当,,说明恢复了网络原来学习到的特征分布。
BN的优点:
- 可以上来就用较大的学习速率,然后网络的学习速度能快10倍;
- 降低对权重初始化的依赖性;
- 降低对dropout的需求,有点L2-norm的作用。
问题:还是不太动BN,有人说设置那个变换重构,就是为了让网络自动学习,这两个参数,使其能够恢复原来的特征分布,但是为什么设置这个变换重构就能让网络学习到,呢?
看到知乎上有的人说BN的作用就是为了防止梯度弥散。