Skip to content

01. Normalization(归一化) ​

为什么深层网络需要归一化?RMSNorm 如何稳定训练?


🎯 学习目标 ​

完成本模块后,你将能够:

  • ✅ 理解梯度消失/爆炸问题的本质
  • ✅ 理解归一化如何稳定激活分布
  • ✅ 理解 RMSNorm vs LayerNorm 的区别
  • ✅ 理解 Pre-LN vs Post-LN 的优劣
  • ✅ 从零实现 RMSNorm

📚 学习路径 ​

1️⃣ 快速体验(10 分钟) ​

先运行实验,建立直觉:

bash
cd experiments

# 实验 1:看看没有归一化会发生什么
python exp1_gradient_vanishing.py

# 实验 2:对比四种配置
python exp2_norm_comparison.py --quick

你会看到:

  • 无归一化:激活值标准差迅速衰减到 0(梯度消失)
  • Post-LN:训练初期 loss 震荡
  • Pre-LN + RMSNorm:稳定收敛 ✅

2️⃣ 理论学习(30 分钟) ​

阅读教学文档:

核心内容:

  • Why: 为什么需要归一化?
  • What: RMSNorm 是什么?
  • How: 如何验证?

3️⃣ 代码实现(15 分钟) ​

查看真实代码:

关键文件:

  • model/model_minimind.py:95-105 - RMSNorm 实现
  • model/model_minimind.py:359-380 - TransformerBlock 中的使用

4️⃣ 自测巩固(5 分钟) ​

完成自测题:


🔬 实验列表 ​

实验目的时间数据
exp1_gradient_vanishing.py证明归一化的必要性10秒合成数据
exp2_norm_comparison.py对比四种配置5分钟TinyShakespeare
exp3_prenorm_vs_postnorm.pyPre-LN vs Post-LN8分钟TinyShakespeare

运行所有实验 ​

bash
cd experiments
bash run_all.sh

💡 关键要点 ​

1. 为什么需要归一化? ​

无归一化的深层网络:
Layer 1: std = 1.00
Layer 2: std = 0.85
Layer 3: std = 0.62
Layer 4: std = 0.38
...
Layer 8: std = 0.016  ← 梯度几乎消失!

直觉:像水龙头装"水压稳定器",无论输入如何变化,输出都保持稳定。


2. RMSNorm vs LayerNorm ​

特性LayerNormRMSNorm
计算步骤减均值 + 除标准差除 RMS
参数量2d (γ, β)d (γ)
速度慢快 7-64%
半精度稳定性较差更好

结论:RMSNorm 更简单、更快、更稳定。


3. Pre-LN vs Post-LN ​

python
# Post-LN(旧方案)
x = x + Attention(x)          # 先计算
x = LayerNorm(x)              # 后归一化

# Pre-LN(现代方案)
x = x + Attention(Norm(x))    # 先归一化
x = x + FFN(Norm(x))          # 再计算

优势:

  • ✅ 残差路径更"干净"(梯度直达)
  • ✅ 深层网络(>12 层)更稳定
  • ✅ 学习率容忍度更高

📊 预期结果 ​

完成实验后,你会在 experiments/results/ 看到:

  1. gradient_vanishing.png

    • 无归一化:标准差衰减曲线
    • 有归一化:标准差保持稳定
  2. norm_comparison.png

    • 四条 loss 曲线对比
    • NoNorm 在 500 步后 NaN
    • Pre-LN 最稳定
  3. prenorm_vs_postnorm.png

    • Pre-LN vs Post-LN 的收敛速度对比

✅ 完成检查 ​

学完本模块后,你应该能够:

理论 ​

  • [ ] 用自己的话解释梯度消失问题
  • [ ] 说出 RMSNorm 的数学公式
  • [ ] 解释 Pre-LN 为什么比 Post-LN 好

实践 ​

  • [ ] 从零实现 RMSNorm
  • [ ] 能画出 Pre-LN Transformer Block 的数据流图
  • [ ] 能调试归一化相关的训练问题

直觉 ​

  • [ ] 能用类比解释归一化的作用
  • [ ] 能预测去掉归一化会发生什么
  • [ ] 能解释为什么现代 LLM 选择 Pre-LN + RMSNorm

🔗 相关资源 ​

论文 ​

博客 ​

视频 ​


🎓 下一步 ​

完成本模块后,前往: 👉 02. Position Encoding(位置编码)

学习 Transformer 如何处理位置信息,理解 RoPE 的原理。

基于 MiniMind 的学习笔记与实验