Por Eduardo Cesar Garrido Merchán
Profesor de Métodos Cuantitativos, Universidad Pontificia Comillas.
Pincha aquí para ver el vídeo sobre este post
¡Bienvenido al último artículo de nuestra serie de introducción a la optimización Bayesiana! En esta entrada, mi objetivo es animarte a seguir explorando y experimentando con este fascinante mundo por ti mismo. Es el momento de que comiences a practicar para convertirte en un verdadero experto en optimización Bayesiana. El empujón que necesitas es escribir un poco de código y ver cómo el ordenador hace el trabajo de optimización Bayesiana que le mandes. ¡Vamos a ello!
Antes de programar, es crucial pensar bien las cosas. ¡No olvides esto nunca! Antes de escribir una línea de código, es mejor practicar un poco con papel y bolígrafo. Cuando planteamos un problema de ajuste de hiperparámetros con optimización Bayesiana, siempre debemos tener en mente tres componentes clave:
- Definir el espacio de hiperparámetros: Es como la receta de un chef, donde los ingredientes son el número de variables que queremos optimizar y sus límites. Por ejemplo, podrías optimizar la tasa de aprendizaje de una red neuronal, que puede ir desde 0.0001 hasta 0.1, y el número de neuronas, de 20 a 200. ¡Estos rangos definen tu espacio de hiperparámetros!
- Definir la función objetivo: Esta es la función que queremos optimizar. Si buscamos optimizar la precisión de un modelo de aprendizaje automático, necesitamos un estimador robusto que cambie lo mínimo posible para la misma configuración. Recuerda que el error es una variable aleatoria con sesgo y varianza. Un buen estimador podría ser un k-fold cross-validation con 10 folds, por ejemplo.
- Escribir el código: Finalmente, necesitamos codificar todo esto usando un lenguaje de programación y una biblioteca de optimización Bayesiana. ¡Hay muchas opciones disponibles! Ahora te toca a ti elegir qué biblioteca usar y explorar sus tutoriales en internet. Algunas de las mejores opciones disponibles de software libre que puedes encontrar disponibles son
- BOTorch de Meta: Es la más potente pero también la más compleja, ideal para quienes buscan profundizar en los detalles de la optimización Bayesiana.
- Skopt, Dragonfly o BayesianOptimization: Son mucho más sencillas y perfectas para una demostración rápida que necesites y para empezar a perder el miedo con el código. Internet tiene muchos ejemplos sencillos que usan estas librerías.
- mlrMBO: Una excelente alternativa si prefieres trabajar con R y Python no te gusta nada.
- SMAC3: Especializada en optimización bayesiana jerárquica que en vez de usar procesos Gaussianos usa la distribución empírica de un random forest como modelo probabilístico surrogado. Útil para problemas donde no solo estoy interesado en el mejor conjunto de hiperparámetros sino en la combinación entre mejor conjunto de hiperparámetros y mejor modelo posible.
¡Y eso es todo! Espero que esta serie de artículos te haya servido como una buena introducción a la optimización Bayesiana. ¡Cuídate y no dejes de aprender!