定義搜尋空間

已完成

在超參數微調期間嘗試的這組超參數值稱為搜尋空間。 可以選擇的可能值範圍定義取決於超參數的類型。

離散超參數

有些超參數需要離散值,換句話說,您必須從一組特定的有限可能性中選取值。 您可以使用明確值清單中的選項來定義離散參數的搜尋空間,您可以其定義為 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(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),
)