背景介绍

在深度神经网络训练中,内部协变量偏移(Internal Covariate Shift)会导致梯度消失或爆炸,从而降低训练效率。Batch Normalization(BN)通过标准化每一层的输入来缓解这一问题,但其依赖于小批量数据统计量,在以下场景中表现受限:

  • 小批量或在线学习(如RNN)
  • 动态网络结构(如Transformer)

Layer Normalization(LN)由[Ba et al., 2016]提出,通过对单个样本的层内神经元输出进行标准化,摆脱对批大小的依赖,特别适合序列模型和动态网络。

原理细节

LN和BN在理论上没有什么差别,主要是实现上的不同。LN用于解决BN无法使用在RNN/Transformer中。

标准化过程

给定输入向量(H为层中神经元数量),LN按如下步骤处理:

  1. 计算均值与方差
    为数值稳定项,通常取

  2. 归一化

  3. 仿射变换

    为可学习的缩放与平移参数)

图示说明

  • BN:对同一特征跨样本标准化
  • LN:对同一样本跨特征标准化

梯度计算与反向传播

关键梯度

  1. 对输入的梯度

  2. 对参数的梯度

反向传播特点

  • 梯度计算依赖单个样本的统计量,与批大小无关
  • 归一化操作使梯度更稳定,缓解梯度消失/爆炸