Cours d'Apprentissage Automatique                                ENSTA INT-23

 

A. Cornuéjols & V. Corruble 2001

 


TD/TP : Apprentissage par Renforcement

 

1- Exercice sur papier

Beaucoup de positions ont l'air symétrique dans le TicTacToe.
  1. Comment tirer avantage de ces symétries ?
  2. Qu'est-ce que cela amélirorera-t-il ?
  3. Si l'opposant ne tient pas compte des symétries, faut il utiliser la symétrie ?
  4. Si on utilise la symétrie et que l'opposant ne l'utilise pas, que peut il se passer ?

2- Exercices sur machine

A- Apprentissage par renforcement pour des algorithmes de jeu

Un programme de jeu de Tic-Tac-Toe avec apprentissage par renforcement est disponible en lisp (RL-game.lisp).
Chargez-le dans votre directory.
Dans une fenêtre ouverte à cet effet lancez Lisp par la commande : clisp
Chargez le fichier RL-game.lisp
Ce logiciel permet de faire des expériences sur l'apprentissage par renforcement sur le jeu de Tic-Tac-Toe (et bientôt sur Puissance 4).
Le système joue à Tic-Tac-Toe contre un joueur aléatoire, ou un joueur humain, ou un algorithme alpha-beta et apprend en fonction de son expérience.

Tapez : (init)
Puis   : (rl-game 1)

Des explications figurent dans le fichier RL-game.lisp

  1. Etudiez l'effet de votre jeu sur la machine.
    Vous pouvez modifier le facteur alpha de prise en compte des expériences, ainsi que le facteur *epsilon* qui règle la probabilité d'exploration de la machine.

  2. Etudiez comment rendre l'apprentissage le plus rapide et le plus efficace (la commande (get-score) vous permet de mesurer la performance de la machine). Vous ferez varier en particulier le type d'adversaire, le nombre de parties et les facteurs alpha et *epsilon*.
    Quelles sont vos conclusions ? Comparez-les avec celles de vos camarades.

B- Connecter vous sur un site illustrant l'apprentissage par renforcement

Vous trouverez une applet qui permet de comparer un algorithme d'allocation classique et un algorithme adaptatif qui apprend à allouer des voies à des téléphones cellulaires.
    Le site: http://envy.cs.umass.edu/People/singh/Demo.html
  1. Lisez "A brief explanation"
  2. Essayez de modifer les parametres et de comprendre ce que permet de faire cette applet.

C- Connecter vous sur un site illustrant un apprentissage par renforcement sur un jeu

Le site http://gla.ecoledoc.lip6.fr/~poirier/rubrique/projets/l-game/l-game.html
  1. Explorez les différentes possibilités de ce jeux.
  2. Trouvez un protocole d'expérimentation permettant de montrer qu'il apprend.
  3. Analysez le source et modifier le programme pour que le parametre b d'exploration décroisse en fonction du nombre de parties jouées.

D- Aller dans le dossier RLapplet et cliquer sur le fichier TicTacToe.html

  1. Jouez contre la machine
  2. Faites la apprendre
  3. Modifiez les paramètres d'apprentissage. En particulier alpha et beta.
  4. Examinez le source pour comprendre où se faire l'apprentissage.
  5. Modifiez le programme pour améliorer l'affichage, chargez des paramètres, ajoutez un bouton "réinitialise" si vous connaissez java.

 

4-Bibliographie

  1. Sutton, R. (1998). Introduction to Reinforcement Learning.
    Ce livre est disponible en ligne. Il est assez remarquable:
    http://envy.cs.umass.edu/~rich/book/the-book.html

  2. Un repository pour tout ce qui touche le Reinforcement Learning:
    http://web.cps.msu.edu/rlr/
     

5-Software

Des standards en C++: http://envy.cs.umass.edu/~rich/RLinterface/RLI-Cplusplus.html