核心要点
它让各层输入分布更稳定,从而允许更大学习率、收敛更快,并带来轻微正则效果(每个样本的归一化受 batch 内其他样本影响)
训练时用当前 batch 的统计量,推理时改用训练阶段累积的 running mean/var,这是必须答出的关键区别
BN 沿 batch 维度统计,因此 batch 太小会失效;LayerNorm 沿特征维度统计、与 batch 无关,更适合 Transformer/RNN
简要回答
BN 对每个 mini-batch 的激活做减均值除方差,再学缩放平移参数 γ、β;训练用 batch 统计,推理用滑动平均的全局统计。
标准回答
动机
深层网络中,每层输入的分布会随前层参数更新而不断漂移(内部协变量偏移),迫使后层反复适应,训练慢且对学习率敏感。
做法
在层内对 mini-batch 归一化:用当前 batch 估计的 μ、σ 把激活标准化为零均值单位方差,再经可学习的 γ(缩放)、β(平移)仿射变换,避免归一化破坏原有表达能力。
训练与推理的差异
- 训练:用当前 batch 的 μ、σ,同时以动量更新累积 running mean/var;
- 推理:使用累积的 running mean/var,保证单样本/小 batch 推理结果稳定一致。
与 LayerNorm 对比
BN 沿 batch 维度统计,依赖较大 batch;LayerNorm 沿单样本的特征维度统计、与 batch 无关,因此在变长序列的 Transformer、RNN 中成为主流。
常见误区
⚠️ 常见踩坑
忘记训练/推理切换:推理时仍用当前 batch 统计(或忘记 model.eval()),导致小 batch、单样本预测结果抖动;误以为 BN 只是「加速」而忽略它的隐含正则作用,叠加过强 Dropout 反而互相干扰;把 BN 放在激活之后还是之前说不清——原论文是先 BN 再激活,需能说出自己的选择与理由。
追问
追问 1:小 batch 时 BN 有什么问题?
batch 统计量噪声大,running mean/var 不稳定,BN 层行为与推理不一致。小 batch 常用 GroupNorm、LayerNorm 或增大有效 batch(梯度累积、SyncBN)。
追问 2:GroupNorm 适用场景?
batch size 小或 batch 语义无关时(检测、分割、视频单帧);不依赖 batch 维度统计,训练/推理一致。大 batch 图像分类 BN 往往仍足够。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📚 知识库
📖 术语表
📰 AI 资讯
🛠️ AI 工具
- Pytorch
Meta 开源的深度学习框架,100K+ stars。以动态计算图和 Pythonic 风格著称,在学术界和工业界都有广泛应用,支持分布式训练、移动端部署和 ONNX 导出
- Tensorflow
全球最流行的机器学习框架之一,195K+ stars。Google 开源的端到端 ML 平台,支持 TensorFlow、Keras 等多种 API,覆盖深度学习、强化学习、移动端部署等全场景,是 AI 工程师的必备工具