定义搜索空间

已完成

在超参数优化期间尝试的一组超参数值称为“搜索空间”。 可以选择的可能值范围的定义取决于超参数的类型。

离散超参数

一些超参数需要离散值;换言之,必须从一组有限的特定可能值中选择值。 可以使用显式值列表中的选择为离散参数定义搜索空间,可以将这些值定义为 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):返回正态分布的实际值,包括平均值 μ 和标准方差 σ
  • LogNormal(mu, sigma):返回根据 exp(Normal(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),
)