Konfigurera en samplingsmetod

Slutförd

Tip

Mer information finns på fliken Text och bilder !

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ässigt urval: 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.

Obs!

Sobol är en variant av slumpmässig sampling.

Sampling på rutnät

Rutnätssökning 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 värden för batch_size och 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",
    ...
)

Stickprov

Slumpmässigt urval 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 tror att så är fallet 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 seed. 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 provtagning

Bayesiansk sampling väljer hyperparametervärden baserat på Bayesian-optimeringsalgoritmen, som försöker välja parameterkombinationer som resulterar i bättre prestanda än i 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 bayesisk sampling med choice, uniform och quniform parameteruttryck.