設定取樣方法
超參數微調執行或整理作業中使用的特定值,取決於使用的取樣類型。
Azure Machine Learning 中有三個主要的取樣方法:
- 格線取樣:嘗試每個可能的組合。
-
隨機取樣:隨機選擇搜尋空間中的值。
- Sobol:將種子新增至隨機取樣以重現結果。
- 貝氏取樣:根據先前的結果選擇新的值。
注意
Sobol 是隨機取樣的變化。
格線取樣
只有在所有超參數都是離散,且用來嘗試搜尋空間中的每個可能參數組合時,才能夠套用方格取樣。
例如,在下列程式碼範例中,使用方格取樣來嘗試離散 batch_size 和 learning_rate 值的每個可能組合:
from azure.ai.ml.sweep import Choice
command_job_for_sweep = command_job(
batch_size=Choice(values=[16, 32, 64]),
learning_rate=Choice(values=[0.01, 0.1, 1.0]),
)
sweep_job = command_job_for_sweep.sweep(
sampling_algorithm = "grid",
...
)
隨機取樣
隨機取樣可用來為每個超參數隨機選取一個值,這可能會是離散和連續的值的混合,如下列程式碼範例所示:
from azure.ai.ml.sweep import Normal, Uniform
command_job_for_sweep = command_job(
batch_size=Choice(values=[16, 32, 64]),
learning_rate=Normal(mu=10, sigma=3),
)
sweep_job = command_job_for_sweep.sweep(
sampling_algorithm = "random",
...
)
Sobol
您可能想要能夠重現隨機取樣整理作業。 如果您預期這麼做,則可以改用 Sobol。 Sobol 是一種隨機取樣類型,可讓您使用種子。 當您新增種子時,可以重現整理作業,而且搜尋空間分佈會更平均地散佈。
下列程式碼範例顯示如何藉由新增種子和規則,並使用 RandomSamplingAlgorithm
類別來使用 Sobol:
from azure.ai.ml.sweep import RandomSamplingAlgorithm
sweep_job = command_job_for_sweep.sweep(
sampling_algorithm = RandomSamplingAlgorithm(seed=123, rule="sobol"),
...
)
貝氏取樣
貝氏取樣會根據貝氏最佳化演算法來選擇超參數值,該演算法會嘗試從先前的選項來選取會導致效能改善的參數組合。 下列程式碼範例顯示如何設定貝氏取樣:
from azure.ai.ml.sweep import Uniform, Choice
command_job_for_sweep = job(
batch_size=Choice(values=[16, 32, 64]),
learning_rate=Uniform(min_value=0.05, max_value=0.1),
)
sweep_job = command_job_for_sweep.sweep(
sampling_algorithm = "bayesian",
...
)
您只能使用具有 choice、uniform 和 quniform 參數運算式的貝氏取樣。