定义搜索空间
超参数优化期间尝试的超参数值集称为 搜索空间。 可以选择的可能值范围的定义取决于超参数的类型。
离散超参数
某些超参数需要 离散 值,换句话说,必须从特定 有限 一组可能性中选择值。 可以使用显式值列表中的 Choice 为离散参数定义搜索空间,该列表可以定义为 Python 列表(Choice(values=[10,20,30])
)、范围(Choice(values=range(1,10))
)或任意逗号分隔值集(Choice(values=(30,50,100))
)
还可以从以下任一离散分布中选择离散值:
-
QUniform(min_value, max_value, q)
:返回一个值,如 round(Uniform(min_value,max_value) / q) * q -
QLogUniform(min_value, max_value, q)
: 返回一个值,如 round(exp(uniform(min_value, max_value)) / q) * q -
QNormal(mu, sigma, q)
:返回一个值,如 round(normal(mu, sigma) / q) * q -
QLogNormal(mu, sigma, q)
:返回一个值,如 round(exp(Normal(mu, sigma)) / q) * q
连续超参数
某些超参数 连续 - 换句话说,可以沿刻度使用任何值,从而导致 无限 可能性数。 若要为这些类型的值定义搜索空间,可以使用以下任一分布类型:
-
Uniform(min_value, max_value)
:返回在min_value和max_value之间均匀分布的值 -
LogUniform(min_value, max_value)
:返回一个根据 exp(Uniform(min_value, max_value)) 分布绘制的值,使得返回值的对数是均匀分布的。 -
Normal(mu, sigma)
:返回一个实际值,该值以平均 mu 和标准偏差 sigma 进行正常分布 -
LogNormal(mu, sigma)
:返回一个值,该值是根据 exp(正态分布(mu, sigma)) 绘制的,使得返回值的对数呈正态分布。
定义搜索空间
若要定义用于超参数优化的搜索空间,请为每个命名超参数创建一个具有相应参数表达式的字典。
例如,以下搜索空间指示 batch_size
超参数可以具有值 16、32 或 64,learning_rate
超参数可以具有正态分布的任何值,平均值为 10,标准偏差为 3。
from azure.ai.ml.sweep import Choice, Normal
command_job_for_sweep = job(
batch_size=Choice(values=[16, 32, 64]),
learning_rate=Normal(mu=10, sigma=3),
)