Page web Vincent THOMAS



Atelier journées ISN - 2016

L'apprentissage par renforcement, ça marche (un chocolat ?)


Important **Outils à installer**

Dans cet atelier, nous développerons les éléments en python 3.

Afin de pouvoir afficher le comportement appris, on affichera différentes animations. On utilisera pour cela la bibliothèque "pygame" (cf atelier sur la création de jeux et d'animation). Le code permettant de gérer l'affichage sera fourni pendant l'atelier.

Pour pouvoir aborder cet atelier, si vous souhaitez utiliser votre machine, on vous propose d'installer la distribution EduPython (disponible à l'adresse http://edupython.tuxfamily.org/) qui inclut nativement la bibliothèque pygame.

Si vous avez des idées de problemes de décision ou de controle qui vous intéressent, nous pourrons en discuter ou le résoudre lors de l'atelier (vous pouvez aussi m'envoyer un mail au préalable - vincent.thomas@loria.fr)


Contenu de l'atelier

Les transparents sont accessibles à partir de ce lien: Slides_ISN2016_ApprentissageRenforcement.

Description de l'atelier

Ce projet abordera les problèmes d'apprentissage par renforcement dans lesquels un système (typiquement un robot) est amené à prendre des décisions et à améliorer ses décisions au fur et à mesure de son expérience.
L'atelier aura pour objectif de mettre en oeuvre (en python) des algorithmes très simples mais capables de résoudre de nombreux problèmes.

On abordera dans l'ordre:
  • la modélisation d'un problème d'apprentissage par renforcement (décision, action, récompense) ;
  • l'équation de Bellman (qui exprime le lien entre l'action entreprise et la performance future) ;
  • l'application directe de l'équation de Bellman à la résolution de problèmes ;
  • la mise en oeuvre d'un algorithme simple (et accessible au niveau terminal) d'apprentissage par renforcement (Q-learning)
On pourra regarder comment appliquer ces algorithmes à différents problèmes (recherche de chemin, planification dans des environnement dynamiques, gestion du risque, ...)

** Cette page est en cours de construction **

Problèmes abordés

Une fois qu'on aura établi un cadre permettant de représenter des problèmes de décisions, on travaillera sur différents types de problèmes possibles.

Pour montrer l'aspect générique de l'approche, ces problèmes sera abordés avec la même formalisation et résolu avec les mêmes algorithmes.

L'ensemble des fichiers sources seront disponibles à la fin de l'atelier.

Recherche de chemin dans un labyrinthe

L'agent doit parcourir un labyrinthe pour atteindre son objectif le plus rapidement possible tout en évitant des obstacles.

Lorsque l'agent traverse un obstacle, il reçoit une récompense négative de -20. A chaque déplacement, il reçoit une récompense négative de -1. Enfin, lorsqu'il atteint l'objectif, il reçoit une récompense de +100.

  • Probleme Labyrinthe



  • Course sur petits carreaux "RaceTracker"

    Dans ce jeu, l'objectif est de contrôler une voiture de course dont la dynamique (vitesse et accélération) est modélisée de manière très simple: à chaque pas de temps, la voiture se déplace sur une nouvelle case correspondant au symétrique de son ancienne case par rapport à sa position actuelle. Le joueur peut accélérer ou décélérer en choisissant une case adjacente à la case d'arrivée initiale.

    Ainsi, quand un déplacement est important, le déplacement aura aussi tendance à l'être (ce que simule la symétrie). Il faut donc du temps pour accélérer ou décélérer.

  • Probleme RaceTracker

    Liens sur le jeu:


  • Orientation + probabilité de glisser

    Dans ce problème, un agent doit atteindre un but (représenté par le cercle vert). Il est caractérisé par une position et une orientation et peut à chaque instant soit changer son orientation d'un quart de tour, soit avancer devant lui.

    Lorsque l'agent avance, il a une chance sur deux d'avancer de deux cases au lieu de une.

    Lorsque l'agent tombe dans un trou, il reçoit une récompense négative et ne peut plus en sortir

  • Probleme orientation et proba de glisser



  • Maintien de niveaux dans des clepsydres.

    Dans ce problème, un agent doit se déplacer dans un environnement pour maintenir le niveau d'eau dans différentes clepsydre. Le problème est compliqué car remplir les clepsydre nécessite de se déplacer dans l'espace, car les clepsydres ont différents niveaux de remplissage possibles (ce qui se traduit par des récompenses différentes), à chaque pas de temps, il y a une certain probabilité qu'une clepsydre se vide d'un niveau.

  • Probleme clepsydre + affichage graphique (pygame)


  • Contenu de l'atelier

    Modélisation d'un problème de décision

    Dans un premier temps, on s'intéressera à modéliser les problèmes de prise de décision dans un cadre simple. Ce cadre permettra de présenter les "processus de décision markoviens" (MDP).

    On prendra le temps de programmer en python cette modélisation.

    On fournira pour chaque exemple ci-dessus, le code correspondant à leur modélisation.

    *** Code python à venir après l'atelier ***

    Équation de Bellman

    Une fois le problème défini, on s'attardera à la propriété mathématique que la solution (comportement optimal de l'agent) doit vérifier

    Cela nous conduira à l'équation d'optimalité de Bellman

    Algorithme d'itération sur la valeur

    On étudiera un algorithme basé l'application itérée de l'équation d'optimalité de Bellman. Cet algorithme nommé "iteration sur la valeur" permettra de résoudre les problèmes de décision présentés ci-dessus.

    On programmera cet algorithme en python et on l'appliquera sur un problème simple.

    Cet algorithme pourra s'appliquer à chacun des problèmes présenté ci-dessus.

    *** Code python à venir après l'atelier ***

    Algorithme Q-learning

    Enfin, nous verrons comment il est possible de résoudre des problèmes dans lequel un agent est plongé sans connaitre de modèle du monde.

    A partir d'une variation de l'algorithme précédent, nous aborderons l'algorithme du "Q-learning" qui permet à un agent de modifier progressivement son comportement en fonction de ses expériences afin de résoudre un problème donné.

    *** Code python à venir après l'atelier ***



    Fichiers utiles


    Références






        last mod. 15/01/2016 Copyright © Vincent Thomas - vthomas@loria.fr