Sujets de mini-projets pour le cours d’apprentissage par renforcement Rémi Munos et Pierre Arnaud Coquelin 23 novembre 2006 Résumé Ces trois sujets proposent trois alternatives pour tenter d’enrayer la (fameuse) malédiction de la dimension, habituelle en programmation dynamique (complexité de résolution exponentielle avec la dimension de l’espace d’état, voir [1]). Le premier sujet (Direct Policy Improvement) est une méthode d’itérations sur les politiques où l’on évite d’approcher la fonction valeur. L’idée étant que pour certains problèmes, la fonction valeur est difficile à approcher alors que la politique peut être simple à représenter. Dans ces cas, une recherche directe de politique, qui ne considère pas la fonction valeur peut être très efficace. L’application traitée concerne des problèmes de robotique simulée. Le second sujet concerne une méthode qui dans certains cas où les transitions sont régulières permet de ”briser” la malédiction de la dimension, grâce à l’effet de ”randomisation” (le même effet qui permet d’intégrer numériquement des fonctions en grande dimensions par l’utilisation de méthodes de Monte-Carlo). L’application traitée concerne les problèmes de maintenance de stocks et les gestions de files d’attente (queuing systems). Le troisième sujet concerne la recherche de politique par résolution d’un problème dans l’arbre des séquences d’actions possibles, avec construction de l’arbre à chaque pas de temps. On utilisera des méthode de recherche efficace dans des arbres de grande dimension. On étudiera l’algorithme UCT qui a fourni de bonnes performances pour la programmation du jeu de go. L’application traitée concerne le contrôle d’un procédé de digestion anaérobie pour la dépollution de matière organique. Les questions proposées sont une aide pour vous aider à réfléchir et à bien traiter le problème considéré. Cependant il s’agit d’un mini-projet où vous avez une certaine liberté sur le travail demandé. Vous pouvez traiter une autre application que celle proposée si vous le jugez utile, mais il faudra bien sûr justifier vos choix. Vous serez évalués sur la qualité de votre travail, votre réflexion, le rapport produit (à rendre avant le mardi 9 Janvier 2007, par email, à [email protected] et [email protected]), ainsi que sur la soutenance qui aura lieu le jeudi 11 janvier 2007. Si vous souhaitez davantage d’informations, n’hésitez pas à nous contacter... Bon courage ! 1 1 Sujet 1 : Direct Policy Improvement L’idée est d’implémenter une méthode directe d’itérations sur les politiques, sans avoir besoin d’approcher la fonction valeur associée aux politiques successives. En résumé : On part d’une politique initiale π0 . A l’étape k, on dispose d’une politique courante πk . Pour construire une nouvelle politique πk+1 , on effectue les étapes suivantes : 1. On tire des états (xn )1≤n≤N (par exemple uniformément aléatoirement sur le domaine) 2. A partir de chaque état (xn ), on choisit successivement toutes les actions a ∈ A disponibles 3. Pour chaque état (xn ) action a, on évalue par Monte-Carlo la fonction Q-valeur Qπk (xn , a) en lançant plusieurs trajectoires en suivant la politique courante πk , et en formulant la moyenne empirique, ce qui retourne l’estimation Q̂πk (xn , a). 4. On note an l’action qui maximise les estimés Q̂πk (xn , a). 5. Les données {(xn , an )} servent de données d’apprentissage pour un algorithme de classification (utiliser votre classifieur favori, SVM, plus-proches voisins, réseau de neurones, ...) qui retourne ainsi une fonction qui a chaque état associe une action, ce qui défini ainsi la nouvelle politique πk+1 . Cet algorithme est défini dans l’article [5]. Questions proposées : 1. Lire l’article [5]. 2. Choisir votre classifieur préféré et implémenter l’algorithme sur le pendule inversé décrit dans l’article. Représenter les politiques successives et des trajectoires suivant ces politiques. 3. Quelles sont les limitations de cette approche, en termes de complexité de calcul (en fonction du nombre d’actions, du nombre d’états, ...), de capacité d’analyse de la méthode, et autres aspects ? 4. Entre chaque itération, a t-on la propriété que la performance des politiques successives s’améliore (ie. V πk+1 ≥ V πk ), comme cela est le cas dans l’algorithme d’itérations sur les valeurs habituel ? Analysez les termes d’erreur (dus au nombre fini de points utilisés, au nombre de simulations fini, à la classification imparfaite, ...) 5. Dans quels cas pensez-vous que cette méthode peut fonctionner efficacement ? 6. On veut faire une version temps continu de cet algorithme. Considérons le cas d’une dynamique déterministe, qui s’écrit alors dx(t) = f (x(t), a(t)) dt où l’action suit la politique courante, ie. : a(t) = πk (x(t)). L’intérêt est de ne vouloir lancer qu’une trajectoire à partir de chaque point xn , au lieu d’en lancer une par action. Ainsi, on remplace les étapes 3 et 4 de l’algorithme précédent par : on lance, à partir de chaque xn une trajectoire suivant la politique courante πk . Le long de cette trajectoire, 2 on calcule le gradient de la fonction valeur par rapport à l’état initial, ie. pour un problème à horizon temporel infini et à récompense actualisée, Z ∞ πk γ t r′ (x(t))∇x(t)dt ∇V (xn ) = 0 où (x(t))t≥0 est la trajectoire issue de l’état xn à l’instant t, r′ est la dérivée de la fonction récompense r, et ∇x(t) est la sensibilité de l’état x(t) par rapport à la condition initiale (il s’agit donc d’une matrice carrée de taille la dimension de l’espace d’états), et qui suit la dynamique suivante : ∇x(t) = ∇f (x(t), a(t))∇x(t) dt avec la condition initiale ∇x(t) = 0 (donc ∇x(t) peut être calculé le long de la trajectoire). Une fois ce gradient ∇V πk (xn ) calculé, on définit l’action an comme étant celle qui maximise le produit scalaire : ak := arg max ∇V πk (xn ) · f (xn , a) a∈A 7. 8. 9. 10. 2 Justifiez le choix de cette action maximisante. Implémenter ce nouvel algorithme sur le problème de pendule inversé précédent (éventuellement en faisant varier le pas de discrétisation temporelle). Implémenter cet algorithme sur un problème de contrôle de votre choix de dimension au moins égale à 4 (par exemple l’acrobot, le double pendule inversé, la bicyclette, ou tout autre problème de votre choix, dont vous trouverez les dynamiques sur internet. Voir par exemple mon site pour les dynamiques de l’acrobot). Quelle répartition de points (xn )1≤n≤N serait la plus pertinente à utiliser (pour un budget de N particules disponibles). Discussion et implémentation souhaitées. Conclusions ? Sujet 2 : Randomization to break the curse of dimensionality L’idée est d’utiliser des méthodes de Monte-Carlo combinées à la programmation dynamique pour traiter des problèmes de grande dimension. Cette idée est décrite dans l’article [7]. Cette méthodologie s’applique à des problèmes en espace continu et temps discret. L’idée est d’approcher le processus de décision markovien (PDM) initial qui est défini sur un espace continu en un PDM défini sur un nombre fini d’états (N états), de le résoudre, et de considérer que la fonction valeur (notée VN de ce PDM fini est proche de la fonction valeur V du PDM initial. On ”brise” la malédiction de la dimension au sens où l’erreur √ d’approximation ||VN − V || est une fonction en O(1/ N ) où n’apparaı̂t pas explicitement la dimension d de l’espace d’état (contrairement aux méthodes de discrétisation sur grilles, qui mènent à une erreur en O(1/N 1/d ). L’algorithme est défini de la manière suivante : 3 1. On tire des états (xn )1≤n≤N (par exemple uniformément aléatoirement sur le domaine) 2. On construit un PDM sur cet ensemble d’états, où les probas pN de transition d’état xi à état xj sont construite à partir des probas p du PDM continu en les renormalisant, ie : p(xj |xi , a) pN (xj |xi , a) := PN n=1 p(xn |xi , a) 3. On résout ce PDM (par n’importe quelle algorithme de programmation dynamique), dont la fonction valeur VN est définie en tout état xn . On souhaite que la fonction VN approche la fonction valeur V du problème initial aux points xn et on étudie l’erreur en fonction de N , le nombre de points utilisés. Questions proposées : 1. Lire l’article [7]. 2. Dans quels cas pensez-vous que cette méthode fonctionne bien ? Dans quels cas ne va t-elle pas fonctionner ? Pensez-vous que la malédiction de la dimension est véritablement ”brisée” ? 3. Quels sont les limitations de cette approche ? En terme de complexité de calcul (en fonction du nombre d’actions, du nombre d’états, ...), de capacité d’analyse de la méthode ? 4. Implémenter l’algorithme sur le problème de maintenance d’un stock décrit dans le cours (voir chapitre 2 sur la programmation dynamique). On est en dimension 1, la variable xt représente le stock actuel. La décision consiste à commander une quantité supplémentaire at qui vaut un nombre fini de valeurs (on pourra commencer par 2 valeurs : 0 ou une valeur définie). La demande est une variable aléatoire (par exemple modélisée par une variable aléatoire exponentielle ou gaussienne tronquée ou une loi de poisson). Vous choisirez des fonctions coût (commande et maintenance) et revenu à votre convenance pour que le problème ait un sens physique. Afficher les fonctions valeurs obtenues VN et V ainsi que les politiques. 5. Est-ce que la distribution à partir de laquelle on tire les points initiaux est importante ? A votre avis, quelle serait la ”meilleure” distribution (ie. la distribution telle qu’en tirant un nombre donné N de points, en utilisant cette méthode, on approche au mieux la fonction valeur V désirée) ? 6. On veut appliquer cette méthode à des problèmes de grande dimension (pour lesquels on espère effectivement voir l’intérêt de cette approche). On considère la classe (très générale) des files d’attente avec plusieurs buffers. Le problème précédent de maintenance de stock est en faite une file d’attente avec un seul buffer. Une file d’attente avec plusieurs buffers (ou réseau de files d’attente) est constituée de plusieurs files liées entre elles. Un job dans une file peut être évacué vers une autre file a laquelle elle est liée. Evacuer un job et stocker des jobs ont des coûts. Certaine files possèdent des entrées sur lesquelles des jobs arrivent en suivant un loi de probabilié. Les actions consistent à faire passer un job d’une file vers une autre. Ce type de modélisation est très utile, penser par example à la gestion optimale d’une chaine de 4 production. L’utilisation de méthodes de programation dynamique pour l’optimisation dans les réseaux de files d’attente à été étudié dans [3]. Votre travail consiste à utiliser la file en dimension 4 ou celle en dimension 8 de [3] et chercher à faire mieux que les résultats obtenu dans [3]. 7. Conclusions ? 3 Sujet 3 : contrôle optimal par recherche arborescente et algorithme UCT L’idée de ce projet consiste à directement résoudre le problème de contrôle optimal en effectuant une recherche arborescente dans un arbre dont la racine correspond à l’état courant, où les noeuds correspondent aux états accessibles et les connexions représentent les différentes actions possibles. Pour simplifier, on se place dans un cadre déterministe, avec un critère à horizon temporel infini avec récompense actualisée (par γ). Le problème de contrôle optimal consiste à déterminer, en chaque instant t une action at qui maximise la somme des récompenses à venir. La méthode de recherche arborescente est décrite de manière suivante : – Notons x l’état du système à l’instant courant. L’objectif est de retourner une action a ∈ A. Pour cela, on construit un arbre dont la racine est x. A cette racine est associée les noeuds qui représentent les états successeurs (notés f (x, a)) du choix d’une action a en x. Il y a autant de successeurs que d’actions possibles (ce nombre d’actions est noté M ). En chacun de ces états successeurs, à nouveau, on associe les successeurs des {f (x, a)} lorsque l’on choisit une seconde action b (que l’on peut noter {f (f (x, a), b)}a,b∈A). Il y a M 2 tels successeurs à l’étape 2. On recommence jusqu’à une profondeur p. Ainsi, cet arbre dispose de M p feuilles. La récompense correspondant à une branche est simplement la somme des récompenses actualisées correspondant à chacune des transitions. – On calcule la branche (par un algorithme quelconque de recherche arborescente) dont la récompense est maximale, qui définit ainsi une séquence d’actions, et on retourne la première action de cette séquence (l’action choisie à la racine de l’arbre). Cet algorithme retourne une action qui n’est pas nécessairement optimale, mais que l’on souhaite proche de l’optimum, au sens où si l’on utilise cet algorithme à chaque itération (on construit ainsi un nouvel arbre à chaque itération, à partir de l’état courant), la performance de cet algorithme doit être proche de la fonction valeur optimale. On veut analyser cet algorithme, l’implémenter dans une application pour le contrôle d’un procédé chimique de digestion anaérobie, et étudier un algorithme de recherche arborescente particulièrement intéressant, l’algorithme UCT, qui fait l’objet de nombreux travaux actuellement. L’algorithme UCT (pour Upper Confidence bounds in Trees) est une extension de l’algorithme UCB (Upper Confidence Bounds, voir [6]) qui a été développé récemment [4] pour la recherche de solution dans des arbres de grande dimension. Pour motivation, UCT a été appliqué à la programmation du jeu de GO (par Yizao Wang et Sylvain Gelly), jeu d’une complexité extrême, et a mené au programme MoGo, meilleur programme mondial actuel sur jeux de tailles 9x9 et 13x13. Voir : 5 http ://cgos.boardspace.net/9x9.html et http ://www.lri.fr/∼gelly/MoGo french.htm UCT fait une recherche arborescente selon une méthode de type MonteCarlo, où les branches qui paraissent les meilleures sont explorées prioritairement. Il utilise l’algorithme UCB qui met en oeuvre une très bonne stratégie d’exploration (résolvant de manière intelligente le fameux dilemme exploration / exploitation), en privilégiant les actions dont la borne supérieure (selon une analyse statistique) est la plus grande (il s’agit de la stratégie dite ”optimiste dans l’incertain”). Proposition de questions 1. Analyser les performances de la politique construite à partir de la méthode de recherche arborescent précédemment décrite, en fonction de la profondeur de l’arbre p et du coefficient d’actualisation γ. Etudier sa complexité en fonction du nombre d’actions M , du nombre d’états, de la dimension de l’espace d’état. 2. Dans quels cas, cette méthode peut-elle être intéressante, comparée à des méthodes de type programmation dynamique avec algorithmes de résolution de type itérations sur les valeurs, itérations sur les politiques ? 3. Comment modifier cette méthode pour qu’elle s’applique à des dynamiques stochastiques ? En quoi cela modifie t-il les réponses aux questions précédentes ? En quoi cette variante diffère t-elle d’une méthode d’itérations sur les politiques avec évaluation par Monte-Carlo ? 4. Implémentation à un problème simplifié (dimension 2) de contrôle d’un procédé de digestion anaérobie. On recherchera un controleur qui maximise la somme actualisée des quantité de bactéries Xt présente dans le modèle d’évolution suivant : St+1 Xt+1 Ot+1 c1 c2 S t + c1 = −αat Xt + k2 Xt c2 St + Sc3t c1 = k3 Xt . c2 St + Sc3t = at (Sin − St ) + k1 Xt c3 St (1) (2) (3) α = 0.5, k1 = 1, k2 = 2, k3 = 2 sont les coefficient stocheométriques de la réaction, et c1 = 1, c2 = 3, c3 = 8 sont les constantes d’inhibition qui controlent la vitesse de la réaction, Sin = 0.5 est la concentration du liquide entrant en produit consommable par les bactéries. X reprsente des bactéries, S représente le substrat consomable par les bactéries et O représente le produit final de la récation, at ∈ [0, ∞] est la quantité controlée et représente un débit d’alimentation en Sin . Représenter des trajectoires qui suivent la politique obtenue, ainsi que les performances résultantes. 5. On cherche à optimiser la recherche arborescente (la partie la plus lourde numériquement de l’algorithme précédemment défini) en utilisant l’algorithme UCT. Lire l’article [4] et implémenter cet algorithme pour le problème précédent. 6. Traitez le problème plus complexe (en dimension 4) de digesteur anaérobie dont les dynamiques sont expliquées en pages 3 à 6 de [2]. La quantité à optimiser est la quantité de biogaz CH4 produite. 6 7. Conclusions ? Références [1] R. Bellman. Dynamic Programming. Princeton Univ. Press, 1957. [2] O. Bernard, Z. Hadj-Sadok, D. Dochain, A. Genovesi, and J.-P. Steyer. Dynamical model development and parameter identification for an anaerobic wastewater treatment process. Biotech.Bioeng., vol. 75 :424–438, 2001. [3] B. Van Roy D.P. De Farias. The linear programming approach to approximate dynamic programing. Operations Research, 2002. [4] Cs. Szepesvari L. Kocsis. Bandit based monte-carlo planning. European Conference on Machine Learning, pages 282–293, 2006. [5] Michail Lagoudakis and Ronald Parr. Reinforcement learning as classification : Leveraging modern classifiers. International Conference on Machine Learning, 2003. [6] P. Fischer P. Auer, N. Cesa-Bianchi. Finite-time analysis of the multiarmed bandit problem. Machine Learning Journal, 47(2-3) :235–256, 2002. [7] John Rust. Using Randomization to Break the Curse of Dimensionality. Computational Economics. 1997. 7