Konfigurera en samplingsmetod
De specifika värden som används i en hyperparameterjusteringskörning eller ett svepjobb beror på vilken typ av sampling som används.
Det finns tre huvudsakliga samplingsmetoder i Azure Machine Learning:
- Rutnätssampling: Försöker med alla möjliga kombinationer.
-
Slumpmässig sampling: Slumpmässigt väljer värden från sökutrymmet.
- Sobol: Lägger till ett frö till slumpmässig sampling för att göra resultatet reproducerbart.
- Bayesiansk sampling: Väljer nya värden baserat på tidigare resultat.
Kommentar
Sobol är en variant av slumpmässig sampling.
Rutnätssampling
Rutnätssampling kan bara användas när alla hyperparametrar är diskreta och används för att prova alla möjliga kombinationer av parametrar i sökområdet.
I följande kodexempel används till exempel rutnätssampling för att prova alla möjliga kombinationer av diskreta batch_size och learning_rate värde:
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",
...
)
Stickprov
Slumpmässig sampling används för att slumpmässigt välja ett värde för varje hyperparameter, vilket kan vara en blandning av diskreta och kontinuerliga värden enligt följande kodexempel:
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
Du kanske vill kunna återskapa ett slumpmässigt urvalssvepjobb. Om du förväntar dig att du gör det kan du använda Sobol i stället. Sobol är en typ av slumpmässig sampling som gör att du kan använda ett frö. När du lägger till ett frö kan svepjobbet återskapas och sökutrymmesfördelningen fördelas jämnare.
I följande kodexempel visas hur du använder Sobol genom att lägga till ett frö och en regel och använda RandomSamplingAlgorithm
klassen:
from azure.ai.ml.sweep import RandomSamplingAlgorithm
sweep_job = command_job_for_sweep.sweep(
sampling_algorithm = RandomSamplingAlgorithm(seed=123, rule="sobol"),
...
)
Bayesiansk sampling
Bayesiansk sampling väljer hyperparametervärden baserat på Bayesian-optimeringsalgoritmen, som försöker välja parameterkombinationer som resulterar i bättre prestanda från föregående val. Följande kodexempel visar hur du konfigurerar Bayesiansk sampling:
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",
...
)
Du kan bara använda Bayesiansk sampling med val, enhetliga och quniforma parameteruttryck.