Nuevas herramientas de optimización bayesiana en PyTorch

Con frecuencia en machine learning queremos optimizar los hiperparámetros de un modelo. Por ejemplo, en una red neuronal queremos saber el número de capas, el número de unidades por capa o la tasa de aprendizaje (learning rate) que logran un mejor comportamiento.

Este problema lo podemos representar como:

x_{m}=argmin_{x \in \mathcal{X}} f(x)

encontrar el conjunto de hiperparámetros xm que minimiza la función de coste.

El problema es que las evaluaciones de la función de coste consumen muchos recursos, ya que en cada iteración hay que elegir unos hiperparámetros, entrenar el modelo con los datos de entrenamiento y calcular la función de coste.

Se podrían usar soluciones como una buena estimación inicial, una búsqueda de cuadrículas (greed search) o una búsqueda aleatoria, pero no son eficientes.

Optimización Bayesiana BoTorch

Aquí surge la optimización bayesiana, que trata de construir uno modelo de probabilidad de la función de coste, selecciona los mejores hiperparámetros con este modelo y lo evalua con la función de coste original.

Con este enfoque, se parte de una distribución inicial de los mejores hiperparámetros y se van seleccionando hiperparámetros para evaluarlos con la función objetivo y se actualiza el modelo de probabilidad. De esta forma se va actualizando el modelo P(éxito|hiperparámetros) que mapea el conjunto de hiperparámetros con una probabilidad de éxito.

En lugar de elegir los hiperparámetros del modelo de manera aleatoria, la optimización bayesiana los selecciona de una manera informada y va mejorando la selección con las evaluaciones realizadas. Los pasos que se siguen en la optimización bayesiana, que se pueden ver en detalle en este enlace, son los siguientes:

  • Construir un modelo de probabilidad sustituto de la función objetivo/coste.
  • Encontrar los hiperparámetros que mejor se comportan según el modelo sustituto.
  • Aplicar dichos hiperparámetros y evaluarlos usando la función objetivo original.
  • Actualizar el modelo sustituto con los resultados de la evaluación.
  • Repetir los pasos dos a cuatro hasta que alcancemos un umbral de tiempo o de calidad.

Con el objetivo de facilitar el uso de la optimización bayesiana en Pytorch, Facebook ha puesto a disposición de la comunidad dos potentes herramientas:

  • Ax: Una herramienta de alto nivel para gestionar, desarrollar, desplegar y automatizar experimentos adaptativos.
  • BoTorch: Una librería de optimización bayesiana.

Ax proporciona librerías para interaccionar con BoTorch. BoTorch facilita la optimización bayesiana a través de una interfaz modular con primitivas de optimización, modelos de probabilidad sustitutos, funciones de adquisición y optimizadores. Todo ello aprovechando las ventajas de PyTorch como los grafos computacionales dinámicos y la diferenciación automática.

Esperamos que estas librerías faciliten a los usuarios el desarrollo, despliegue y optimización de algoritmos de machine learning.

Un comentario sobre “Nuevas herramientas de optimización bayesiana en PyTorch

Agrega el tuyo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Orgullosamente ofrecido por WordPress | Tema: Baskerville 2 por Anders Noren.

Subir ↑

A %d blogueros les gusta esto: