文章

25 超参数调试(Hyperparameter Tuning)

25 超参数调试(Hyperparameter Tuning)

一、为什么需要超参数调试?

  在深度学习中,模型性能高度依赖于超参数(hyperparameters)的选择。这些参数不能通过训练自动学习,必须由开发者手动设定或通过搜索策略优化。

  常见的超参数包括:

  • 学习率(learning rate):$\alpha$
  • 动量参数(Momentum):$\beta$
  • Adam 优化器参数:$\beta_1, \beta_2, \varepsilon$
  • 网络结构相关

    • 隐藏层数
    • 每层隐藏单元数
  • 学习率衰减策略
  • Mini-batch 大小

💡 关键洞察:并非所有超参数同等重要!


二、超参数的重要性排序(经验法则)

  根据实践经验,超参数的重要性大致可分为三类:

🔴 第一优先级(最重要):

  • 学习率 $\alpha$

    这是最关键的超参数,对模型收敛速度和最终性能影响最大。

🟠 第二优先级(较重要):

  • Mini-batch 大小
  • 动量参数 $\beta$(如使用 Momentum 或 Adam)
  • 隐藏单元数量

默认值参考:$\beta = 0.9$ 是 Momentum 的常用默认值。

🟣 第三优先级(通常可固定):

  • 网络层数
  • 学习率衰减系数
  • Adam 超参数:$\beta_1 = 0.9,\ \beta_2 = 0.999,\ \varepsilon = 10^{-8}$

⚠️ 吴恩达建议:通常不调试 Adam 的 $\beta_1, \beta_2, \varepsilon$,直接使用默认值即可。


三、超参数搜索策略

  • 在二维空间中构建 $5 \times 5$ 网格,共测试 25 组组合。
  • 缺点:如果某个超参数(如 $\varepsilon$)对结果几乎无影响,而另一个(如 $\alpha$)极其敏感,则网格搜索浪费大量资源在无效维度上。
  • 随机采样 25 组超参数组合。
  • 优势

    • 更可能覆盖到关键超参数(如 $\alpha$)的更多取值。
    • 对高维超参数空间更高效。
    • 不依赖先验知识判断哪个参数更重要。

📌 核心思想:由于你不知道哪些超参数最关键,随机采样能更均匀地探索重要参数的空间

  1. 第一阶段:在大范围内随机搜索(粗糙搜索)。
  2. 第二阶段:聚焦表现最好的区域,在该子区域内更密集地采样(精细搜索)。

例如:若发现 $\alpha \in [0.001, 0.01]$ 时效果较好,则在该区间内进行更细粒度的随机或网格搜索。


四、如何评估超参数组合?

  • 目标函数:通常基于开发集(dev set)上的性能(如准确率、损失等)。
  • 也可根据任务需求选择:

    • 训练集损失(较少用)
    • 验证集指标(推荐)
    • 早停(early stopping)结合验证性能

最佳实践:在超参搜索过程中,始终以开发集性能为优化目标。


五、总结:超参数调试的最佳实践流程

  1. 识别关键超参数:优先调试 $\alpha$,其次 mini-batch size、$\beta$、隐藏单元数。
  2. 使用随机搜索:在合理范围内随机采样超参数组合(如 25~100 次试验)。
  3. 采用由粗到精策略

    • 先大范围探索
    • 再局部精细优化
  4. 固定次要参数:如 Adam 的 $\beta_1=0.9,\ \beta_2=0.999,\ \varepsilon=10^{-8}$ 可直接使用默认值。
  5. 基于开发集评估:选择使开发集性能最优的超参数组合。

六、补充说明(预告)

下一节将讲解:如何为不同超参数选择合理的取值范围(例如:学习率应使用对数尺度采样,而非线性尺度)。


✅ 关键公式与符号汇总(KaTeX 兼容)

  • 学习率:$\alpha$
  • 动量参数:$\beta$
  • Adam 参数:

    \[\beta_1 = 0.9,\quad \beta_2 = 0.999,\quad \varepsilon = 10^{-8}\]
  • 随机搜索优于网格搜索的核心原因:

    若超参数 $x$ 重要而 $y$ 不重要,则随机采样能更充分探索 $x$ 的空间。

本文由作者按照 CC BY 4.0 进行授权