Las redes de neuronas profundas están demostrando sus grandes capacidades para la construcción de modelos de predicción y/o clasificación para la resolución de problemas complejos. Este proceso de construcción es cada vez más complicado debido principalmente a la gran cantidad de elementos que deben ser seleccionados y/o configurados durante su proceso de construcción con el objetivo de crear una red de neuronas que sea capaz de entrenar modelos que cumplan con nuestras necesidades y expectativas.

A la hora de construir una red de neuronas profunda podemos diferenciar tres tipos de parámetros: (1) los parámetros de entrada que se corresponde con las diferentes instancias que utilizaremos durante la fase de aprendizaje de la red de neuronas; (2) los parámetros de aprendizaje que son los diferentes componentes de la red que irán variando su valor durante la fase de entrenamiento y que permiten que la red aprenda a partir de los parámetros de entrada; (3) y los parámetros de configuración o hiper-parámetros que son los que nos permiten configurar la estructura de la red de neuronas o el modo de ejecución de la fase de entrenamiento, dividiéndose estos en dos grupos:

  • Hiper-parámetros del modelo: Son aquellos parámetros que definen la arquitectura de la red de neuronas. Este tipo de parámetros sólo suelen aparecer cuando se utilizan redes de neuronas para la construcción de nuestros modelos. Por ejemplo, el tipo de funciones de activación de las diferentes capas o el número de unidades (neuronas o filtros) de cada una de las capas.
  • Hiper-parámetros del algoritmo: Definen el modo de funcionamiento de la fase de aprendizaje con el objetivo de modificar el modo de ejecución del algoritmo de entrenamiento. Por ejemplo, la tasa de aprendizaje o el tamaño de batch.

Esto implica que el número de hiper-parámetros a configurar puede ser muy elevado dependiendo de la complejidad de la red que necesitemos construir incrementando la complejidad, desde el punto de vista de los ingenieros de Machine Learning, a la hora de seleccionar de manera manual los valores adecuados de estos hiper-parámetros. Por lo que es importante dotarlos de técnicas que les permitan seleccionar de manera sencilla y eficiente los posibles valores de los hiper-parámetros. Este proceso de selección automática de hiper-parámetros se denomina optimización de hiper-parámetros. Este proceso de selección se denomina optimización de hiper-parámetros.

Optimización de hiper-parámetros

La optimización de hiper-parámetros se realiza normalmente mediante la utilización de un proceso de búsqueda cuyo objetivo consiste en encontrar la mejor selección de valores para un conjunto finito de hiper-parámetros con el objetivo de generar el mejor modelo posible.

Los algoritmos de búsqueda se basan en tres elementos básicos: (1) un espacio, normalmente finito, de posibles estados que se corresponden con las posibles soluciones del problema sobre los que se realizará la búsqueda; (2) un conjunto de acciones que nos permiten generar nuevos estados a partir de los estados generadores previamente; (3) y una función objetivo que permite definir la “calidad” de cada uno de los estados que son generados de manera que el algoritmo pueda utilizar esta función para maximizar o minimizar el objetivo para guiar el proceso de búsqueda a la hora de seleccionar el siguiente nodo a expandir.

Desde la perspectiva de un proceso de optimización de hiper-parámetros, el espacio de estados se corresponde con todas las posibles configuraciones de los hiper-parámetros en base a los rangos de posibles valores definidos para cada uno de ellos; las acciones se corresponden con operaciones utilizadas por el algoritmo de búsqueda para generar nuevas estados; y la función objetivo que permite guiar el proceso de búsqueda con el objetivo de maximizar o minimizar los valores obtenidos para cada estado. Es muy común utilizar el “accuracy” obtenido tras la ejecución de la fase de entrenamiento como valor objetivo para guiar el proceso de búsqueda.

Como se puede observar este proceso es normalmente muy costoso desde el punto de vista computacional, ya que supone la ejecución de múltiples fases de entrenamiento mediante la modificación conjunta de los diferentes hiper-parámetros a optimizar. Es decir, cuanto mayor sea el número de hiper-parámetros a seleccionar, mayor será el tiempo y el coste computacional del proceso de optimización debido al elevado número de combinaciones válidas que pueden seleccionarse. Para realizar el proceso de selección de hiper-parámetros se utilizan diferentes tipos de algoritmos de búsqueda, siendo los más utilizados los que se describen a continuación:

  • La búsqueda aleatoria (Random Search) es un proceso de búsqueda de tipo aleatorio sobre un espacio de búsqueda finito. En el caso de los hiper-parámetros el proceso de búsqueda aleatoria consiste en generar nuevos estados (configuraciones de hiper-parámetros) mediante la modificación aleatoria de una de las soluciones previamente generadas dentro del espacio de búsqueda, siendo normalmente la que mejor valor ha obtenido tras aplicar la función objetivo aunque, dependiendo de la implementación del algoritmo, se genera la nueva solución a partir del último estado (configuración de hiper-parámetros).En la imagen (derecha) podemos observar la representación espacial de un proceso de búsqueda aleatoria para diferentes hiper-parámetros donde los posibles valores de los hiper-parámetros están distribuidos de manera aleatoria a lo largo del espacio finito de hiper-parámetros.
  • La búsqueda en cuadrícula (Grid Search) es un proceso de búsqueda donde los diferentes valores de hiper-parámetros se combinan para crear una maya (grid) donde se incluyen todas las posibles combinaciones de parámetros distribuidos de manera uniforme. En ese caso el proceso de búsqueda consiste en utilizar acciones que permiten al algoritmo moverse a través de la cuadrícula seleccionando las mejores selecciones de parámetros en base al resultado obtenido por la función objetivo. En la imagen (izquierda) podemos observar la representación espacial de un proceso de búsqueda en cuadrícula para diferentes hiper-parámetros donde los posibles valores de los hiper-parámetros están distribuidos de manera espacial en una cuadrícula.
  • La búsqueda mediante optimización bayesiana es un proceso de búsqueda guiado de manera probabilística donde a cada hiper-parámetro se le asigna una puntuación de probabilidad en la función objetivo. Además, este tipo de modo de búsqueda utiliza los resultados de las evaluaciones anteriores para construir el modelo de probabilidad con el objetivo de dirigir la búsqueda hacia las zonas con mejores selecciones de valores.

