Configuración de un método de muestreo

Completado

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.