Configurar um método de amostragem

Concluído

Os valores específicos usados em uma execução de ajuste de hiperparâmetros, ou trabalho de varredura, dependem do tipo de amostragem usado.

Há três métodos de amostragem principais disponíveis no Azure Machine Learning:

  • Amostragem em grade: tenta todas as combinações possíveis.
  • Amostragem aleatória: escolhe aleatoriamente valores do espaço de pesquisa.
    • Sobol: Adiciona uma semente à amostragem aleatória para tornar os resultados reprodutíveis.
  • Amostragem Bayesiana: Escolhe novos valores com base em resultados anteriores.

Nota

Sobol é uma variação de amostragem aleatória.

Amostragem em grelha

A amostragem de grade só pode ser aplicada quando todos os hiperparâmetros são discretos e é usada para tentar todas as combinações possíveis de parâmetros no espaço de pesquisa.

Por exemplo, no exemplo de código a seguir, a amostragem de grade é usada para tentar todas as combinações possíveis de batch_size discretos e learning_rate valor:

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",
    ...
)

Amostragem aleatória

A amostragem aleatória é usada para selecionar aleatoriamente um valor para cada hiperparâmetro, que pode ser uma mistura de valores discretos e contínuos, conforme mostrado no exemplo de código a seguir:

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

Você pode querer ser capaz de reproduzir um trabalho de varredura de amostragem aleatória. Se você espera que você faz, você pode usar Sobol em vez disso. Sobol é um tipo de amostragem aleatória que permite usar uma semente. Quando você adiciona uma semente, o trabalho de varredura pode ser reproduzido e a distribuição do espaço de pesquisa é distribuída de forma mais uniforme.

O exemplo de código a seguir mostra como usar Sobol adicionando uma semente e uma regra e usando a RandomSamplingAlgorithm classe:

from azure.ai.ml.sweep import RandomSamplingAlgorithm

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = RandomSamplingAlgorithm(seed=123, rule="sobol"),
    ...
)

Amostragem bayesiana

A amostragem bayesiana escolhe valores de hiperparâmetros com base no algoritmo de otimização bayesiano, que tenta selecionar combinações de parâmetros que resultarão em melhor desempenho da seleção anterior. O exemplo de código a seguir mostra como configurar a amostragem bayesiana:

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",
    ...
)

Você só pode usar a amostragem bayesiana com expressões de parâmetros choice, uniform e quniform.