Konfigurowanie metody próbkowania

Ukończone

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.