定义超参数范围 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

定义超参数范围

超参数优化通过在超参数范围中进行搜索,查找针对您模型的最佳超参数值。您指定超级参数和值的范围,通过针对您的优化作业定义超级参数范围来进行搜索。超参数和范围的选择会对优化作业的性能产生巨大影响。有关如何选择超参数和范围的指南,请参阅超参数优化的最佳实践

要使用低级 API 定义超参数范围,请在传递给 ParameterRanges HyperParameterTuningJobConfig 操作的 参数的 CreateHyperParameterTuningJob 字段中指定超参数的名称和值范围。ParameterRanges 字段有三个子字段,分别用于分类、整数和连续超参数范围。您可以定义搜索最多 20 个超参数。每个分类超参数范围的值都计为限制内的一个超参数。超参数范围具有以下结构:

"ParameterRanges": { "CategoricalParameterRanges": [ { "Name": "tree_method", "Values": ["auto", "exact", "approx", "hist"] } ], "ContinuousParameterRanges": [ { "Name": "eta", "MaxValue" : "0.5", "MinValue": "0", "ScalingType": "Auto" } ], "IntegerParameterRanges": [ { "Name": "max_depth", "MaxValue": "10", "MinValue": "1", "ScalingType": "Auto" } ] }

超参数标度

对于整数和连续超参数范围,您可以通过为超参数范围的 ScalingType 字段指定值,选择超参数优化要用于搜索值范围的标度。您可从以下标度类型中进行选择:

自动

SageMaker 超参数优化为超参数选择最佳标度。

线性

超参数优化使用线性标度在超参数范围中搜索值。通常,如果从最低到最高的所有值的范围相对较小(在一个数量级内),则选择此选项,因为从该范围均匀搜索值将使您合理地探索整个范围。

对数

超参数优化使用对数标度在超参数范围中搜索值。

对数标度仅适用于其值大于 0 的范围。

当您要搜索跨多个数量级的范围时,请选择对数标度。例如,如果您要调优化优化线性学习器模型模型,并为 learning_rate 超参数指定值介于 .0001 和 1.0 之间的范围,则与按线性标度搜索相比,按对数标度统一搜索会使您更好地对整个范围进行采样,因为平均而言按线性标度搜索对于仅在 .1 和 1.0 之间的值投入 90% 的训练预算,而对于 .0001 和 .1 之间的值仅剩下 10% 的训练预算。

反向对数

超参数优化使用反向对数标度搜索超参数范围中的值。仅连续超参数范围支持反向对数标度。整数超参数范围不支持它。

反向对数标度仅适用于完全位于 0 <= x < 1.0 内的范围。

当您搜索对非常接近 1 的微小变化高度敏感的范围时,请使用反向对数标度。

有关使用超参数标度的示例笔记本,请访问 https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/xgboost_random_log/hpo_xgboost_random_log.ipynb