

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 了解 Amazon A SageMaker I 中可用的超参数调整策略
<a name="automatic-model-tuning-how-it-works"></a>

在您生成复杂机器学习系统时，例如深度学习神经网络，探讨所有可能的组合不切实际。超参数调优可以通过尝试模型的多种变体来提高工作效率。它通过关注指定范围内最有前途的超参数值组合，以自动寻找最佳模型。要获得良好的结果，您必须选择合适的探索范围。本页简要说明了您可以在 Amazon A SageMaker I 中使用的不同超参数调整策略。

请使用 [API 参考指南](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html?icmpid=docs_sagemaker_lp)，了解如何与超参数调优进行交互。您可以将本页上描述的调整策略与[HyperParameterTuningJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html)和一起使用[HyperbandStrategyConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperbandStrategyConfig.html) APIs。

**注意**  
由于算法本身是随机的，超参数调整模型可能无法收敛到最佳答案。即使可能的最佳值组合在您选择的范围内，也可能发生这种情况。

## 网格搜索
<a name="automatic-tuning-grid-search"></a>

 使用网格搜索时，超参数调优从您在创建作业时所指定的分类值范围中选择值的组合。使用网格搜索策略时，仅支持分类参数。您无需指定 `MaxNumberOfTrainingJobs`。调优作业创建的训练作业数量自动计算为可能的不同分类组合的总数。如果指定，则 `MaxNumberOfTrainingJobs` 的值应等于可能的不同分类组合的总数。

## 随机搜索
<a name="automatic-tuning-random-search"></a>

使用随机搜索时，超参数调整会在每次启动训练作业时，在您指定的范围内选择超参数值的随机组合。超参数值的选择并不取决于之前的训练结果。因此，您可以运行最大数量的并发训练作业，而不会改变调整的性能。

有关使用随机搜索的笔记本示例，请参阅使用[随机搜索和超参数缩放 SageMaker XGBoost 以及自动模型调整](https://github.com/aws/amazon-sagemaker-examples-community/blob/215215eb25b40eadaf126d055dbb718a245d7603/training/sagemaker-automatic-model-tuning/hpo_xgboost_random_log.ipynb)笔记本。

## 贝叶斯优化
<a name="automatic-tuning-bayesian-optimization"></a>

贝叶斯搜索将超参数调优视为*[回归](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#[regression])*问题。给定一组输入特征（超参数），超参数调优会针对您选择的指标来优化模型。为解决回归问题，超参数调优会猜测哪些超参数组合有可能获得最佳结果。然后运行训练作业来测试这些值。在测试了一组超参数值之后，超参数调优使用回归来选择要测试的下一组超参数值。

超参数调整使用贝叶斯优化的 Amazon SageMaker AI 实现。

在选择下一个训练作业的最佳超参数时，超参数调优会考虑迄今为止所了解到的有关此问题的全部信息。有时，它会选择与导致先前最佳训练作业的组合接近的超参数值组合，以逐步提高性能。这使得超参数调优可以使用最佳的已知结果。其他时候，它会选择一组远离已尝试过的值的超参数值。这使得它可以探索超参数值的范围，以尝试找到新的尚未了解的领域。探索/利用的权衡在许多机器学习问题中都很常见。

有关贝叶斯优化的更多信息，请参阅以下内容：

**关于贝叶斯优化的基本主题**
+ [高成本函数贝叶斯优化及其在主动用户建模和分层强化学习中的应用的教程](https://arxiv.org/abs/1012.2599)
+ [机器学习算法的实用贝叶斯优化](https://arxiv.org/abs/1206.2944)
+ [以人为本：贝叶斯优化研究综述](https://ieeexplore.ieee.org/document/7352306?reload=true)

**加快贝叶斯优化**
+ [Google Vizier：黑盒优化服务](https://dl.acm.org/doi/10.1145/3097983.3098043)
+ [使用贝叶斯神经网络进行学习曲线预测](https://openreview.net/forum?id=S11KBYclx)
+ [利用学习曲线加快深度神经网络的自动超参数优化](https://dl.acm.org/doi/10.5555/2832581.2832731)

**高级建模和迁移学习**
+ [可扩展的超参数迁移学习](https://papers.nips.cc/paper_files/paper/2018/hash/14c879f3f5d8ed93a09f6090d77c2cc3-Abstract.html)
+ [具有树结构化依赖项的贝叶斯优化](http://proceedings.mlr.press/v70/jenatton17a.html)
+ [具有强健的贝叶斯神经网络的贝叶斯优化](https://papers.nips.cc/paper_files/paper/2016/hash/291597a100aadd814d197af4f4bab3a7-Abstract.html)
+ [使用深度神经网络的可扩展贝叶斯优化](http://proceedings.mlr.press/v37/snoek15.pdf)
+ [非固定函数贝叶斯优化的输入变形](https://arxiv.org/abs/1402.0929)

## Hyperband
<a name="automatic-tuning-hyperband"></a>

Hyperband 是一种基于多保真度的调优策略，可以动态地重新分配资源。Hyperband 使用训练作业的中间结果和最终结果，将周期重新分配给利用率高的超参数配置，并自动停止那些表现不佳的超参数配置。它还可以无缝扩展以使用大量并行训练作业。与随机搜索和贝叶斯优化策略相比，这些功能可以显著加快超参数调优的速度。

Hyperband 只能用于调整在不同资源级别发布结果的迭代算法。例如，Hyperband 可用于调整用于图像分类的神经网络，该神经网络会在每个周期之后发布准确性指标。

有关 Hyperband 的更多信息，请参阅以下链接：
+ [Hyperband：基于 Novel Bandit 的超参数优化方法](http://arxiv.org/pdf/1603.06560)
+ [大规模并行超参数调优](https://liamcli.com/assets/pdf/asha_arxiv.pdf)
+ [BOHB：稳健高效的大规模超参数优化](http://proceedings.mlr.press/v80/falkner18a/falkner18a.pdf)
+ [基于模型的异步超参和神经架构搜索](https://openreview.net/pdf?id=a2rFihIU7i)

### 具提前停止功能的 Hyperband
<a name="automatic-tuning-hyperband-early-stopping"></a>

如果训练作业不太可能改进超参数调优作业的目标指标，则训练作业可以提前停止。这有助于缩短计算时间并避免模型过度拟合。Hyperband 使用先进的内部机制来实现提前停止。在使用 Hyperband 内部提前停止功能时，`HyperParameterTuningJobConfig` API 中的 `TrainingJobEarlyStoppingType` 参数必须设置为 `OFF`。

**注意**  
超参数调优可能不会改进您的模型。它是用于构建机器解决方案的高级工具。因此，应将其视为科学发展过程的一部分。