Konfigurera en samplingsmetod

Slutförd

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 RandomParameterSampling klassen:

from azure.ai.ml.sweep import RandomParameterSampling

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = RandomParameterSampling(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.