核心要点

  • BN 对每个 mini-batch 的激活减均值除方差归一化,再用可学习的 γ、β 做仿射变换恢复表达能力

  • 它让各层输入分布更稳定,从而允许更大学习率、收敛更快,并带来轻微正则效果(每个样本的归一化受 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)。

追问 2GroupNorm 适用场景?

batch size 小或 batch 语义无关时(检测、分割、视频单帧);不依赖 batch 维度统计,训练/推理一致。大 batch 图像分类 BN 往往仍足够。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • Pytorch

    Meta 开源的深度学习框架,100K+ stars。以动态计算图和 Pythonic 风格著称,在学术界和工业界都有广泛应用,支持分布式训练、移动端部署和 ONNX 导出

  • Tensorflow

    全球最流行的机器学习框架之一,195K+ stars。Google 开源的端到端 ML 平台,支持 TensorFlow、Keras 等多种 API,覆盖深度学习、强化学习、移动端部署等全场景,是 AI 工程师的必备工具