背景介绍
在深度神经网络训练中,内部协变量偏移(Internal Covariate Shift)会导致梯度消失或爆炸,从而降低训练效率。Batch Normalization(BN)通过标准化每一层的输入来缓解这一问题,但其依赖于小批量数据统计量,在以下场景中表现受限:
- 小批量或在线学习(如RNN)
- 动态网络结构(如Transformer)
Layer Normalization(LN)由[Ba et al., 2016]提出,通过对单个样本的层内神经元输出进行标准化,摆脱对批大小的依赖,特别适合序列模型和动态网络。
原理细节
LN和BN在理论上没有什么差别,主要是实现上的不同。LN用于解决BN无法使用在RNN/Transformer中。
标准化过程
给定输入向量(H为层中神经元数量),LN按如下步骤处理:
-
计算均值与方差
(为数值稳定项,通常取) -
归一化
-
仿射变换
(和为可学习的缩放与平移参数)
图示说明
- BN:对同一特征跨样本标准化
- LN:对同一样本跨特征标准化
梯度计算与反向传播
关键梯度
-
对输入的梯度
-
对参数和的梯度
反向传播特点
- 梯度计算依赖单个样本的统计量,与批大小无关
- 归一化操作使梯度更稳定,缓解梯度消失/爆炸