Retour à l'accueil

CMA-ES dans Optuna : optimisation des hyperparamètres sans gradients

Décomposition technique détaillée de l'algorithme CMA-ES dans la bibliothèque Optuna. Explication de l'initialisation, de l'échantillonnage, de l'adaptation de la matrice de covariance et de l'étape. Recommandations pratiques pour l'utilisation dans les tâches d'apprentissage automatique.

Comment CMA-ES trouve les hyperparamètres optimaux sans gradients
Advertisement 728x90

# CMA-ES dans Optuna : Décomposition étape par étape de la stratégie évolutionnaire pour l'optimisation des hyperparamètres

L'algorithme CMA-ES est une méthode d'optimisation sans dérivées qui résout efficacement les tâches d'accord d'hyperparamètres dans des espaces de recherche complexes, multimodaux ou bruités. Contrairement aux approches basées sur les gradients, il ne nécessite pas que la fonction objectif soit différentiable et est robuste face aux minima locaux. Dans cet article, nous décomposons son fonctionnement en utilisant la fonction Rosenbrock en 2D comme exemple pour montrer clairement comment l'algorithme adapte sa taille de pas et sa direction de recherche.

Initialisation : Conditions initiales de recherche

Avant que CMA-ES ne commence, il faut définir trois paramètres clés :

  • Moyenne initiale (m) — coordonnées du point de départ dans l'espace de recherche. Dans notre cas — (0, -1).
  • Matrice de covariance (C) — définit la forme et l'orientation de la région de recherche. Initialement, c'est la matrice identité, créant une symétrie circulaire autour du centre.
  • Pas global (σ) — échelle de recherche. Fixé à 0,8, correspondant à un rayon d'ellipse de confiance d'environ 1,96 pour une probabilité de 95 % que les points tombent à l'intérieur.

Ces paramètres forment la distribution normale initiale à partir de laquelle les candidats sont générés. Important : même si le point de départ est éloigné de l'optimum, l'algorithme peut s'adapter grâce à ses mécanismes évolutionnaires.

Google AdInline article slot

Génération et évaluation des candidats

À chaque itération, λ candidats (15 dans l'exemple) sont générés à l'aide de la formule :

x_k ~ m + σ · N(0, C)

N(0, C) est une distribution normale multivariée de moyenne nulle et de matrice de covariance C. Chaque candidat est un ensemble d'hyperparamètres fournis au modèle pour évaluer la fonction objectif (par exemple, la perte). Après calcul des valeurs de la fonction, les μ meilleurs candidats (7 dans l'exemple) sont sélectionnés pour former la base de la mise à jour de la distribution.

Mise à jour du centre de recherche par moyenne pondérée

Le centre de la nouvelle distribution est calculé comme la somme pondérée des meilleurs points :

Google AdInline article slot
m_new = Σ w_i · x_i

Les poids w_i sont calculés sur une échelle logarithmique :

w_i = [ln((λ+1)/2) - ln(i)] / Σ[ln((λ+1)/2) - ln(j)]

Cela garantit une contribution exponentiellement plus importante des meilleurs candidats. Par exemple, le premier point obtient un poids plusieurs fois supérieur au septième. Cette approche imite la « sélection naturelle » : les solutions réussies ont une influence plus forte sur la génération suivante.

Adaptation de la forme et de l'échelle de la recherche

L'avantage clé de CMA-ES est son adaptation dynamique à la topologie de la fonction objectif. Cela est réalisé par deux mécanismes :

Google AdInline article slot

Mise à jour de la matrice de covariance

Formule de mise à jour :

C_new = (1 - c_μ) · C_old + c_μ · C_μ

C_μ est la matrice de covariance construite à partir des offsets normalisés des meilleurs points par rapport au centre ancien. Le paramètre c_μ (taux d'apprentissage, par ex. 0,9) contrôle l'équilibre entre les données historiques et nouvelles. Si les meilleurs points s'alignent le long d'une direction spécifique (par ex. le long de la « vallée » de la fonction Rosenbrock), la matrice C déforme la région de recherche en une ellipse allongée dans cette direction — accélérant la convergence.

Ajustement du pas global (σ)

Le pas est mis à jour à l'aide de la formule :

σ_new = σ_old · exp( (c_σ / d_σ) · (||p_σ|| / E[||N(0,I)||] - 1) )

Ici :

  • p_σ — chemin d'évolution qui accumule la direction du mouvement du centre sur plusieurs itérations.
  • E[||N(0,I)||] — longueur de référence d'un pas aléatoire (≈√n pour un espace n-dimensionnel).
  • c_σ, d_σ — taux d'apprentissage et paramètres d'amortissement.

Si la norme ||p_σ|| dépasse la référence, cela indique un mouvement cohérent dans une direction — le pas augmente. S'il est inférieur, le mouvement est erratique, et le pas diminue pour affiner la position.

Avantages et limites de CMA-ES en pratique ML

CMA-ES est particulièrement utile dans ces scénarios :

  • Fonctions objectif non différentiables, bruitées ou discontinues.
  • Espaces de recherche avec de nombreux minima locaux.
  • Hyperparamètres à sensibilité variable (par ex. learning_rate vs. batch_size).

Cependant, il présente des limites :

  • Complexité computationnelle croissante avec la dimensionnalité (O(n²) en raison du stockage de C).
  • Nécessite plus d'itérations que TPE sur des fonctions lisses.
  • Inefficace avec de très petits budgets d'évaluation (< 20).

Recommandations pour l'utilisation dans Optuna :

  • Utiliser CmaEsSampler pour les tâches avec >5 hyperparamètres ou des paysages complexes.
  • Définir restart_strategy='ipop' pour des redémarrages automatiques avec σ augmenté en cas de blocage.
  • Pour les paramètres discrets, utiliser CategoricalCmaEsSampler.
  • Toujours comparer avec TPE et RandomSearch sur un jeu de données de validation.

Points clés

  • CMA-ES n'utilise pas de gradients — fonctionne avec n'importe quelle boîte noire.
  • L'adaptation de la matrice de covariance permet des progrès efficaces le long des « vallées » de la fonction objectif.
  • La taille de pas dynamique évite la convergence prématurée et accélère l'affinage final.
  • Brille avec des nombres d'itérations moyens à élevés (>50) et des espaces de grande dimension.
  • Dans Optuna, il suffit de changer le sampler — aucune modification du code du modèle nécessaire.

L'algorithme est particulièrement précieux pour les tâches où les méthodes standard (par ex. recherche par grille ou optimisation bayésienne) échouent : métriques instables, interactions de paramètres complexes, absence de régularité. Sa nature évolutionnaire en fait un outil robuste et polyvalent pour les chercheurs affrontant des problèmes ML réels et « désordonnés ».

— Editorial Team

Advertisement 728x90

Lire ensuite