En esta página, se describen los conceptos relacionados con el ajuste de hiperparámetros, que es el optimizador de modelos automatizado que ofrece AI Platform Training. El ajuste de hiperparámetros aprovecha la infraestructura de procesamiento de Google Cloud para probar diferentes opciones de configuración de hiperparámetros cuando se entrena el modelo. Puede proporcionarte valores optimizados para los hiperparámetros, lo que mejora la exactitud predictiva del modelo.
¿Qué es un hiperparámetro?
Los hiperparámetros contienen los datos que rigen el proceso de entrenamiento.
Tu aplicación de entrenamiento controla tres categorías de datos a medida que entrena tu modelo:
Tus datos de entrada (también llamados datos de entrenamiento) son una colección de registros individuales (instancias) que contiene las características importantes para tu problema de aprendizaje automático. Estos datos se usan durante el entrenamiento para configurar tu modelo con el fin de que haga predicciones precisas sobre las instancias nuevas de datos similares. Sin embargo, los valores en tus datos de entrada nunca forman parte directamente de tu modelo.
Los parámetros de tu modelo son las variables que tu técnica de aprendizaje automático seleccionada usa para ajustarse a tus datos. Por ejemplo, una red neuronal profunda (DNN) está compuesta por nodos de procesamiento (neuronas), cada uno con una operación realizada en los datos a medida que viaja a través de la red. Cuando tu DNN está entrenada, cada nodo tiene un valor de peso que le dice a tu modelo el impacto que tiene en la predicción final. Esos pesos son un ejemplo de los parámetros de tu modelo. En muchos aspectos, los parámetros del modelo son el modelo, es decir, son lo que lo distinguen de otros modelos del mismo tipo que operan con datos similares.
Tus hiperparámetros son las variables que rigen el proceso de entrenamiento en sí. Por ejemplo, parte de la configuración de una red neuronal profunda es decidir cuántas capas ocultas de nodos usar entre la capa de entrada y la de salida, y cuántos nodos debe usar cada capa. Estas variables no están directamente relacionadas con los datos de entrenamiento. Son variables de configuración. Ten en cuenta que los parámetros cambian durante un trabajo de entrenamiento, mientras que los hiperparámetros suelen ser constantes durante un trabajo.
Los parámetros de tu modelo se optimizan (podrías decir "ajustan") mediante el proceso de entrenamiento: ejecutas datos a través de las operaciones del modelo, comparas la predicción obtenida con el valor real para cada instancia de datos, evalúas la precisión y te adaptas hasta que encuentras los mejores valores. Los hiperparámetros se ajustan cuando ejecutas todo el trabajo de entrenamiento, observas la exactitud global y realizas ajustes. En ambos casos, estás modificando la composición del modelo en un esfuerzo por encontrar la mejor combinación para resolver tu problema.
Sin una tecnología automatizada como el ajuste de hiperparámetros de AI Platform Training, debes realizar ajustes manuales en los hiperparámetros a lo largo de muchas ejecuciones de entrenamiento para obtener los valores óptimos. El ajuste de los hiperparámetros hace que el proceso de determinar la mejor configuración de los hiperparámetros sea más fácil y menos tedioso.
Cómo funciona el ajuste de los hiperparámetros
El ajuste de los hiperparámetros funciona ejecutando varias pruebas en un solo trabajo de entrenamiento. Cada prueba es una ejecución completa de las aplicaciones de entrenamiento con valores para los hiperparámetros elegidos, configurada dentro de los límites que especifiques. El servicio de entrenamiento de AI Platform Training hace un seguimiento de los resultados de cada prueba y realiza ajustes para las pruebas posteriores. Cuando se completa el trabajo, puedes obtener un resumen de todas las pruebas junto con la configuración más efectiva de los valores según los criterios que especificaste.
El ajuste de hiperparámetros requiere una comunicación explícita entre el servicio de entrenamiento de AI Platform Training y la aplicación de entrenamiento. La aplicación de entrenamiento define toda la información que necesita el modelo. Debes definir los hiperparámetros (variables) que deseas ajustar y un valor objetivo para cada hiperparámetro.
Si deseas obtener más información sobre cómo AI Platform Training usa la optimización bayesiana para el ajuste de hiperparámetros, consulta la entrada de blog llamada Ajuste de hiperparámetros en Cloud Machine Learning Engine mediante la optimización bayesiana.
Además de la optimización bayesiana, AI Platform Training optimiza los trabajos de ajuste de hiperparámetros. Si realizas ajustes de hiperparámetros con modelos similares y solo cambias la función objetivo o agregas una columna de entrada nueva, AI Platform Training puede mejorar con el tiempo y hacer más eficiente el ajuste de hiperparámetros.
Qué optimiza el ajuste de hiperparámetros
El ajuste de los hiperparámetros optimiza una sola variable de destino, también llamada métrica del hiperparámetro, que especificaste. La precisión del modelo, como se calcula a partir de un pase de evaluación, es una métrica común. La métrica debe ser un valor numérico y puedes especificar si deseas ajustar tu modelo para maximizar o minimizar tu métrica.
Cuando inicias un trabajo con el ajuste de hiperparámetros, estableces el nombre de tu métrica del hiperparámetro. Este es el nombre que asignas al resumen escalar que agregas a la aplicación de entrenamiento.
El nombre predeterminado de la métrica es training/hptuning/metric
. Recomendamos que asignes un nombre personalizado. La única diferencia funcional es que si usas un nombre personalizado, debes configurar el valor hyperparameterMetricTag
del objeto HyperparameterSpec de la solicitud de trabajo para que coincida con el nombre elegido.
Cómo AI Platform Training obtiene la métrica
Para los modelos de TensorFlow, el servicio de AI Platform Training supervisa los eventos de resumen de TensorFlow que genera la aplicación de entrenamiento y recupera la métrica.
Si tu modelo se compiló con otro marco de trabajo o usa un contenedor personalizado, debes usar el paquete cloudml-hypertune
de Python para informar la métrica de entrenamiento a AI Platform Training.
El flujo de los valores de hiperparámetros
Sin el ajuste de los hiperparámetros, puedes configurar tus hiperparámetros por el medio que prefieras en tu aplicación de entrenamiento. Por ejemplo, puedes configurar los hiperparámetros si pasas los argumentos de la línea de comandos a tu módulo de aplicación principal, o si se los proporcionas a tu aplicación en un archivo de configuración.
Cuando usas el ajuste de los hiperparámetros, debes seguir el procedimiento que se indica a continuación para configurar los valores de los hiperparámetros que estás usando para el ajuste:
Define un argumento de la línea de comandos en tu módulo de entrenamiento principal para cada hiperparámetro ajustado.
Usa el valor que pasaste en esos argumentos para configurar el hiperparámetro correspondiente en el código de TensorFlow de tu aplicación.
Cuando configuras un trabajo de entrenamiento con el ajuste de los hiperparámetros, defines cada hiperparámetro que se va a ajustar, su tipo y el rango de valores para probar. Identificas cada hiperparámetro mediante el uso del mismo nombre que el argumento correspondiente que definiste en tu módulo principal. El servicio de entrenamiento incluye argumentos de la línea de comandos que usan estos nombres cuando ejecuta tu aplicación.
Cómo seleccionar los hiperparámetros para ajustar
Existen muy pocos consejos sobre cómo elegir qué hiperparámetros debes ajustar. Si tienes experiencia con la técnica de aprendizaje automático que estás usando, puedes conocer cómo se comportan sus hiperparámetros. Es posible que también puedas encontrar consejos en las comunidades de aprendizaje automático.
Independientemente de cómo los elijas, es importante que comprendas las consecuencias. Cada hiperparámetro que seleccionas para ajustarlo tiene el potencial de aumentar el número de pruebas necesario para un trabajo de ajuste exitoso. Cuando entrenas en AI Platform Training, se te aplican cargos por la duración del trabajo. Si seleccionas con atención los hiperparámetros que se ajustarán, puedes reducir el tiempo y el costo del entrenamiento del modelo.
Tipos de hiperparámetros
Los tipos de hiperparámetros compatibles se enumeran en la documentación de referencia del trabajo. En el objeto ParameterSpec, especifica el tipo de cada hiperparámetro y los rangos de valores relacionados como se indica en la siguiente tabla:
Tipo | Rangos de valor | Datos de valor |
---|---|---|
DOUBLE |
minValue y maxValue |
Valores de punto flotante |
INTEGER |
minValue y maxValue |
Números enteros |
CATEGORICAL |
categoricalValues |
Lista de strings de categoría |
DISCRETE |
discreteValues |
Lista de valores en orden ascendente |
Escalamiento de los hiperparámetros
Puedes especificar el tipo de escalamiento que se realizará en un hiperparámetro. Se recomienda el escalamiento para los tipos DOBLE y ENTERO. Los tipos de escalamiento disponibles son:
UNIT_LINEAR_SCALE
UNIT_LOG_SCALE
UNIT_REVERSE_LOG_SCALE
Algoritmos de búsqueda
Puedes especificar un algoritmo de búsqueda en el objeto HyperparameterSpec. Si no especificas un algoritmo, el trabajo usa el algoritmo predeterminado de AI Platform Training, que impulsa la búsqueda de parámetros para llegar a la solución óptima con una búsqueda más efectiva en el espacio de los parámetros.
Los valores disponibles son los siguientes:
ALGORITHM_UNSPECIFIED
: Genera el mismo comportamiento que cuando no especificas un algoritmo de búsqueda. AI Platform Training usa un algoritmo predeterminado, que aplica la optimización bayesiana a fin de buscar el espacio de valores de hiperparámetros posibles y, en consecuencia, logra la técnica más eficaz para el conjunto de hiperparámetros.GRID_SEARCH
: Una búsqueda por cuadrícula simple dentro del espacio posible. Esta opción es útil si deseas especificar un número de pruebas que sea mayor que el número de puntos en el espacio posible. En esos casos, si no especificas una búsqueda por cuadrícula, el algoritmo predeterminado de AI Platform Training puede generar sugerencias duplicadas. Para usar la búsqueda por cuadrícula, todos los parámetros deben ser del tipoINTEGER
,CATEGORICAL
oDISCRETE
.RANDOM_SEARCH
: Una búsqueda aleatoria simple dentro del espacio posible.
¿Qué sigue?
- Consulta cómo implementar el ajuste de los hiperparámetros en tus trabajos de entrenamiento.
- Consulta un ejemplo de cómo realizar un ajuste bayesiano de hiperparámetros en un modelo de caja negra y revisa el código correspondiente en GitHub.
- Lee una entrada de blog sobre Optimización bayesiana y ajuste del hiperparámetro.
- Lee una entrada de blog sobre los avances en el ajuste de hiperparámetros.