Konfigurace metody vzorkování

Dokončeno

Konkrétní hodnoty použité při spuštění ladění hyperparametrů nebo úloze úklidu závisí na typu použitého vzorkování .

Ve službě Azure Machine Learning jsou k dispozici tři hlavní metody vzorkování:

  • Vzorkování mřížky: Zkouší všechny možné kombinace.
  • Náhodné vzorkování: Náhodně vybírá hodnoty z vyhledávacího prostoru.
    • Sobol: Přidá do náhodného vzorkování počáteční hodnotu, aby výsledky byly reprodukovatelné.
  • Bayesian vzorkování: Vybere nové hodnoty na základě předchozích výsledků.

Poznámka:

Sobol je variace náhodného vzorkování.

Vzorkování mřížky

Vzorkování mřížky lze použít pouze v případě, že jsou všechny hyperparametry diskrétní a slouží k vyzkoušení všech možných kombinací parametrů ve vyhledávacím prostoru.

Například v následujícím příkladu kódu se vzorkování mřížky používá k vyzkoušení každé možné kombinace diskrétní batch_size a learning_rate hodnoty:

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",
    ...
)

Náhodné vybrání vzorků

Náhodné vzorkování se používá k náhodnému výběru hodnoty pro každý hyperparametr, což může být kombinace diskrétních a souvislých hodnot, jak je znázorněno v následujícím příkladu kódu:

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

Je možné, že budete moct reprodukovat úlohu náhodného úklidu vzorkování. Pokud očekáváte, že to uděláte, můžete místo toho použít Sobol. Sobol je typ náhodného vzorkování, který umožňuje použít semeno. Když přidáte počáteční hodnotu, může být úloha úklidu reprodukována a rozdělení vyhledávacího prostoru je rovnoměrněji rozloženo.

Následující příklad kódu ukazuje, jak použít Sobol přidáním počátečního a pravidla a použitím RandomSamplingAlgorithm třídy:

from azure.ai.ml.sweep import RandomSamplingAlgorithm

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = RandomSamplingAlgorithm(seed=123, rule="sobol"),
    ...
)

Bayesovské vzorkování

Bayesian vzorkování vybere hodnoty hyperparametrů na základě algoritmu optimalizace Bayesian, který se pokusí vybrat kombinace parametrů, které budou mít za následek vyšší výkon z předchozího výběru. Následující příklad kódu ukazuje, jak nakonfigurovat Bayesian vzorkování:

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",
    ...
)

Bayesovské vzorkování můžete použít pouze s výrazy parametrů výběru, uniformy a quniformu.