Méthode de l'entropie croisée

Un article de Wikipédia, l'encyclopédie libre.

La méthode de l'entropie-croisée (CE) attribuée à Reuven Rubinstein est une méthode générale d'optimisation de type Monte-Carlo, combinatoire ou continue, et d'échantillonnage préférentiel. La méthode a été conçue à l'origine pour la simulation d'événements rares, où des densités de probabilité très faibles doivent être estimées correctement, par exemple dans l'analyse de la sécurité des réseaux, les modèles de file d'attente, ou l'analyse des performances des systèmes de télécommunication. La méthode CE peut être appliquée à tout problème d'optimisation combinatoire où les observations sont bruitées comme le problème du voyageur de commerce, l'optimisation quadratique, le problème d'alignement de séquences d'ADN, le problème de la coupure maximale et les problèmes d'allocation de mémoire, tout comme des problèmes d'optimisation continue avec de nombreux extrema locaux.

La méthode CE se décompose en deux phases :

  1. Créer aléatoirement un échantillon de données (trajectoires, vecteurs, etc.) selon un mécanisme spécifique.
  2. Mettre à jour les paramètres du mécanisme de création aléatoire à partir de l'échantillon de données pour produire un meilleur échantillon à l'itération suivante. Cette étape implique de minimiser l'entropie croisée ou la divergence de Kullback-Leibler.

Estimation via l'échantillonnage préférentiel[modifier | modifier le code]

Considérons le problème général d'estimation de la quantité , où est une fonction objectif et est une densité de probabilité paramétrique. En utilisant l'échantillonnage préférentiel cette quantité peut être estimée par , où est un échantillon de variables aléatoires de densité . Pour positif, l'optimum théorique de la densité de probabilité des variables aléatoires est donné par . Cependant est un paramètre inconnu. La méthode CE propose d'approcher la densité optimale en sélectionnant les éléments de l'échantillon qui sont les plus proches (au sens de Kullback-Leibler) de la densité optimale .

Algorithme CE générique[modifier | modifier le code]

  1. Choisir un vecteur des paramètres initial ; poser .
  2. Créer un échantillon de variables aléatoires selon la densité
  3. Calculer , où
  4. Si l'algorithme a convergé alors stopper; sinon, incrémenter de 1 recommencer à l'étape 2.

Dans certains cas, la solution de l'étape 3 peut être trouvée analytiquement. Les situations où cela se produit sont

  • Quand fait partie des fonctions de la famille exponentielle naturelle
  • Quand est discrète avec un support fini
  • Quand et , alors correspond à l'estimateur du maximum de vraisemblance basé sur les .

Optimisation continue—exemple[modifier | modifier le code]

Le même algorithme CE peut être utilisé pour l'optimisation et l'estimation. Soit le problème consistant à maximiser une fonction , par exemple, . Pour utiliser l'entropie croisée on doit d'abord considérer le problème stochastique associé de l'estimation de pour un niveau donné , et une famille de distributions de probabilité paramètriques , par exemple la loi normale à une dimension, dont les paramètres sont la moyenne et la variance (tel que ici). Ainsi, pour un donné, l'objectif est de déterminer tel que la quantité soit minimisée. Ce qui est fait en utilisant la version échantillonnée (contrepartie stochastique) du problème de la minimisation de la divergence KL, comme précédemment dans l'étape 3. Il se trouve que pour ce choix de distribution les paramètres qui minimisent la version stochastique du problème sont la moyenne et la variance empirique de l'échantillon d'élite qui est composé des tirages dont la valeur de la fonction score est . Le plus mauvais des éléments de l'échantillon d'élite sert de paramètre de niveau à l'itération suivante. Cela donne l'algorithme stochastique suivant pour ce problème.

Pseudo-code[modifier | modifier le code]

1. mu:=-6; sigma2:=100; t:=0; maxits=100;    // Initialisation des paramètres
2. N:=100; Ne:=10;                           //
3. while t < maxits and sigma2 > epsilon     // Tant que l'on n'a pas convergé et que maxits n'est pas dépassé
4.  X = SampleGaussian(mu, sigma2,N);         // Crée N échantillon à partir de la distribution
5.  S = exp(-(X-2)^2) + 0.8 exp(-(X+2)^2);   // Calcule le score de chaque échantillon
6.  X = sort(X, S);                           // Classe X selon le score (de façon descendante)
7.  mu = mean(X(1:Ne)); sigma2=var(X(1:Ne)); // Mise à jour des paramètres de la distribution
8.  t = t+1;                                 // Incrémentation du nombre d'itérations
9. return mu                                 // Renvoie la moyenne des derniers échantillons comme la solution

Méthodes liées[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Cross-entropy method » (voir la liste des auteurs).
  • De Boer, P-T., Kroese, D.P, Mannor, S. and Rubinstein, R.Y. (2005). A Tutorial on the Cross-Entropy Method. Annals of Operations Research, 134 (1), 19—67.
  • Rubinstein, R.Y. (1997). Optimization of Computer simulation Models with Rare Events, European Journal of Operations Research, 99, 89-112.
  • Rubinstein, R.Y., Kroese, D.P. (2004). The Cross-Entropy Method: A Unified Approach to Combinatorial Optimization, Monte-Carlo Simulation, and Machine Learning, Springer-Verlag, New York.

Liens externes[modifier | modifier le code]