正则化技术

正则化是防止过拟合、提高模型泛化能力的关键技术。本部分介绍深度学习中最重要的正则化方法。

共 3 篇文章·阅读时间:约35分钟

01Dropout

Dropout是最广泛使用的正则化技术之一,通过随机丢弃神经元来防止网络对特定神经元的依赖。

Dropout原理

训练时,每个神经元以概率p被随机"丢弃"(输出置零)。测试时,所有神经元都参与,但输出乘以(1-p)进行缩放。

Dropout公式

训练时

h = f(Wx + b) · mask, mask ~ Bernoulli(p)

测试时

h = f(Wx + b) · p

为什么Dropout有效?

  • 集成学习:每次训练相当于训练一个子网络,最终是大量子网络的集成
  • 减少共适应:防止神经元之间形成强依赖关系
  • 隐式正则化:近似于L2正则化的效果

Dropout变体

Standard Dropout

随机丢弃神经元,适用于全连接层和小型网络。

Spatial Dropout (Dropout2D)

丢弃整个通道而非单个神经元,常用于CNN的特征图。

DropBlock

丢弃相邻区域而非单个神经元,更适合CNN的特征结构。

Dropout vs DropPath (Stochastic Depth)

DropPath随机跳过整个层,而不是丢弃神经元。广泛应用于ResNet、Transformer等深层网络。

02Batch Normalization

Batch Normalization通过归一化层的输入来解决Internal Covariate Shift问题,是深度学习最重要的技术创新之一。

BN原理

对每个batch的每个通道,计算均值和方差进行归一化,然后进行仿射变换。

Batch Normalization公式

μB = (1/m) Σxi # batch均值

σ²B = (1/m) Σ(xi - μB)² # batch方差

i = (xi - μB) / √(σ²B + ε) # 归一化

yi = γx̂i + β # 仿射变换(可学习)

BN使用技巧

训练 vs 推理

  • 训练时:使用当前batch的均值和方差
  • 推理时:使用全局统计的移动平均均值和方差
BN的优点

- 加速收敛,允许使用更大的学习率
- 减少对初始化的敏感性
- 一定的正则化效果
- 缓解Internal Covariate Shift

BN的局限性

- 依赖batch size,batch太小时效果差
- RNN中难以使用(序列长度可变)
- 训练和推理行为不一致
- 对分布式训练不友好

03Layer Normalization

Layer Normalization是Transformer时代最重要的归一化方法,解决了BN在序列模型中的问题。

LN vs BN

特性Batch NormLayer Norm
归一化维度batch维度feature维度
batch依赖强依赖无依赖
适用场景CNN、batch固定RNN、Transformer
训练/推理一致性不一致一致

Layer Normalization公式

μl = (1/H) Σiali # 层均值

σl = √((1/H) Σi(ali - μl)²) # 层方差

ŷl = γ(al - μl) / σl + β # 归一化+仿射

归一化方法对比

Instance Normalization

对每个样本的每个通道单独归一化。广泛应用于风格迁移等生成任务。

Group Normalization

将通道分成G组,每组内做LayerNorm。解决了小batch时BN效果差的问题。

RMS Norm

只使用均方根进行归一化,去掉了中心化操作。更高效,效果与LN相当。
Llama、Mistral等模型使用。

Transformer中的归一化位置

  • Post-LN:归一化在残差连接之后(原始Transformer)
  • Pre-LN:归一化在残差连接之前(更稳定,大模型推荐)
  • Sandwich-LN:多头注意力前后都归一化
----