1356 字
7 分钟
归一化技术全景:从数据预处理到现代大模型的稳定器

引言#

归一化技术通过将激活值或输入变换到更友好的分布,显著改善了深度网络的训练稳定性收敛速度泛化性能

早期归一化主要解决特征尺度不一致问题;2015年后,Batch Normalization(BN)开启了“层内归一化”时代;2017–2018年,LayerNorm(LN)成为RNN与Transformer的标准配置;进入2020年代,尤其是大语言模型(LLM)时代,RMSNorm因其计算效率高、数值更稳定而逐渐成为主流选择。

即使在2026年,归一化仍是几乎所有生产级模型(CNN、ViT、LLM、Diffusion、MoE等)的标配组件。


1. 为什么归一化如此重要?(核心动机)#

未经归一化的网络容易出现以下问题:

  • 梯度尺度爆炸/消失:不同层激活分布差异巨大,导致学习率难以统一设置。
  • 内部协变量偏移(Internal Covariate Shift):每一层输入分布随参数更新而剧烈变化,深层网络训练不稳定。
  • 激活函数饱和:输入过大/过小使Sigmoid/Tanh梯度趋零。
  • 对初始化与学习率极度敏感:小幅扰动即可导致训练失败。

归一化通过均值/方差控制 + 可学习重参数化,极大缓解上述问题,让我们能使用更大学习率、更深网络。


2. 经典归一化方法(数据预处理阶段)#

2.1 Min-Max Normalization(离差标准化)#

x=xxminxmaxxmin或映射到 [a,b]x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}} \quad \text{或映射到 } [a, b]

适合:图像像素(0–1或0–255)、输出有明确物理范围的任务。

缺点:对离群点敏感。

2.2 Z-Score Standardization(标准化/Standardization)#

x=xμσx' = \frac{x - \mu}{\sigma}

适合:传统ML算法(SVM、LR、KMeans等)、存在离群点的场景。

在深度学习中,主要用于输入层预处理(如今较少单独使用)。


3. 层内归一化(Layer-wise Normalization)——深度学习时代核心#

3.1 Batch Normalization (BN, 2015)#

mini-batch中同一通道的所有样本进行归一化。

训练时:

μB=1mi=1mxi,σB2=1mi=1m(xiμB)2\mu_B = \frac{1}{m} \sum_{i=1}^m x_i, \quad \sigma_B^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_B)^2x^i=xiμBσB2+ϵγ+β\hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} \cdot \gamma + \beta

推理时使用移动平均的全局统计量。

优势:加速收敛、允许更高学习率、正则化效应。

缺点:对小batch size(<16)不稳定 → 不适合在线学习、RNN、某些GAN。

3.2 Layer Normalization (LN, 2016)#

单个样本的所有特征(或整个隐藏状态)进行归一化,不依赖batch维度。

μ=1Hi=1Hxi,σ2=1Hi=1H(xiμ)2\mu = \frac{1}{H} \sum_{i=1}^H x_i, \quad \sigma^2 = \frac{1}{H} \sum_{i=1}^H (x_i - \mu)^2x^=xμσ2+ϵγ+β\hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma + \beta

优势:batch size无关,适合RNN、Transformer、在线推理。

3.3 RMSNorm(Root Mean Square Normalization, 2019–2021流行)#

LN的简化版,去掉均值减法,仅用均方根归一化:

x^=x1Hi=1Hxi2+ϵγ\hat{x} = \frac{x}{\sqrt{\frac{1}{H} \sum_{i=1}^H x_i^2 + \epsilon}} \cdot \gamma

(通常无β,或β可选)

2025–2026年现状:RMSNorm已成为现代大语言模型的主流归一化(Llama 3、Qwen 2、DeepSeek、Grok系列、Mistral等几乎全部采用)。

原因:

  • 计算更快(省去均值计算)
  • 数值更稳定(尤其在fp16/bf16训练中)
  • 性能相当甚至略优(去除均值减法后分布更“自然”)
  • 与量化(INT8/INT4)更友好

3.4 其他重要变体#

方法归一化轴依赖batch?典型场景(2026主流)代表模型/架构
BatchNorm通道 × batchCNN、ViT早期阶段ResNet、EfficientNet早期
LayerNorm特征/隐藏维度经典Transformer、BERT、GPT-2/3原版Transformer、BERT
RMSNorm特征/隐藏维度(无均值)现代LLM(2023年后主流)Llama 3、Qwen、Grok、DeepSeek
GroupNorm通道分组小batch CNN、检测/分割ResNet-50(GN版)、Mask R-CNN
InstanceNorm单个样本 × 单个通道风格迁移、GAN、图像生成CycleGAN、StarGAN

4. PyTorch 中常用归一化层(2026写法)#

import torch.nn as nn
# 经典 BatchNorm(CV常用)
bn = nn.BatchNorm2d(num_features=64)
# LayerNorm(Transformer早期)
ln = nn.LayerNorm(normalized_shape=4096) # 或 normalized_shape=[seq_len, embed_dim]
# RMSNorm(现代LLM首选,Hugging Face Transformers已内置)
# class RMSNorm(nn.Module):
# def __init__(self, dim, eps=1e-6):
# super().__init__()
# self.eps = eps
# self.weight = nn.Parameter(torch.ones(dim))
#
# def forward(self, x):
# rms = x.norm(2, dim=-1, keepdim=True) / (x.shape[-1] ** 0.5)
# return x / (rms + self.eps) * self.weight
# 直接用 transformers 中的实现
from transformers.models.llama.modeling_llama import LlamaRMSNorm

5. 2026年实用选择指南#

场景推荐归一化(优先级)说明
经典CNN / 视觉预训练模型BatchNorm2d → GroupNorm大batch用BN,小batch/检测用GN
Transformer Encoder/Decoder(旧)LayerNormBERT、T5、原版GPT仍常用
现代大语言模型(LLM)训练/微调RMSNormLlama-3、Qwen-2、Grok、Mistral、DeepSeek等几乎全部采用,性能+效率最佳
风格迁移 / 图像生成 / GANInstanceNorm / AdaIN强调单样本风格一致性
超小batch / 在线学习 / RLLayerNorm / RMSNormbatch-independent
追求极致量化友好 & 推理速度RMSNorm(甚至尝试去掉归一化)部分论文显示推理时可移除LN/RMSNorm,损失很小

小Tips

  • 几乎所有现代LLM都把归一化放在残差支路之后(post-norm)而非前(pre-norm),但pre-norm在训练早期更稳定。
  • 混合精度(bf16)训练下,RMSNorm比LayerNorm更不容易出现NaN。

总结#

归一化从“数据预处理技巧”演变为“深度网络设计的核心组件”。2026年的共识是:

  • 视觉任务:BatchNorm / GroupNorm 仍是主流。
  • 语言/序列/大模型RMSNorm 已取代LayerNorm成为事实标准。
  • 合适的归一化策略往往比多加几层网络、更换优化器带来更大的收益。

选择归一化时,问自己三个问题:

  1. batch size 是否稳定且足够大?
  2. 是否需要batch维度的统计信息?
  3. 是否追求计算效率与量化友好?

答案指向的往往就是当前最适合的那一种。

归一化技术全景:从数据预处理到现代大模型的稳定器
https://sw.rscclub.website/posts/rgznzzgyh/
作者
杨月昌
发布于
2018-10-12
许可协议
CC BY-NC-SA 4.0