Een steekproefmethode configureren

Voltooid

De specifieke waarden die worden gebruikt in een hyperparameterafstemmingsuitvoering of sweep-taak, zijn afhankelijk van het type steekproef dat wordt gebruikt.

Er zijn drie belangrijke samplingmethoden beschikbaar in Azure Machine Learning:

  • Rastersampling: Probeer elke mogelijke combinatie.
  • Willekeurige steekproeven: Kies willekeurig waarden uit de zoekruimte.
    • Sobol: Voegt een zaad toe aan willekeurige steekproeven om de resultaten reproduceerbaar te maken.
  • Bayesiaanse steekproeven: kiest nieuwe waarden op basis van eerdere resultaten.

Notitie

Sobol is een variatie van willekeurige steekproeven.

Rastersampling

Rastersampling kan alleen worden toegepast wanneer alle hyperparameters discreet zijn en wordt gebruikt om elke mogelijke combinatie van parameters in de zoekruimte te proberen.

In het volgende codevoorbeeld wordt bijvoorbeeld rastersampling gebruikt om elke mogelijke combinatie van discrete batch_size en learning_rate waarde uit te proberen:

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

Willekeurige steekproeven

Willekeurige steekproeven worden gebruikt om willekeurig een waarde te selecteren voor elke hyperparameter. Dit kan een combinatie zijn van discrete en continue waarden, zoals wordt weergegeven in het volgende codevoorbeeld:

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

Mogelijk wilt u een willekeurige steekproevenveegtaak kunnen reproduceren. Als u verwacht dat u dat doet, kunt u In plaats daarvan Sobol gebruiken. Sobol is een soort willekeurige steekproeven waarmee u een zaad kunt gebruiken. Wanneer u een seed toevoegt, kan de sweep-taak worden gereproduceerd en wordt de verdeling van de zoekruimte gelijkmatiger verdeeld.

In het volgende codevoorbeeld ziet u hoe u Sobol gebruikt door een seed en een regel toe te voegen en de klasse te RandomSamplingAlgorithm gebruiken:

from azure.ai.ml.sweep import RandomSamplingAlgorithm

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

Bayesiaanse steekproeven

Bayesian-steekproeven kiezen hyperparameterwaarden op basis van het Bayesiaanse optimalisatie-algoritme, dat probeert parametercombinaties te selecteren die leiden tot verbeterde prestaties van de vorige selectie. In het volgende codevoorbeeld ziet u hoe u Bayesian-steekproeven configureert:

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

U kunt bayesiaanse steekproeven alleen gebruiken met de parameterexpressies keuze, uniform en quniform .