【LLM学习笔记】Batch Normalization vs Layer Normalization,为什么 NLP 中使用 LN 而非 BN

在深度学习中,Batch Normalization(BN)和Layer Normalization(LN)是两种最常用的归一化技术。它们的本质差异可以归结为两点:归一化维度不同统计独立性假设不同

维度 Batch Normalization (BN) Layer Normalization (LN)
归一化维度 跨batch(N维度),同特征通道内归一化 跨特征(C维度),单样本内归一化
序列适应性 差,需要固定长度,对padding敏感 优,天然适应变长序列
batch size依赖性 强,小batch时统计量不稳定 无,单样本独立计算
推理一致性 需维护全局统计量(running mean/var) 训练/推理计算方式完全一致
适用场景 CNN图像任务(固定尺寸) NLP序列任务(变长文本)

用一个直观例子理解差异:假设有一个班级(batch)的学生(样本),每个学生有语文、数学、英语三科成绩(特征)。

  • BN的做法:看全班学生的语文成绩,计算平均分和标准差,然后把所有学生的语文成绩标准化;数学、英语同理。这里假设所有学生的语文成绩具有可比性。
  • LN的做法:看每个学生自己的三科成绩,计算该学生的平均分和标准差,然后把这个学生的三科成绩标准化。这里假设每个学生的三科成绩具有可比性。

图像任务中,不同图片的同一通道(如红色通道)具有可比性;文本任务中,同一句话的不同特征维度(如不同位置的embedding)具有可比性。这正是两种方法在不同领域取得成功的根本原因。

