Konfigurowanie metody próbkowania
Wskazówka
Aby uzyskać więcej szczegółów, zobacz kartę Tekst i obrazy .
Określone wartości używane w przebiegu dostrajania hiperparametrów lub zadania przeszukiwania zależą od typu używanego próbkowania.
Istnieją trzy główne metody próbkowania dostępne w usłudze Azure Machine Learning:
- Próbkowanie siatki: próbuje wykonać każdą możliwą kombinację.
-
Losowe próbkowanie: losowo wybiera wartości z obszaru wyszukiwania.
- Sobol: Dodaje ziarno do losowego próbkowania, aby wyniki można było odtworzyć.
- Próbkowanie bayesowskie: wybiera nowe wartości na podstawie poprzednich wyników.
Uwaga
Sobol jest odmianą losowego próbkowania.
Próbkowanie siatki
Próbkowanie siatki można stosować tylko wtedy, gdy wszystkie hiperparametry są dyskretne i służy do wypróbowania każdej możliwej kombinacji parametrów w przestrzeni wyszukiwania.
Na przykład w poniższym przykładzie kodu próbkowanie siatki służy do wypróbowania każdej możliwej kombinacji dyskretnych wartości batch_size i 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",
...
)
Losowe próbkowanie
Losowe próbkowanie służy do losowego wybierania wartości dla każdego hiperparametru, przy czym wartości te mogą stanowić kombinację dyskretnych i ciągłych wartości, jak pokazano w poniższym przykładzie kodu:
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
Możesz chcieć mieć możliwość odtworzenia zadania przemiatania losowego próbkowania. Jeśli tak, możesz zamiast tego użyć Sobol. Sobol jest typem losowego próbkowania, który umożliwia użycie ziarna. Po dodaniu ziarna zadanie przeszukiwania można odtworzyć, a rozkład przestrzeni wyszukiwania jest rozłożony bardziej równomiernie.
W poniższym przykładzie kodu pokazano, jak używać Sobol przez dodanie ziarna i reguły oraz użycie klasy RandomSamplingAlgorithm:
from azure.ai.ml.sweep import RandomSamplingAlgorithm
sweep_job = command_job_for_sweep.sweep(
sampling_algorithm = RandomSamplingAlgorithm(seed=123, rule="sobol"),
...
)
próbkowanie bayesowskie
Próbkowanie bayesowskie wybiera wartości hiperparametrów przy użyciu algorytmu optymalizacji bayesowskiej, który próbuje wybrać kombinacje parametrów, które zapewnią lepszą wydajność niż w poprzednim wyborze. W poniższym przykładzie kodu pokazano, jak skonfigurować próbkowanie bayesowskie:
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",
...
)
Z próbkowania bayesowskiego można korzystać tylko z wyrażeniami parametrów choice, uniform i quniform.