L'apprentissage par renforcement avec le jeu Abalone ( Partie I )

    Salut, le monde actuel et les années à venir seront dominés par l'intelligence artificielle (en abrégé IA) notamment l'apprentissage automatique (Machine learning en anglais). Le Machine Learning (en abrégé ML) est un sous-domaine de l'IA qui se fonde sur des approches mathématiques et statistiques pour donner aux machines (ordinateurs) la capacité d'apprendre à partir des données et de résoudre des tâches sans être explicitement programmée.

Elle est constituée de trois type d'apprentissage à savoir l'apprentissage supervisée, l'apprentissage non-supervisée et enfin l'apprentissage par renforcement

Dans cette article, on s'intéresse à l'apprentissage par renforcement (Reinforcement Learning en abrégé RL en anglais) et nous allons voir comment cette apprentissage permet à un agent de jouer au jeu Abalone.

Voici les sections que nous allons parler:

  • Abalone (jeu)
  • Qu'est ce que l'apprentissage par renforcement ?
  • La librairie gym de Open-AI
  • La video de l'apprentissage

Abalone (jeu)

Abalone est un jeu de société faites de pions inventé en 1987 et commercialisé en 1989 par deux français Michel Lalet et Laurent Lévi. Le jeu avait réussi à remporter le Gobelet d'or au Concours de créateurs de jeux de Boulogne-Billancourt en 1988 sous le nom de Sumito. En 1989, ce jeu fut édité et fut vendu à 4.5 millions exemplaires, dans plus de 30 pays en vingt ans.
 
Le jeu Abalone se joue à deux; il est constitué d'un tablier de 61 cases hexagonales en forme de plateau. Chaque joueur  possède 14 pions en formes de boules, noires pour le joueur 1 et blanche pour le joueur 2 (voir figure).  Au depart toutes les boules sont placées dans les trous, le long de deux cotés opposés de l'hexagone. L'objectif du jeu est de faire sortir du tablier six boules adverses en les poussant, afin de les capturer.

A chaque tour, chaque joueur déplace 1, 2 ou 3 boules de sa couleur en un seul coup dans l'une des directions possibles, d'une seule case à la fois. Lorsque plus de trois boules de sa couleur sont alignées, le joueur doit choisir la partie de cet alignement qu'il va bouger. Tout les déplacement ne sont pas possibles selon la contrainte reçue. Quand les boules d'un joueur se trouvent alignées avec une ou plusieurs boules de l'adversaire, ces dernières peuvent être poussées d'une case si le nombre de boules adverses est inférieur au nombre de boules de l'attaquant (il faut au moins 2 contre 1 ou 3 contre 2) ou bien si les boules de l'adverses sont adjacentes.

Le mouvement n'est possible que vers une case vide ou si les boules adverses sont au bord du plateau. Le joueur qui réussit à pousser six boules de son adversaire  le premier hors du tablier gagne la partie. 



Qu'est ce que l'apprentissage par renforcement?

Selon Wikipédia, l'apprentissage par renforcement consiste pour un agent autonome, à apprendre les actions à prendre,  à partir d'expérience, de façon à optimiser une récompense quantitative au cours du temps. 

L'agent autonome est plongé dans un environment où il prend des décisions en fonction de son état courant. En retour, l'environnement lui procure une récompense soit positive ou soit négative. Cet agent cherche, au travers des expériences itérées, un comportement décisionnel (stratégie ou politique qui est une fonction associant l'état courant et l'action à exécuter) optimal, en ce sens qu'il maximise la somme des récompenses au cours du temps. (illustration)


Les parties de l'apprentissage par renforcement

Comme vous pouvez le constater l'apprentissage par renforcement est constituée de deux entités: l'environnement et notre agent. L'agent observe son environnement et fait une action; en retour il reçoit une récompense offerte par son environnement. 

L'objectif ici est l'apprentissage de l'agent à jouer au jeu Abalone. Comme le jeu se joue à deux, notre agent jouera contre l'ordinateur du jeu. Le meilleur endroit qu'un agent (algorithme) puisse avoir une apprentissage par renforcement efficace est la librairie python OpenAI gym.

Interface gym et l'environnement gym-abalone

Il faut savoir que gym est une bibliothèque Python open source pour développer et comparer des algorithmes d'apprentissage par renforcement en fournissant une API standard pour communiquer entre les algorithmes d'apprentissage et les environnements, ainsi qu'un ensemble standard d'environnements conformes à cette API.

Notre environnement est gym-abalone 



 Si vous observez attentivement le code, 
  • la ligne 25 est l'environnement "abalone-v0" donc le jeu. 
  • la ligne 35 est notre agent aléatoire qui donne l'action aléatoirement.
  • la ligne 38 est l'action de l'agent dans l'environnement et ce dernier retourne l'état courant (obs) de l'agent, sa recompense (reward), la fin du jeu (done) et l'information relative à l'environnement (info).
A chaque épisode, l'agent joue contre l'IA du jeu lui-même. Si l'agent gagne ou perd le jeu s'arrête et un nouveau episode commence jusqu'à la fin total des episodes.

Donc l'interface gym est constituer d'un agent, de l'observation, la récompense (reward), la fin du jeu (done) et info. 

Video de l'apprentissage

Il faut noter que: un agent intelligent est tout ce qui perçoit son environnement, entreprend des actions de manière autonome afin d'atteindre des objectifs, et peut améliorer ses performances par l'apprentissage ou peut utiliser des connaissances.

Si vous observez le code ci-dessus la ligne 5, vous allez voir que l'agent conçu est un agent aléatoire.
Comme l'agent doit être intelligent, j'utilise le réseau de neurones artificiels (neuron network en anglais)  combiné avec l'algorithme Q-learning (le deep Q-learning partie 2 de l'article prochainement). 

L'apprentissage m' a pris plusieurs heure selon la puissance de mon PC. Et voici l'agent (pions noirs) qui joue au jeu contre l'IA du jeu (pions blancs).




Observer attentivement comment chaque joueur trouve une stratégie qui lui permet de gagner la partie.

Nous somme à la fin de la partie I de l'apprentissage par renforcement avec Abalone (jeu), j'espère que vous avez appris quelque chose de nouveau. Merci pour votre lecture.
                                                                                                                                😎 - M. Batalong M.B.

AlphaGo a été formé pour jouer d'abord en surveillant des dizaines de millions de mouvements effectués par des joueurs humains très forts, puis en jouant contre lui-même des millions de parties. ML permet aux ordinateurs d'apprendre à partir d'exemples pour apprendre à partir de données. ML s'est avéré être une clé pour entasser des connaissances dans les ordinateurs et c'est important parce que la connaissance est ce qui permet aux intelligences. 

                                                                                                -- Les créateurs de AlphaGo






Commentaires