Configuración de un método de muestreo
Los valores específicos que se usan en una ejecución de ajuste de hiperparámetros, o trabajo de barrido, dependen del tipo de muestreo que se usa.
Hay tres métodos de muestreo principales disponibles en Azure Machine Learning:
- Muestreo de cuadrícula: prueba todas las combinaciones posibles.
- Muestreo aleatorio: elige aleatoriamente los valores del espacio de búsqueda.
- Sobol: agrega un valor de inicialización al muestreo aleatorio para que los resultados sean reproducibles.
- Muestreo bayesiano: elige nuevos valores en función de los resultados anteriores.
Nota
Sobol es una variación del muestreo aleatorio.
Muestreo de cuadrícula
El muestreo de cuadrícula solo se puede aplicar cuando todos los hiperparámetros son discretos, y se usa para probar cada combinación posible de parámetros en el espacio de búsqueda.
Por ejemplo, en el ejemplo de código siguiente, se usa el muestreo de cuadrícula para probar todas las combinaciones posibles de los valores discretos batch_size y 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",
...
)
Muestreo aleatorio
El muestreo aleatorio se usa para seleccionar aleatoriamente un valor para cada hiperparámetro, que puede ser una combinación de valores discretos y continuos, tal como se muestra en el ejemplo de código siguiente:
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
Es posible que desee poder reproducir un trabajo de barrido de muestreo aleatorio. Si espera que lo haga, puede usar Sobol en su lugar. Sobol es un tipo de muestreo aleatorio que permite usar una inicialización. Al agregar un valor de inicialización, el trabajo de barrido se puede reproducir y la distribución del espacio de búsqueda se distribuye de forma más uniforme.
En el ejemplo de código siguiente se muestra cómo usar Sobol mediante la adición de un valor de inicialización y una regla, y el uso de la clase RandomSamplingAlgorithm
:
from azure.ai.ml.sweep import RandomSamplingAlgorithm
sweep_job = command_job_for_sweep.sweep(
sampling_algorithm = RandomSamplingAlgorithm(seed=123, rule="sobol"),
...
)
Muestreo bayesiano
El muestreo bayesiano elige los valores de hiperparámetro basados en el algoritmo de optimización bayesiano, que intenta seleccionar combinaciones de parámetros que mejorarán el rendimiento con respecto a la selección anterior. En el ejemplo de código siguiente se muestra cómo configurar el muestreo bayesiano:
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",
...
)
Solo puede utilizar el muestreo bayesiano con las expresiones de parámetros choice, uniform y quniform.