Skip to content

正则化面试题集


Q1: BatchNorm的训练和推理有什么区别?

  • 训练:用当前batch的均值和方差,同时更新running stats
  • 推理:用训练时累积的running mean和running var(固定值)

为什么推理时不能用batch的统计量?

  • 推理时batch可能只1个样本,统计量不可靠
  • 需要确定性输出(同样的输入→同样的输出)

Q2: BN中的γ和β有什么作用?

: 缩放因子γ和偏移β是可学习参数,在归一化后恢复网络的表达能力:

y = γ * ẑ + β

如果没有γ和β,归一化后的值总是在N(0,1),限制了网络学习复杂映射的能力。


Q3: BN vs LN vs IN vs GN

方法归一化维度适用场景
BN(N, H, W) per channelCV (大batch)
LN(C, H, W) per sampleNLP/Transformer
IN(H, W) per sample per channel风格迁移
GNGroup of channels小batch CV

Q4: 为什么NLP不用BatchNorm而用LayerNorm?

  1. NLP中序列长度不一,pad位置会影响batch统计量
  2. Batch大小经常变化
  3. 序列之间差异大(不同句子结构),batch统计不可靠
  4. LayerNorm每个样本独立归一化,不受batch影响

Q5: Dropout训练和推理的区别?

  • 训练:按概率p随机丢弃神经元,保留的神经元输出除以(1-p)(inverted dropout)
  • 推理:所有神经元参与计算,不做任何dropout

Inverted dropout的设计使推理时不需要额外缩放,简化了部署。


Q6: L1和L2正则化的几何解释?

python
# L1约束域:菱形 |w₁| + |w₂| ≤ C
# L2约束域:圆形 w₁² + w₂² ≤ C

# 损失等高线与L1约束域在坐标轴上相切
# → L1产生稀疏解(某些参数恰好为0)

# 损失等高线与L2约束域在任意点都可能相切
# → L2使参数趋近零但不为零

Q7: Label Smoothing原理?

: 将硬标签 [0, 1, 0, 0] 替换为软标签 [ε/(K-1), 1-ε, ε/(K-1), ε/(K-1)]

作用:

  1. 防止模型过度自信
  2. 提高泛化能力
  3. 使模型学得更"保守"