Een steekproefmethode configureren
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 .