Konfigurowanie metody próbkowania
Określone wartości używane w przebiegu dostrajania hiperparametrów lub zadania zamiatania 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 inicjator 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 to odmiana 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 batch_size i learning_rate wartości:
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żdej hiperparametru, która może być 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że być możliwe odtworzenie losowego zadania zamiatania próbkowania. Jeśli oczekujesz, że to zrobisz, możesz zamiast tego użyć rozwiązania Sobol. Sobol jest typem losowego próbkowania, który umożliwia użycie nasion. Po dodaniu inicjatora zadanie zamiatania 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ć sobola przez dodanie inicjatora i reguły oraz użycie RandomSamplingAlgorithm
klasy :
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 hiperparametryczne na podstawie algorytmu optymalizacji Bayesa, który próbuje wybrać kombinacje parametrów, które spowodują poprawę wydajności z poprzedniego wyboru. 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",
...
)
Próbkowanie bayesowskie można używać tylko z wybranymi wyrażeniami parametrów, uniform i quniform.