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$,直接使用默认值即可。
三、超参数搜索策略
❌ 传统方法:网格搜索(Grid Search)
- 在二维空间中构建 $5 \times 5$ 网格,共测试 25 组组合。
- 缺点:如果某个超参数(如 $\varepsilon$)对结果几乎无影响,而另一个(如 $\alpha$)极其敏感,则网格搜索浪费大量资源在无效维度上。
✅ 推荐方法:随机搜索(Random Search)
- 随机采样 25 组超参数组合。
优势:
- 更可能覆盖到关键超参数(如 $\alpha$)的更多取值。
- 对高维超参数空间更高效。
- 不依赖先验知识判断哪个参数更重要。
📌 核心思想:由于你不知道哪些超参数最关键,随机采样能更均匀地探索重要参数的空间。
🔍 进阶策略:由粗到精搜索(Coarse-to-fine Search)
- 第一阶段:在大范围内随机搜索(粗糙搜索)。
- 第二阶段:聚焦表现最好的区域,在该子区域内更密集地采样(精细搜索)。
例如:若发现 $\alpha \in [0.001, 0.01]$ 时效果较好,则在该区间内进行更细粒度的随机或网格搜索。
四、如何评估超参数组合?
- 目标函数:通常基于开发集(dev set)上的性能(如准确率、损失等)。
也可根据任务需求选择:
- 训练集损失(较少用)
- 验证集指标(推荐)
- 早停(early stopping)结合验证性能
✅ 最佳实践:在超参搜索过程中,始终以开发集性能为优化目标。
五、总结:超参数调试的最佳实践流程
- 识别关键超参数:优先调试 $\alpha$,其次 mini-batch size、$\beta$、隐藏单元数。
- 使用随机搜索:在合理范围内随机采样超参数组合(如 25~100 次试验)。
采用由粗到精策略:
- 先大范围探索
- 再局部精细优化
- 固定次要参数:如 Adam 的 $\beta_1=0.9,\ \beta_2=0.999,\ \varepsilon=10^{-8}$ 可直接使用默认值。
- 基于开发集评估:选择使开发集性能最优的超参数组合。
六、补充说明(预告)
下一节将讲解:如何为不同超参数选择合理的取值范围(例如:学习率应使用对数尺度采样,而非线性尺度)。
✅ 关键公式与符号汇总(KaTeX 兼容)
- 学习率:$\alpha$
- 动量参数:$\beta$
Adam 参数:
\[\beta_1 = 0.9,\quad \beta_2 = 0.999,\quad \varepsilon = 10^{-8}\]随机搜索优于网格搜索的核心原因:
若超参数 $x$ 重要而 $y$ 不重要,则随机采样能更充分探索 $x$ 的空间。
本文由作者按照 CC BY 4.0 进行授权