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.
- Comment tirer avantage de ces symétries ?
- Qu'est-ce que cela amélirorera-t-il ?
- Si l'opposant ne tient pas compte des symétries, faut il utiliser
la symétrie ?
- 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
- 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.
- 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
- Lisez "A brief explanation"
- 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
- Explorez les différentes possibilités de ce jeux.
- Trouvez un protocole d'expérimentation permettant de montrer qu'il
apprend.
- 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
- Jouez contre la machine
- Faites la apprendre
- Modifiez les paramètres d'apprentissage. En particulier alpha et
beta.
- Examinez le source
pour comprendre où se faire l'apprentissage.
- Modifiez le programme pour améliorer l'affichage, chargez des paramètres,
ajoutez un bouton "réinitialise" si vous connaissez java.
4-Bibliographie
-
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
- 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