Konfigurowanie metody próbkowania

Ukończone

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 Edukacja:

  • 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.