返回 深度学习 思维导图
中文·English
🧠 深度学习ID: batchnorm

BatchNorm 批归一化

Batch Normalization
🎯核心定义
BatchNorm (批归一化) 沿 batch 维对每个特征通道做标准化, 消除内部协变量偏移 (ICS)。对输入 xx, 先计算当前 batch 的均值与方差 μB=1mi=1mxi\mu_B = \frac{1}{m}\sum_{i=1}^{m} x_iσB2=1mi=1m(xiμB)2\sigma_B^2 = \frac{1}{m}\sum_{i=1}^{m}(x_i - \mu_B)^2, 再归一化 x^=xμBσB2+ϵ\hat{x} = \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}, 最后做可学习的仿射变换 y=γx^+βy = \gamma\hat{x} + \beta (CNN 中每个通道一组 γ,β\gamma, \beta, ϵ\epsilon 取 1e-5 量级防除零)。
💡使用场景
图像 CNN 标配 (ResNet 等), 用于稳定训练、允许更大学习率、降低对初始化与 Dropout 的依赖; 面试常问训练/推理统计量差异、小 batch 为何失效、为什么 NLP/Transformer 改用 LN。
解决的核心痛点
使每层激活保持零均值单位方差, 大幅平滑 loss 曲面, 收敛速度通常提升数倍 (训练 epoch 可减半量级), 并带轻微正则化副作用 (batch 统计噪声)。关键工程点: 训练时用当前 batch 统计量; 推理时用训练期指数滑动平均 (EMA, momentum 通常 0.1) 累积的 running mean/var——因此小 batch (batch=1 时 σB=0\sigma_B=0) 会使统计量失真、训练与推理行为不一致, 模型近乎失效, 这是 BN 的固有缺陷。
🎯5 个高频面试考点 (Exam Points)
1
写出 BatchNorm 的完整计算流程: 如何算 μB\mu_BσB2\sigma_B^2, 归一化公式 x^=xμBσB2+ϵ\hat{x} = \frac{x-\mu_B}{\sqrt{\sigma_B^2+\epsilon}} 与仿射变换 y=γx^+βy = \gamma\hat{x}+\betaγ,β\gamma,\beta 的作用?
2
训练与推理时 BN 的行为差异: 训练用 batch 统计量, 推理为什么必须用滑动平均 (running mean/var)? EMA 在哪个阶段更新?
3
小 batch 下 BN 为什么失效? batch=1 时会发生什么? 训练/推理统计量不一致会造成什么问题?
4
为什么 Transformer/LLM 中 BN 很少用而改用 LayerNorm? BN 在变长序列、padding 上的问题是什么?
5
BN 为何能加速收敛 (内部协变量偏移/loss 平滑)? 它有什么正则化副作用, 与 Dropout 并用的顺序如何?
更新于 2026-08-12
🎯
检验攻克程度:针对「BatchNorm 批归一化」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点损失函数族下一个知识点LayerNorm 与 RMSNorm

🔗 更多 深度学习 知识点卡片

激活函数演进Adam/AdamWAutograd 动态图经典 CNN 演进