Además de estas tres existen otras técnicas de búsqueda para la optimización de hiper-parámetros, algunas de las cuales están incluidas en los diferentes frameworks de Aprendizaje Automático y Aprendizaje Profundo:

  • Búsqueda mediante hiperbanda.
  • Búsqueda evolutiva mediante la utilización de algoritmos genéticos.
  • Búsqueda mediante optimización basada en gradientes.

Con independencia del tipo de algoritmo de búsqueda que vayamos a utilizar, el proceso de optimización de hiper-parámetros suele estar formado por cuatro fases:

  • Definición de hiper-parámetros: Esta fase suele ser de tipo manual, debido a que consiste en definir los posibles valores que podrán ser seleccionados durante el proceso de búsqueda. Este proceso de selección implica conocer la naturaleza de cada uno de los hiper-parámetros con el objetivo de seleccionar un rango de valores válidos, ya que existen valores que serán válidos pero que no aportarán nada sobre el proceso de selección. Por ejemplo, la tasa de aprendizaje solo admitirá valores decimales entre 0 y 1 aunque admite valores superiores a 1, mientras que el número de neuronas o unidades de una capa admitirá valores enteros entre 1 e infinito.
  • Definición del algoritmo de búsqueda: La segunda fase, normalmente, es de tipo manual aunque es posible automatizarla. Consiste en definir los diferentes parámetros del proceso de búsqueda, que incluyen el tipo de algoritmo que será utilizado para buscar en el espacio de estados, así como la configuración del mismo. Como, por ejemplo, el número de iteraciones del proceso de búsqueda con el objetivo de definir una condición de parada para el proceso de búsqueda. En los procesos de optimización siempre es necesario establecer una condición de parada debido a que la condición de parada natural es la exploración completa del espacio de estado y este suele tener un tamaño muy elevado, lo que aumentaría en gran medida la duración del proceso de optimización.
  • Búsqueda: La tercera fase es totalmente automática y consiste en ejecutar el proceso de búsqueda sobre el espacio de estados finito en base a la configuración seleccionada en las fases anteriores. Esta fase está formada por tres etapas:
    • Selección: Consiste en seleccionar una configuración para los diferentes hiper-parámetros mediante la utilización de un nuevo estado del espacio de búsqueda.
    • Entrenamiento: Ejecutar el proceso de entrenamiento con el objetivo de generar un modelo y poder evaluar la calidad del modelo mediante el conjunto de validación. Este proceso de entrenamiento deberá ser similar para todos los estados del espacio de búsqueda seleccionados durante el proceso de búsqueda, con el objetivo de realizar una comparativa justa. Es decir, solo se podrán variar los valores de los hiper-parámetros a optimizar.
    • Evaluación: Supone evaluar el modelo generado en la actual iteración de búsqueda con el objetivo de calcular una puntuación y almacenar el modelo, la configuración de hiper-parámetros y la puntuación en el ranking de modelos. La puntuación podrá ser utilizada por algunos algoritmos de búsqueda para guiar el proceso mediante la función objetivo para buscar soluciones que maximicen o minimicen este valor dependiente.
  • Selección de la configuración final (Selección del Modelo): La última fase consiste en seleccionar el mejor modelo generado en base a una serie de criterios definidos previamente. La selección se puede hacer en base a la calidad del modelo o en base a otros criterios según el criterio del ingeniero que realice la configuración. Esta fase puede ser realizada de manera manual o automática.

Conclusión

La utilización de procesos de optimización de hiper-parámetros es una técnica que nos permite construir modelos de razonamiento basados en Aprendizaje Automático más robustos, aunque implica un incremento sustancial a nivel computacional y temporal del proceso de aprendizaje dependiendo del número de hiper-parámetros a optimizar y la complejidad del problema a resolver. Es muy importante a la hora de realizar un proceso de optimización seleccionar con mucho cuidado el número de hiper-parámetros y sus posibles rangos de valores ya que una selección excesiva de posibles configuraciones podrían tardar muchísimo en generar mejores soluciones debido al tamaño del espacio de búsqueda, por lo que se recomienda realizar selecciones más acotadas.

En todo caso, lo más recomendable es aplicar este tipo de técnicas una vez que hayamos conseguido entrenar un modelo con calidad aceptable y, a partir de ese modelo, aplicar un problema de optimización con el objetivo de mejorar su resultado. En los próximos días publicaremos la segunda parte de este post donde os mostraremos cómo aplicar la optimización de hiper-parámetros sobre redes de neuronas profundas mediante la utilización de la librería Keras Tuner.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.