配音

Course 2:超参数调优与正则化

课程简介

掌握 Dropout、Batch Norm、超参数搜索策略,提升模型泛化能力。

🎬 本课程视频:Deep Learning Specialization — 深度学习专项课程


一、正则化

正则化是防止过拟合的核心技术。过拟合表现为训练误差低但验证误差高,模型记住了噪声而非真实模式。

1.1 L2正则化(权重衰减)

在成本函数中加入权重的平方和:

$$J_{\text{reg}} = J + \frac{\lambda}{2m} \sum_{l} |W^{[l]}|_F^2$$

更新公式变为:

$$W^{[l]} := W^{[l]} \left(1 - \frac{\alpha\lambda}{m}\right) - \alpha\frac{1}{m}dZ^{[l]}A^{[l-1]T}$$

$(1 - \frac{\alpha\lambda}{m})$ 小于 1,所以每个权重都会"衰减"。λ 越大,权重越接近 0,网络退化为更简单的模型。

1.2 Dropout

每次训练迭代中随机丢弃一部分神经元:

def forward_with_dropout(A, W, b, keep_prob=0.8):
    Z = np.dot(W, A) + b
    A_out = np.maximum(0, Z)
    D = np.random.rand(A_out.shape[0], A_out.shape[1]) < keep_prob
    A_out *= D
    A_out /= keep_prob  # 重要:保持期望值不变
    return A_out, D

关键技巧:除以 keep_prob 保证测试时不需要修改网络。Dropout 相当于集成学习——每次训练不同的子网络。

1.3 数据增强

对训练数据应用随机变换:水平翻转、随机裁剪、旋转、颜色扰动、添加噪声。这是CV领域最有效的正则化方法。

1.4 Early Stopping

验证集性能不再改善时提前停止训练,防止过拟合。

二、Batch Normalization

2.1 基本原理

对每层输入进行归一化:

$$\mu = \frac{1}{m}\sum Z^{l}$$
$$\sigma^2 = \frac{1}{m}\sum (Z^{l} - \mu)^2$$
$$\hat{Z}^{[l]} = \frac{Z^{[l]} - \mu}{\sqrt{\sigma^2 + \epsilon}}$$
$$\tilde{Z}^{[l]} = \gamma \hat{Z}^{[l]} + \beta$$

其中 $\gamma$ 和 $\beta$ 是可学习的参数。如果 $\gamma = \sqrt{\sigma^2+\epsilon}$ 且 $\beta = \mu$,BN等价于恒等变换。

2.2 BN为什么有效

  1. 减少内部协变量偏移——每层输入分布更稳定
  2. 允许更大学习率——加速训练
  3. 轻微正则化效果——每个mini-batch的随机性
  4. 减少对初始化方法的依赖

2.3 测试阶段的BN

使用训练过程中计算的移动平均均值和方差:

running_mean = 0.9 * running_mean + 0.1 * batch_mean
running_var = 0.9 * running_var + 0.1 * batch_var
z_norm = (z_test - running_mean) / np.sqrt(running_var + epsilon)

三、超参数搜索

3.1 超参数重要性排序

  1. 学习率 α(最重要的)
  2. Momentum 参数 β(通常0.9)
  3. 隐藏层数量和神经元数
  4. Mini-batch 大小
  5. 正则化系数 λ

3.2 随机搜索 vs 网格搜索

网格搜索在维度灾难下效率极低。推荐随机搜索:

# 学习率在对数尺度采样
r = -4 * np.random.rand()
lr = 10 ** r  # 范围 [0.0001, 1]

# Momentum beta 特殊采样
r = np.random.rand()
beta = 1 - 10 ** (-1 - r * 2)  # 范围 [0.9, 0.999]

3.3 Coarse-to-Fine策略

先在大范围粗搜,根据结果在好区域精细搜索。

3.4 学习率衰减

指数衰减:$\alpha = \alpha_0 \times 0.95^{\text{epoch}}$
ReduceLROnPlateau:验证损失不下降时自动降低学习率
余弦退火:$\alpha_t = \frac{1}{2}\alpha_0(1+\cos(\frac{t}{T}\pi))$

延伸阅读