Configurar um método de amostragem
Os valores específicos usados em uma execução de ajuste de hiperparâmetro, ou trabalho de varredura, dependem do tipo de amostragem usada.
Há três métodos de amostragem principais disponíveis no Azure Machine Learning:
- Amostragem de grade: tenta todas as combinações possíveis.
- Amostragem aleatória: escolhe valores aleatoriamente no espaço de pesquisa.
- Sobol: adiciona uma semente à amostragem aleatória para tornar os resultados reproduzíveis.
- Amostragem bayesiana: escolhe novos valores com base nos resultados anteriores.
Observação
Sobol é uma variação de amostragem aleatória.
Amostragem de grade
A amostragem de grade só pode ser aplicada quando todos os hiperparâmetros são discretos, e é usada para experimentar cada possível combinação de parâmetros no espaço de pesquisa.
No exemplo de código a seguir, a amostragem de grade é usada para experimentar cada possível combinação dos valores discretos batch_size e 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",
...
)
Amostragem aleatória
A amostragem aleatória é usada para selecionar aleatoriamente um valor para cada hiperparâmetro, que pode ser uma combinação 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
Talvez você queira reproduzir um trabalho de varredura de amostragem aleatória. Se você quiser fazer isso, poderá usar Sobol. 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 de espaço de pesquisa é feita de forma mais uniforme.
O seguinte exemplo de código mostra como usar Sobol adicionando uma semente e uma regra e usando a classe RandomSamplingAlgorithm
:
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 os valores de hiperparâmetro com base no algoritmo de otimização Bayesiana, que tenta selecionar combinações de parâmetros que resultarão no desempenho aprimorado 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âmetro choice, uniform e quniform.