# CMA-ES en Optuna: Desglose paso a paso de la estrategia evolutiva para la optimización de hiperparámetros
El algoritmo CMA-ES es un método de optimización sin derivadas que resuelve de manera efectiva tareas de ajuste de hiperparámetros en espacios de búsqueda complejos, multimodales o ruidosos. A diferencia de los enfoques basados en gradientes, no requiere que la función objetivo sea diferenciable y es robusto frente a mínimos locales. En este artículo, desglosaremos cómo funciona utilizando la función Rosenbrock en 2D como ejemplo para mostrar claramente cómo el algoritmo adapta su tamaño de paso y dirección de búsqueda.
Inicialización: Condiciones iniciales de búsqueda
Antes de que comience CMA-ES, debes establecer tres parámetros clave:
- Media inicial (m) — coordenadas del punto de partida en el espacio de búsqueda. En nuestro caso — (0, -1).
- Matriz de covarianza (C) — define la forma y orientación de la región de búsqueda. Inicialmente, es la matriz identidad, creando simetría circular alrededor del centro.
- Paso global (σ) — escala de búsqueda. Establecido en 0.8, correspondiente a un radio de elipse de confianza de ≈1.96 para una probabilidad del 95% de que los puntos caigan dentro.
Estos parámetros forman la distribución normal inicial a partir de la cual se generan los candidatos. Importante: incluso si el punto de partida está lejos del óptimo, el algoritmo puede adaptarse gracias a sus mecanismos evolutivos.
Generación y evaluación de candidatos
En cada iteración, λ candidatos (15 en el ejemplo) se generan utilizando la fórmula:
x_k ~ m + σ · N(0, C)
donde N(0, C) es una distribución normal multivariante con media cero y matriz de covarianza C. Cada candidato es un conjunto de hiperparámetros que se introducen en el modelo para evaluar la función objetivo (p. ej., pérdida). Después de calcular los valores de la función, se seleccionan los μ mejores candidatos (7 en el ejemplo) para formar la base de la actualización de la distribución.
Actualización del centro de búsqueda mediante promedio ponderado
El centro de la nueva distribución se calcula como la suma ponderada de los mejores puntos:
m_new = Σ w_i · x_i
Los pesos w_i se calculan en una escala logarítmica:
w_i = [ln((λ+1)/2) - ln(i)] / Σ[ln((λ+1)/2) - ln(j)]
Esto asegura una contribución exponencialmente mayor de los mejores candidatos. Por ejemplo, el primer punto obtiene un peso varias veces mayor que el séptimo. Este enfoque imita la "selección natural": las soluciones exitosas tienen una influencia más fuerte en la siguiente generación.
Adaptación de la forma y escala de la búsqueda
La principal ventaja de CMA-ES es su adaptación dinámica a la topología de la función objetivo. Esto se logra mediante dos mecanismos:
Actualización de la matriz de covarianza
Fórmula de actualización:
C_new = (1 - c_μ) · C_old + c_μ · C_μ
donde C_μ es la matriz de covarianza construida a partir de los desplazamientos normalizados de los mejores puntos respecto al centro anterior. El parámetro c_μ (tasa de aprendizaje, p. ej., 0.9) controla el equilibrio entre datos históricos y nuevos. Si los mejores puntos se alinean a lo largo de una dirección específica (p. ej., a lo largo del "valle" de la función Rosenbrock), la matriz C deforma la región de búsqueda en una elipse elongada en esa dirección — acelerando la convergencia.
Ajuste del paso global (σ)
El paso se actualiza utilizando la fórmula:
σ_new = σ_old · exp( (c_σ / d_σ) · (||p_σ|| / E[||N(0,I)||] - 1) )
Aquí:
p_σ— trayectoria de evolución que acumula la dirección del movimiento del centro a lo largo de varias iteraciones.E[||N(0,I)||]— longitud de referencia de un paso aleatorio (≈√n para espacio n-dimensional).c_σ,d_σ— parámetros de tasa de aprendizaje y amortiguación.
Si la norma ||p_σ|| excede la referencia, indica movimiento consistente en una dirección — el paso aumenta. Si es menor, el movimiento es errático, y el paso disminuye para refinar la posición.
Ventajas y limitaciones de CMA-ES en la práctica de ML
CMA-ES es particularmente útil en estos escenarios:
- Funciones objetivo no diferenciables, ruidosas o discontinuas.
- Espacios de búsqueda con muchos mínimos locales.
- Hiperparámetros con sensibilidad variable (p. ej., learning_rate vs. batch_size).
Sin embargo, tiene limitaciones:
- La complejidad computacional crece con la dimensionalidad (O(n²) debido al almacenamiento de C).
- Requiere más iteraciones que TPE en funciones suaves.
- Ineficaz con presupuestos de evaluación muy pequeños (< 20).
Recomendaciones para su uso en Optuna:
- Usa
CmaEsSamplerpara tareas con >5 hiperparámetros o paisajes complejos. - Establece
restart_strategy='ipop'para reinicios automáticos con σ aumentado cuando se atasque. - Para parámetros discretos, usa
CategoricalCmaEsSampler. - Siempre compara con TPE y RandomSearch en un conjunto de datos de validación.
Puntos clave
- CMA-ES no usa gradientes — funciona con cualquier caja negra.
- La adaptación de la matriz de covarianza permite un progreso eficiente a lo largo de los "valles" en la función objetivo.
- El tamaño de paso dinámico previene la convergencia prematura y acelera el refinamiento final.
- Brilla con conteos de iteraciones medianos a grandes (>50) y espacios de alta dimensión.
- En Optuna, se habilita simplemente cambiando el muestreador — no se necesitan cambios en el código del modelo.
El algoritmo es especialmente valioso para tareas donde los métodos estándar (p. ej., grid search o optimización bayesiana) fallan: métricas inestables, interacciones complejas de parámetros, falta de suavidad. Su naturaleza evolutiva lo convierte en una herramienta robusta y versátil para investigadores que abordan problemas de ML reales y "desordenados".
— Editorial Team
Aún no hay comentarios.