文章目录

    • [Batch Normalization (BN)](#Batch Normalization (BN))
      • [1.1 提出背景与动机](#1.1 提出背景与动机)
      • [1.2 数学定义与计算过程](#1.2 数学定义与计算过程)
      • [2.3 关键特性:训练与推理的差异](#2.3 关键特性:训练与推理的差异)
      • [1.4 直观理解:图像分类的例子](#1.4 直观理解:图像分类的例子)
    • [Layer Normalization (LN)](#Layer Normalization (LN))
      • [2.1 提出背景](#2.1 提出背景)
      • [2.2 数学定义与计算过程](#2.2 数学定义与计算过程)
      • [2.3 关键特性:训练与推理一致](#2.3 关键特性:训练与推理一致)
      • [2.4 直观理解:Transformer中的LN](#2.4 直观理解:Transformer中的LN)
    • BN与LN的系统性对比
      • [3.1 计算维度可视化](#3.1 计算维度可视化)
      • [3.2 核心差异对比表](#3.2 核心差异对比表)
      • [3.3 统计稳定性分析](#3.3 统计稳定性分析)
    • 为什么Transformer必须使用LN?
      • [4.1 BN在NLP中的根本性障碍](#4.1 BN在NLP中的根本性障碍)
      • [4.2 LN的天然适应性](#4.2 LN的天然适应性)
    • 变种与演进
      • [5.1 RMSNorm:去除均值中心化](#5.1 RMSNorm:去除均值中心化)
      • [5.2 Pre-Norm vs Post-Norm](#5.2 Pre-Norm vs Post-Norm)
      • [5.3 归一化方法谱系](#5.3 归一化方法谱系)
    • 面试要点与易错点
      • [6.1 高频面试题](#6.1 高频面试题)
      • [6.2 常见误区](#6.2 常见误区)
    • 总结

Batch Normalization (BN)

1.1 提出背景与动机

BN由Ioffe & Szegedy于2015年提出,旨在解决深度神经网络训练中的内部协变量偏移问题。

什么是内部协变量偏移?

在深度神经网络中,每一层的输入分布依赖于前面所有层的参数。随着训练进行,前面层的参数不断更新,导致后面层的输入分布持续变化。例如,第10层的输入分布可能在训练初期与训练后期完全不同。这种现象称为内部协变量偏移。

为了适应这种不断变化的输入分布,每一层都需要不断调整自己的参数,这大大降低了训练效率。BN通过将每一层的输入归一化到均值为0、方差为1的分布,使得每层接收的输入分布保持稳定,从而允许使用更大的学习率、加速收敛,并起到一定的正则化效果。

1.2 数学定义与计算过程

在CNN中,输入通常表示为四维张量 X ∈ R N × C × H × W X \in \mathbb{R}^{N \times C \times H \times W} X∈RN×C×H×W,其中:

  • N N N:batch size(批次大小)
  • C C C:通道数(channel)
  • H H H:特征图高度
  • W W W:特征图宽度

训练阶段 :BN 的核心是在同一个通道 c c c 上,跨所有样本 N N N 和空间位置 H , W H, W H,W 计算均值和方差。

步骤1:计算批次统计量

对于第 c c c 个通道( c = 1 , 2 , . . . , C c = 1, 2, ..., C c=1,2,...,C),计算该通道内所有元素的均值 μ B , c \mu_{B,c} μB,c 和方差 σ B , c 2 \sigma^2_{B,c} σB,c2:

μ B , c = 1 N ⋅ H ⋅ W ∑ i = 1 N ∑ h = 1 H ∑ w = 1 W X i , c , h , w \mu_{B,c} = \frac{1}{N \cdot H \cdot W} \sum_{i=1}^N \sum_{h=1}^H \sum_{w=1}^W X_{i,c,h,w} μB,c=N⋅H⋅W1i=1∑Nh=1∑Hw=1∑WXi,c,h,w

σ B , c 2 = 1 N ⋅ H ⋅ W ∑ i = 1 N ∑ h = 1 H ∑ w = 1 W ( X i , c , h , w − μ B , c ) 2 \sigma^2_{B,c} = \frac{1}{N \cdot H \cdot W} \sum_{i=1}^N \sum_{h=1}^H \sum_{w=1}^W (X_{i,c,h,w} - \mu_{B,c})^2 σB,c2=N⋅H⋅W1i=1∑Nh=1∑Hw=1∑W(Xi,c,h,w−μB,c)2

符号说明

  • X i , c , h , w X_{i,c,h,w} Xi,c,h,w 表示第 i i i 个样本、第 c c c 个通道、高度 h h h、宽度 w w w 处的元素值
  • μ B , c \mu_{B,c} μB,c:第 c c c 个通道在批次上的均值
  • σ B , c 2 \sigma^2_{B,c} σB,c2:第 c c c 个通道在批次上的方差

维度分析

  • 输入 X X X 共有 N × C × H × W N \times C \times H \times W N×C×H×W 个元素
  • μ B , c \mu_{B,c} μB,c 和 σ B , c 2 \sigma^2_{B,c} σB,c2 各为 C C C 个标量(每个通道一个)
  • 归一化时,同一通道内的所有 N × H × W N \times H \times W N×H×W 个元素使用相同的 μ B , c \mu_{B,c} μB,c 和 σ B , c 2 \sigma^2_{B,c} σB,c2

步骤2:归一化

将每个元素减去通道均值,除以通道标准差:

X ^ i , c , h , w = X i , c , h , w − μ B , c σ B , c 2 + ϵ \hat{X}{i,c,h,w} = \frac{X{i,c,h,w} - \mu_{B,c}}{\sqrt{\sigma^2_{B,c} + \epsilon}} X^i,c,h,w=σB,c2+ϵ Xi,c,h,w−μB,c

其中 ϵ = 10 − 5 \epsilon = 10^{-5} ϵ=10−5(或类似小常数),用于防止分母为零。

步骤3:缩放与平移(可学习参数)

单纯的归一化可能会限制网络的表达能力(例如强制数据进入非线性函数的线性区)。因此,BN 引入两个可学习参数 γ c \gamma_c γc 和 β c \beta_c βc,恢复模型的表达能力:

Y i , c , h , w = γ c ⋅ X ^ i , c , h , w + β c Y_{i,c,h,w} = \gamma_c \cdot \hat{X}_{i,c,h,w} + \beta_c Yi,c,h,w=γc⋅X^i,c,h,w+βc
符号说明

  • γ c \gamma_c γc:第 c c c 个通道的缩放参数,初始值通常为1
  • β c \beta_c βc:第 c c c 个通道的平移参数,初始值通常为0

完整公式

BN ( X i , c , h , w ) = γ c ⋅ X i , c , h , w − μ B , c σ B , c 2 + ϵ + β c \text{BN}(X_{i,c,h,w}) = \gamma_c \cdot \frac{X_{i,c,h,w} - \mu_{B,c}}{\sqrt{\sigma^2_{B,c} + \epsilon}} + \beta_c BN(Xi,c,h,w)=γc⋅σB,c2+ϵ Xi,c,h,w−μB,c+βc

2.3 关键特性:训练与推理的差异

BN 的一个关键特性是训练态与推理态不一致

训练完成后,BN不再依赖当前batch的统计量,因为batch可能很小甚至为1。相反,它使用训练期间累积的全局统计量(running statistics),即

  • 训练阶段 :使用当前 Batch 的 μ B , c \mu_{B,c} μB,c 和 σ B , c 2 \sigma^2_{B,c} σB,c2。
  • 推理阶段 :无法依赖当前 Batch(可能单样本),因此使用训练期间累积的全局统计量(Running Statistics)

全局统计量通过动量(Momentum)更新:
μ r u n n i n g , c = ( 1 − momentum ) ⋅ μ r u n n i n g , c + momentum ⋅ μ B , c \mu_{running,c} = (1 - \text{momentum}) \cdot \mu_{running,c} + \text{momentum} \cdot \mu_{B,c} μrunning,c=(1−momentum)⋅μrunning,c+momentum⋅μB,c

σ r u n n i n g , c 2 = ( 1 − momentum ) ⋅ σ r u n n i n g , c 2 + momentum ⋅ σ B , c 2 \sigma^2_{running,c} = (1 - \text{momentum}) \cdot \sigma^2_{running,c} + \text{momentum} \cdot \sigma^2_{B,c} σrunning,c2=(1−momentum)⋅σrunning,c2+momentum⋅σB,c2

momentum通常设为0.9或0.99。推理时,使用这些固定的全局统计量进行归一化,公式中的 μ B , c \mu_{B,c} μB,c 和 σ B , c 2 \sigma^2_{B,c} σB,c2 被替换为固定的 μ r u n n i n g , c \mu_{running,c} μrunning,c 和 σ r u n n i n g , c 2 \sigma^2_{running,c} σrunning,c2。

1.4 直观理解:图像分类的例子

假设我们训练一个图像分类模型,batch size = 4,处理RGB三通道图像,每张图尺寸为224×224。输入张量维度为 [ 4 , 3 , 224 , 224 ] [4, 3, 224, 224] [4,3,224,224]。

BN的计算过程如下:

  1. 处理红色通道(通道0) :收集4张图片中所有红色通道的像素值,总共 4 × 224 × 224 = 200 , 704 4 \times 224 \times 224 = 200,704 4×224×224=200,704 个数值。计算这些数值的均值 μ B , 0 \mu_{B,0} μB,0 和方差 σ B , 0 2 \sigma^2_{B,0} σB,02。
  2. 归一化 :将这200,704个数值逐个减去 μ B , 0 \mu_{B,0} μB,0,除以 σ B , 0 2 + ϵ \sqrt{\sigma^2_{B,0} + \epsilon} σB,02+ϵ 。
  3. 处理绿色和蓝色通道:重复上述步骤,但使用各自通道的统计量。

核心假设:不同图片的同一颜色通道具有相似的数据分布。例如,自然图像中红色通道的像素值通常遵循某种统计规律,因此用batch内所有图片的红色通道来估计该通道的真实分布是合理的。

Layer Normalization (LN)

2.1 提出背景

LN由Ba et al.于2016年提出,主要针对BN在循环神经网络(RNN)和变长序列处理中的缺陷。BN在NLP任务中面临三个致命问题:

  1. 序列长度可变:NLP中不同句子的长度不同,通常使用padding补齐到相同长度。BN计算统计量时会包含这些无意义的padding值,污染统计结果。
  2. batch size敏感:在小batch(如1或2)时,BN的统计量极不稳定。但在自回归生成(如机器翻译、文本生成)中,batch size常常很小。
  3. 推理不一致:BN在推理时依赖训练集统计量,而NLP任务中测试数据的分布可能与训练数据差异较大。

2.2 数学定义与计算过程

为简化说明,先考虑一个全连接层后的LN。输入 X ∈ R N × C X \in \mathbb{R}^{N \times C} X∈RN×C,其中 N N N 是batch size, C C C 是特征维度(隐藏层维度)。

核心思想 :LN 的核心是在同一个样本 i i i 内,跨所有特征维度 C C C 计算均值和方差。对每个样本独立归一化,不跨batch计算统计量。

对于第 i i i 个样本 X i ∈ R C X_i \in \mathbb{R}^C Xi∈RC(即矩阵 X X X 的第 i i i 行):

步骤1:计算样本统计量
μ L , i = 1 C ∑ j = 1 C X i , j \mu_{L,i} = \frac{1}{C} \sum_{j=1}^C X_{i,j} μL,i=C1j=1∑CXi,j

σ L , i 2 = 1 C ∑ j = 1 C ( X i , j − μ L , i ) 2 \sigma^2_{L,i} = \frac{1}{C} \sum_{j=1}^C (X_{i,j} - \mu_{L,i})^2 σL,i2=C1j=1∑C(Xi,j−μL,i)2

符号说明

  • X i , j X_{i,j} Xi,j:第 i i i 个样本的第 j j j 个特征值
  • μ L , i \mu_{L,i} μL,i:第 i i i 个样本所有特征的均值
  • σ L , i 2 \sigma^2_{L,i} σL,i2:第 i i i 个样本所有特征的方差

维度分析

  • 输入 X X X 共有 N × C N \times C N×C 个元素
  • μ L , i \mu_{L,i} μL,i 和 σ L , i 2 \sigma^2_{L,i} σL,i2 各为 N N N 个标量(每个样本一个)
  • 归一化时,同一样本内的所有 C C C 个特征使用相同的 μ L , i \mu_{L,i} μL,i 和 σ L , i 2 \sigma^2_{L,i} σL,i2

步骤2:归一化
X ^ i , j = X i , j − μ L , i σ L , i 2 + ϵ \hat{X}{i,j} = \frac{X{i,j} - \mu_{L,i}}{\sqrt{\sigma^2_{L,i} + \epsilon}} X^i,j=σL,i2+ϵ Xi,j−μL,i
步骤3:缩放与平移(可学习参数)

LN的可学习参数与BN不同: γ , β ∈ R C \gamma, \beta \in \mathbb{R}^C γ,β∈RC,每个特征维度一个参数,且在所有样本间共享

Y i , j = γ j ⋅ X ^ i , j + β j Y_{i,j} = \gamma_j \cdot \hat{X}_{i,j} + \beta_j Yi,j=γj⋅X^i,j+βj

完整公式

LN ( X i , j ) = γ j ⋅ X i , j − μ L , i σ L , i 2 + ϵ + β j \text{LN}(X_{i,j}) = \gamma_j \cdot \frac{X_{i,j} - \mu_{L,i}}{\sqrt{\sigma^2_{L,i} + \epsilon}} + \beta_j LN(Xi,j)=γj⋅σL,i2+ϵ Xi,j−μL,i+βj

2.3 关键特性:训练与推理一致

由于 LN 的统计量完全基于当前输入样本计算,不依赖批次内的其他样本,因此训练和推理的计算方式完全一致,无需维护任何全局统计量。无论batch size是多少,无论序列长度如何变化,LN的计算都是确定的。

2.4 直观理解:Transformer中的LN

考虑一个简化场景:batch size = 2,序列长度 = 3,隐藏维度 d m o d e l = 4 d_{model} = 4 dmodel=4。在Transformer中,通常将batch和序列维度合并,因此输入实际形状为 [ 6 , 4 ] [6, 4] [6,4](2个句子 × 3个token = 6个样本)。

句子1:"我 喜欢 学习"对应的embedding:

  • token1(我)的embedding: [ 0.2 , − 0.5 , 0.8 , 0.1 ] [0.2, -0.5, 0.8, 0.1] [0.2,−0.5,0.8,0.1]
  • token2(喜欢)的embedding: [ 0.3 , − 0.4 , 0.7 , 0.2 ] [0.3, -0.4, 0.7, 0.2] [0.3,−0.4,0.7,0.2]
  • token3(学习)的embedding: [ 0.1 , − 0.6 , 0.9 , 0.0 ] [0.1, -0.6, 0.9, 0.0] [0.1,−0.6,0.9,0.0]

句子2:"Transformer 很 强大"对应的embedding:

  • token1(Transformer)的embedding: [ − 0.2 , 0.5 , − 0.3 , 0.4 ] [-0.2, 0.5, -0.3, 0.4] [−0.2,0.5,−0.3,0.4]
  • token2(很)的embedding: [ − 0.1 , 0.6 , − 0.4 , 0.5 ] [-0.1, 0.6, -0.4, 0.5] [−0.1,0.6,−0.4,0.5]
  • token3(强大)的embedding: [ − 0.3 , 0.4 , − 0.2 , 0.6 ] [-0.3, 0.4, -0.2, 0.6] [−0.3,0.4,−0.2,0.6]

LN对每个token独立处理:

对于token1("我"):

  1. 计算该token的4个维度的均值: ( 0.2 − 0.5 + 0.8 + 0.1 ) / 4 = 0.15 (0.2 -0.5 + 0.8 + 0.1)/4 = 0.15 (0.2−0.5+0.8+0.1)/4=0.15
  2. 计算方差:各维度减去均值后平方和除以4,得到 σ 2 ≈ 0.2225 \sigma^2 \approx 0.2225 σ2≈0.2225
  3. 归一化:每个维度减去0.15,除以 0.2225 + ϵ \sqrt{0.2225 + \epsilon} 0.2225+ϵ

对于token1("Transformer"):

  1. 计算该token的4个维度的均值: ( − 0.2 + 0.5 − 0.3 + 0.4 ) / 4 = 0.1 (-0.2 + 0.5 -0.3 + 0.4)/4 = 0.1 (−0.2+0.5−0.3+0.4)/4=0.1
  2. 计算方差:各维度减去0.1后平方和除以4,得到 σ 2 ≈ 0.125 \sigma^2 \approx 0.125 σ2≈0.125
  3. 归一化:每个维度减去0.1,除以 0.125 + ϵ \sqrt{0.125 + \epsilon} 0.125+ϵ

核心假设:一个token的embedding向量中,不同维度之间具有可比性,能够通过归一化消除量纲影响。这本质上假设每个token的embedding分布大致对称,均值为0附近。

BN与LN的系统性对比

3.1 计算维度可视化

BN的计算模式(以CNN为例)

复制代码
输入 X: [N=2, C=3, H=2, W=2]

样本0:                    样本1:
通道0: [[a00, a01],       通道0: [[d00, d01],
        [a10, a11]]               [d10, d11]]
通道1: [[b00, b01],       通道1: [[e00, e01],
        [b10, b11]]               [e10, e11]]
通道2: [[c00, c01],       通道2: [[f00, f01],
        [c10, c11]]               [f10, f11]]

BN的统计量计算(以通道0为例):
μ_B[0] = mean([a00, a01, a10, a11, d00, d01, d10, d11])
σ²_B[0] = var([a00, a01, a10, a11, d00, d01, d10, d11])

归一化时,通道0的所有8个元素(两个样本×4个位置)使用相同的μ_B[0]和σ_B[0]

LN的计算模式(以NLP为例)

复制代码
输入 X: [N=2, C=4]

样本0: [x00, x01, x02, x03]
样本1: [x10, x11, x12, x13]

LN的统计量计算:
μ_L[0] = mean([x00, x01, x02, x03]),σ²_L[0] = var([x00, x01, x02, x03])
μ_L[1] = mean([x10, x11, x12, x13]),σ²_L[1] = var([x10, x11, x12, x13])

归一化时,样本0的4个特征使用μ_L[0]和σ_L[0],样本1的4个特征使用μ_L[1]和σ_L[1]
两个样本的统计量完全独立,不跨样本计算。

3.2 核心差异对比表

对比维度 Batch Normalization Layer Normalization
归一化对象 同一通道,跨不同样本 同一样本,跨不同特征
统计量计算范围 μ B , σ B ∈ R C \mu_B, \sigma_B \in \mathbb{R}^C μB,σB∈RC(每个通道一个统计量) μ L , σ L ∈ R N \mu_L, \sigma_L \in \mathbb{R}^N μL,σL∈RN(每个样本一个统计量)
依赖关系 强依赖batch size和批次内样本分布 完全单样本独立,不依赖其他样本
序列长度适应性 差,padding会污染统计量 优,自动适应任意长度
推理阶段 使用训练时累积的running statistics 与训练计算方式完全一致
主要应用场景 CNN图像任务(ResNet、Inception等) RNN/Transformer序列任务(BERT、GPT等)

3.3 统计稳定性分析

BN的小batch问题

假设某通道在batch中的真实方差为 σ 2 \sigma^2 σ2,样本量为 m m m。样本均值 μ ^ = 1 m ∑ x i \hat{\mu} = \frac{1}{m}\sum x_i μ^=m1∑xi 的方差为:

Var ( μ ^ ) = σ 2 m \text{Var}(\hat{\mu}) = \frac{\sigma^2}{m} Var(μ^)=mσ2

当 m = 2 m=2 m=2 时, Var ( μ ^ ) = σ 2 / 2 \text{Var}(\hat{\mu}) = \sigma^2/2 Var(μ^)=σ2/2,估计的波动很大。当 m = 32 m=32 m=32 时, Var ( μ ^ ) = σ 2 / 32 \text{Var}(\hat{\mu}) = \sigma^2/32 Var(μ^)=σ2/32,估计相对稳定。这意味着BN在小batch场景下(如检测任务中单卡batch=2)训练会非常不稳定。

LN的统计稳定性

LN的统计量基于特征维度 C C C,在Transformer中通常 C C C 取值较大(512、768、1024等),远大于典型batch size。因此LN的统计量估计非常稳定,不受batch size变化的影响。即使batch size = 1,LN仍然可以正常工作(使用单样本的 C C C 个特征计算统计量)。

为什么Transformer必须使用LN?

4.1 BN在NLP中的根本性障碍

障碍1:变长序列与Padding污染

NLP任务中,一个批次内的句子长度往往不同。为了进行批量计算,需要将所有句子padding到相同的最大长度:

复制代码
句子1: "你好" → [token_你好, token_EOS, PAD, PAD]  # 实际长度2
句子2: "今天天气很好" → [token_今天, token_天气, token_很, token_好]  # 实际长度4

当BN计算某个特征维度的统计量时,会包含这些PAD token。这导致:

  • 统计量被无意义的PAD值污染,不能反映真实数据的分布
  • 不同batch因PAD比例不同,统计分布不一致,训练不稳定
  • 即使使用mask机制忽略PAD,BN的统计量计算也会因mask而变得复杂且效率低下

障碍2:自回归生成的推理困境

GPT等自回归模型在推理时逐个token生成:

复制代码
已生成: "今天"
下一步预测: "天气"

当前输入: [token_今天]  # batch size = 1, sequence length = 1

此时,BN无法计算batch统计量(只有一个样本)。若使用训练时累积的running statistics:

  • 训练时的统计量基于完整句子(长度分布与单token差异巨大)
  • 单token的输入分布与完整句子中第一个token的分布也可能不同
  • 这种分布偏移会导致生成质量显著下降

障碍3:位置异构性破坏i.i.d.假设

BN假设batch内样本独立同分布(i.i.d.)。但在Transformer中,不同位置的token具有不同的统计特性:

  • CLS\] token(分类标记)与普通token的分布不同

  • 经过Masked Attention后,不同位置的梯度流动路径不同

这些因素使得跨位置的统计归一化不再合理,而LN对每个token独立归一化,完美避开了这个问题。

4.2 LN的天然适应性

优势1:单样本独立处理

LN对每个样本独立计算统计量,batch size的变化不会影响其计算方式。无论batch中有2个句子还是32个句子,每个token的归一化只依赖于自身的 C C C 个特征值。PAD token只影响其所在样本的统计量,不影响其他样本。

优势2:训练推理完全一致

LN在训练和推理阶段使用相同的计算逻辑,无需维护任何全局统计量。生成新token时,只需基于当前已生成的序列计算统计量,这与训练时的行为(对每个完整句子计算统计量)是一致的。

优势3:位置无关性

LN对每个位置的处理方式相同,不假设不同位置间的分布一致性。这契合Transformer的设计哲学------通过位置编码引入位置信息,而不是通过统计归一化来假设位置间的同质性。

变种与演进

5.1 RMSNorm:去除均值中心化

RMSNorm由Zhang & Sennrich于2019年提出,目前在LLaMA、Mistral等现代大模型中广泛使用。

数学定义

RMSNorm ( x ) = x RMS ( x ) ⋅ γ , where RMS ( x ) = 1 C ∑ i = 1 C x i 2 \text{RMSNorm}(x) = \frac{x}{\text{RMS}(x)} \cdot \gamma, \quad \text{where} \quad \text{RMS}(x) = \sqrt{\frac{1}{C}\sum_{i=1}^C x_i^2} RMSNorm(x)=RMS(x)x⋅γ,whereRMS(x)=C1i=1∑Cxi2

与LN的区别

  1. 去掉均值减法:只保留方差归一化,假设输入已大致零均值
  2. 计算简化:只需计算平方和的均值(RMS),无需计算均值,速度提升约5-10%
  3. 参数量减少 :去除了 β \beta β 参数(平移参数),只保留 γ \gamma γ

为什么可以去除均值?

LN可以分解为:
LN ( x ) = x − μ σ ⋅ γ = x σ ⋅ γ − μ σ ⋅ γ \text{LN}(x) = \frac{x - \mu}{\sigma} \cdot \gamma = \frac{x}{\sigma} \cdot \gamma - \frac{\mu}{\sigma} \cdot \gamma LN(x)=σx−μ⋅γ=σx⋅γ−σμ⋅γ

在深层网络中,由于残差连接和精心设计的权重初始化,激活值大致呈对称分布,均值接近0。此时 μ σ ⋅ γ \frac{\mu}{\sigma} \cdot \gamma σμ⋅γ 项很小,可以忽略。大量实验表明,在大规模预训练中,RMSNorm与LN的效果相当。

5.2 Pre-Norm vs Post-Norm

Transformer中的LayerNorm可以放在残差连接的不同位置,形成了两种架构:

Post-Norm(原始Transformer)

x l + 1 = LayerNorm ( x l + Sublayer ( x l ) ) x_{l+1} = \text{LayerNorm}(x_l + \text{Sublayer}(x_l)) xl+1=LayerNorm(xl+Sublayer(xl))

其中Sublayer可以是Multi-Head Attention或Feed-Forward Network。

Pre-Norm(现代主流)

x l + 1 = x l + Sublayer ( LayerNorm ( x l ) ) x_{l+1} = x_l + \text{Sublayer}(\text{LayerNorm}(x_l)) xl+1=xl+Sublayer(LayerNorm(xl))

差异分析

  • Post-Norm:残差连接经过LayerNorm,深层时梯度需要通过多层LN,可能导致梯度衰减,训练不稳定,需要谨慎的学习率预热
  • Pre-Norm:残差连接直接传递,梯度回传路径更短,训练更稳定,能够支持上百层的网络(如GPT-3有96层)

目前,Pre-Norm已成为大模型的标准选择。

5.3 归一化方法谱系

方法 归一化维度 应用场景
Batch Norm ( N , H , W ) (N, H, W) (N,H,W) for each C C C CNN,大batch图像任务
Layer Norm ( C ) (C) (C) for each ( N ) (N) (N) RNN/Transformer序列任务
Instance Norm ( H , W ) (H, W) (H,W) for each ( N , C ) (N, C) (N,C) 风格迁移(每样本每通道独立)
Group Norm ( C / G , H , W ) (C/G, H, W) (C/G,H,W) for each ( N , G ) (N, G) (N,G) 小batch CNN(检测、分割)

Group Norm 介于BN和LN之间:将通道分成 G G G 组,每组内跨 ( H , W ) (H, W) (H,W) 归一化。当 G = 1 G=1 G=1 时退化为Layer Norm,当 G = C G=C G=C 时退化为Instance Norm。它解决了小batch下BN不稳定的问题,在物体检测等任务中广泛使用。

面试要点与易错点

6.1 高频面试题

Q1:BN和LN的核心区别是什么?

BN在批次维度上对同一通道进行归一化,依赖批次内的统计量,适用于CNN等输入尺寸固定的任务。LN在特征维度上对单样本进行归一化,完全独立于其他样本,适用于NLP等变长序列任务。BN推理时需要使用训练时累积的全局统计量,LN训练与推理计算方式完全一致。

Q2:为什么Transformer不用BN?

三个核心原因:1)NLP序列长度可变,padding会污染BN的统计量;2)自回归生成时batch size=1,无法计算稳定的batch统计;3)Transformer中不同位置的token分布不同,不满足BN的i.i.d.假设。LN单样本独立归一化,天然适应这些场景。

Q3:LN的γ、β维度是多少?与BN有何不同?

LN中γ、β的维度为 C C C(特征维度),每个特征维度一个参数,在所有样本间共享。BN中γ、β的维度也是 C C C(通道维度),每个通道一个参数,在所有样本的空间位置间共享。两者维度形式相同,但归一化对象不同:BN的γ作用于通道缩放,LN的γ作用于特征维度缩放。

6.2 常见误区

误区1:LN是BN的简单替换,只是归一化维度不同

纠正 :两者的差异不仅是维度不同,更是统计哲学的根本差异。BN假设"批次内同通道样本可比较",LN假设"样本内不同特征可比较"。这种差异源于图像与文本数据结构的本质不同,而非简单的维度调整。

误区2:LN效果一定比BN好

纠正:没有绝对的好坏。在CV大batch任务中,BN通常更优,因为它能利用批次内的统计信息获得更稳定的估计。LN是NLP场景下的必然选择,但不能说LN在所有场景下都优于BN。

误区3:RMSNorm比LN少了可学习参数

纠正:RMSNorm去除了均值减法和平移参数β,但保留了缩放参数γ。其主要优势是计算简化(速度提升),而非参数减少。在大规模预训练中,速度提升的意义往往大于参数量的微小变化。

总结

BN和LN代表了深度学习中两种不同的归一化哲学:

  • BN :利用数据批次的统计特性,适用于样本间具有可比性、输入尺寸固定的场景(CNN图像任务)
  • LN :利用特征维度的统计特性,适用于样本间独立、输入长度变化的场景(Transformer文本任务)

理解这两种归一化方法的关键在于把握两个核心维度:归一化维度统计独立性假设。Transformer选择LN并非偶然,而是由其序列建模的本质需求决定的------变长序列、自回归生成、位置异构性。这一选择已成为现代大模型架构的基石,从BERT到GPT-4,LN及其变体RMSNorm始终是Transformer的核心组件。

相关推荐
今儿敲了吗2 小时前
49| 枚举排列
数据结构·c++·笔记·学习·算法
智算菩萨2 小时前
【Tkinter】14 事件处理机制深度解析:从基础绑定到高级传播,构建交互式绘图笔记应用
开发语言·笔记·python·microsoft·ui·ai编程·tkinter
茴香豆的茴2 小时前
手撕 Transformer (2):嵌入层和位置编码的实现
transformer
财经资讯数据_灵砚智能2 小时前
全球财经资讯日报(日间)2026年4月1日
大数据·人工智能·python·语言模型·ai编程
東雪木2 小时前
Java学习——接口 (interface) 与抽象类 (abstract) 的本质区别、选型标准
java·开发语言·jvm·学习·java面试
2601_955354462 小时前
SEO新手如何快速入门学习
前端·学习·搜索引擎
老毛肚2 小时前
云原生笔记
笔记
Elastic 中国社区官方博客2 小时前
从判断列表到训练好的 Learning to Rank( LTR )模型
大数据·数据库·人工智能·深度学习·elasticsearch·搜索引擎·全文检索
2301_781143562 小时前
C语言学习笔记(五)
笔记·学习