题目重点:从统计量沿哪些维度计算入手,比较两种归一化的训练/推理行为、批量依赖与常见应用场景。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 基线输入 X 形状为 [B,F],每个维度计算均值/方差时加 ε 防除零,并有可学习的 affine γ、β。
- BatchNorm 基线对每个特征在 batch 维统计;LayerNorm 对每个样本在 feature 维统计。卷积 BN 会跨 batch/空间维聚合,具体轴因层而异。
- 比较训练与推理时采用常见 BN running statistics 方案;具体库的 momentum 定义、无偏方差约定未由题目给定。
解题路线
- 先写统计轴:BN 的 μ_f=(1/B)Σ_b X[b,f],LN 的 μ_b=(1/F)Σ_f X[b,f];方差沿同一轴求,再标准化并作 γ/β 仿射变换。
- BN 训练时一个样本的输出受同 batch 其他样本影响,推理通常使用训练期间维护的运行均值/方差,故训练/推理路径不同;批量非常小或分布漂移时统计可能不稳。
- LN 每样本独立计算本样本特征统计,通常训练与推理使用同一种公式,不依赖其他样本,同一请求可单独处理;但具体特征轴错误会改变模型语义。
- 模型选择依网络结构、batch 大小和部署:视觉 CNN 曾常用 BN,大量序列/Transformer 模型常用 LN;这只是常见实践,不能把任一种说成普适最优。
- 测试用同一 X 的单样本与重组 batch:BN 训练结果可能变,LN 同样本结果应不变;推理 BN 用 frozen stats 应不受新 batch 组成影响。
手动走一遍
X=[[1,10],[3,14]]:BN 对第 1 特征用 [1,3] 统计、对第 2 特征用 [10,14] 统计;LN 对第一行 [1,10]、第二行 [3,14] 各自统计。若推理只有第一行,BN 不能再依赖这个单样本临时统计来替代训练运行统计。
规模与取舍
两者统计与标准化都约 O(BF) 时间;BN 额外保存每特征运行统计 O(F),LN 对每个样本临时统计 O(B),affine 参数依归一化轴大小。真正吞吐受 kernel 融合、同步 BN 跨设备通信和张量布局影响。
易错点与追问
容易失分的边界
- 只说 BN 横向、LN 纵向,却不声明张量形状和统计轴。
- 以为 BN 推理仍总从当前 mini-batch 计算统计。
- 把 LN 说成对整个数据集求全局均值。
- B=1 时训练 BN 的方差退化却未讨论。
- 忽略 ε 与 γ/β 的作用。
继续深挖
- 同步 BN 在多设备上为何要通信?
- Transformer 的 pre-norm/post-norm 影响梯度路径是什么?
- RMSNorm 与 LayerNorm 少了哪一步?
- BN 运行统计在训练和线上分布不同怎么办?
