BN的思想源于一个叫Internal Covariate Shift(ICS)的概念,即在练习过程中,每个mini-batch的数据分布都会发生变化,导致练习变得困难。
BN的做法是在每个batch中,沿着特征通道对所有样本盘算均值和方差,使数据强制保持均值为0、方差为1的分布。这有用地缓解了梯度消失的问题,加速了模子的练习过程。
BN盘算公式为:
y = x − μ b a t c h σ b a t c h 2 + ϵ ⋅ γ + β y = \frac{x - \mu_{batch}}{\sqrt{\sigma_{batch}^{2} + \epsilon}} \cdot \gamma + \beta y=σbatch2+ϵ x−μbatch⋅γ+β
其中 u b a t c h u_{batch} ubatch、 σ b a t c h \sigma_{batch} σbatch 分别为批次数据的均值和方差。
LN与BN最大的区别在于,LN的归一化操作不是跨batch举行,而是在单个数据实例的特定维度或特征内部举行。
LN的盘算公式为:
y = x − μ l a y e r σ l a y e r 2 + ϵ ⋅ γ + β y = \frac{x - \mu_{layer}}{\sqrt{\sigma_{layer}^{2} + \epsilon}} \cdot \gamma + \beta y=σlayer2+ϵ x−μlayer⋅γ+β