批量归一化,防止RELU等激活函数的饱和区导致死神经元问题,提高训练效率
To:
饱和非线性的模型(RELU)的输入层的分布会被上游梯度改变,即内部协核漂移(internal covariate shift)(比如说分布变得偏离0位置,大部分甚至全部处于饱和区)为避免这一问题,传统方法会仔细降低学习率或者使用一个很挑剔的初始化参数的方法——批量归一化则能有效地规避这一问题,同时
可以继续使用一个较高的学习率和“随便”初始化;
可以减少对dropout的需求:
可以“放肆”地使用饱和非线性模型
在此之前对BN的探索
1.标准化操作在梯度下降之外的地方计算——对激活之后的输出进行标准化:
现在考虑对权值w和截距b来更新权值的操作,BN在其输出之后发挥作用:
前向传播的过程为: z = w x + b z=wx+b z=wx+b,对其进行的归一化操作为: z ^ = z − E [ x ] \hat{z}=z-E[x] z^=z−E[x],其中 E [ x ] E[x] E[x]只依赖于输出的各个x,b的改变对其没有影响。在训练过程中,对b的更新为: b ← b + △ b b\leftarrow b+\bigtriangleup b b←b+△b其中 ▽ b ∝ ∂ l