Batchnorm

来源:互联网 发布:激战2矩阵立方钥匙 编辑:程序博客网 时间:2024/06/05 08:50

1.原理

BN就是对于给定的输入做一个减均值除方差的归一化。

训练过程中对每个Batch做均值和方差归一化处理,预测过程中通过训练数据进行估算。

BN的目的是使得下一层的神经网络(通常是非线性的激活函数,如ReLUsigmoid)的输入在合理的范围内(接近与均值为0方差为1的正态分布),和数据预处理&合理初始化权重矩阵的目的相同。根据反向传播公式,链式求导的公式,方差过小,则数据接近于0W难以更新;方差过大,则数据均饱和,导数为0,梯度难以传播;如果均值过大或过小,都会使得数据位于饱和区,导数为0,梯度难以传播。


3.改进

上文的归一化版本的BN有一个假设是非线性函数(如tanh)期待有一个标准正态分布的输入。这一假设是否成立有待商榷,所以有了改进版本的BN。即引入两个参数(不是超参数):均值和方差,使得BN可以输出任意均值方差的数据(这个均值和方差都是通过学习得到的)。特别的,如果学得的输出所应该具有的均值和方差都等同于输入,那么BN实际上输入输出相同,数据流的数据没有发生变化(从理论上说明加入BN不会使得结果变差)。详情请参考CS231n作业笔记2.4Batchnorm的实现与使用

最后一步是做平移和缩放

4.优点

  1. 优化了梯度流动

  2. 允许高learningrate

  3. 减少了对于权重初始化&数据预处理的强依赖

  4. 某种程度的正则化:BN把整个Batch的数据联系起来(而不是平行的互不相关的数据),使得学得的模型趋于稳定,不至于大幅晃动


原创粉丝点击