L’article explore le Reinforcement Learning (RL) et ses applications, incluant les jeux (AlphaGo, AlphaStar), les voitures autonomes, et la robotique. Présentation d’un démonstrateur d’implémentation RL dans l’Aqsone Lab, mettant en lumière l’apprentissage par l’erreur, la simulation virtuelle, et un exemple d’atterrissage virtuel sur la lune, soulignant les enjeux et ambitions dans divers secteurs.
De tous les sujets d’Intelligence Artificielle, le Reinforcement Learning (RL), ou Apprentissage par Renforcement est probablement le plus prometteur par ses capacités dans diverses applications mais aussi le plus difficile à implémenter.
Ce sont ces méthodes qui ont permis à l’AlphaGo de chez DeepMind de battre les meilleurs joueurs de Go, un jeu de société avec des règles simples, mais dont les combinaisons de coups sont extrêmement nombreuses. AlphaGo a évolué récemment en devenant AlphaStar, qui est devenu presque imbattable au jeu mondialement connu Starcraft 2.
On retrouve aussi ce type de méthode dans des voitures autonomes ainsi que dans la robotique industrielle.Nous allons voir dans cet article comment implémenter un algorithme de RL, ses forces et ses faiblesses, au travers d’un démonstrateur créé au sein de l’Aqsone Lab.
Cette forme d’apprentissage automatique qu’est le Reinforcement Learning consiste à mettre en situation un agent autonome dans un environnement, avec un objectif précis sur lequel il n’a pas d’informations. Cet agent va apprendre, via un système de sanctions et récompenses prédéfinies par le développeur, à agir au mieux pour remplir cet objectif avec un score optimal. On voit immédiatement l’intérêt d’avoir un environnement simulé pour les premières phases de l’entraînement. En effet, on évite non seulement d’avoir trop de casses matérielles, mais aussi de paralléliser les situations et accélérer la phase d’apprentissage.
Dans le monde réel, tout être vivant fait naturellement cet apprentissage: l’environnement est prédéfini, et chaque action effectuée donne constamment des feedbacks qui permettent à cet être vivant de s’adapter en conséquence.
La clé du Reinforcement Learning réside dans la pertinence de la simulation de l’environnement, mais aussi dans la pertinence de la politique de sanctions et récompenses.
Prenons l’exemple ci-dessus d’une fourmi (notre agent). Elle se trouve dans un environnement avec différents obstacles (par exemple une araignée) et différentes opportunités (comme de la nourriture). Ces éléments sont définis dans la politique (policy) de cette fourmi, avec des scores négatifs et positifs. L’objectif est d’atteindre une position finale où le score est maximal (la maison).
L’agent a comme possibilités (actions) d’aller dans n’importe quelle direction, et son état (state) sera défini par sa position à l’instant t. Remarquez que l’environnement peut changer (l’araignée se déplace).
L’agent explore différents chemins, apprend à chaque chemin emprunté et à terme, il parvient à trouver un chemin optimal (passer par la feuille, le pain et la maison).
Cette illustration est très simple, mais il existe des modélisations plus complexes qui permettent de simuler des cas concrets.
Seulement voilà : dans une application concrète il existe des millions de façons de définir des politiques et des environnements. C’est là où la connaissance métier entre en jeu pour bien définir les limites, les objectifs et comment les atteindre (i.e. les processus ou la politique) pour ensuite correctement les modéliser dans un environnement virtuel.
L’autre avantage de l’environnement virtuel est que le réalisme de l’environnement pourra être amélioré de façon itérative, en intégrant des processus de plus en plus complexes, ce qui permettra à l’agent de devenir de plus en plus performant en environnement réel. De nombreuses solutions de modélisation d’environnements sont fort heureusement très nombreuses, que l’on soit sur des applications de robotique ou d’optimisation d’un processus impliquant des machines physiques par exemple. On peut citer notamment le simulateur de OpenModelica.
L’objectif à terme est ambitieux: atteindre des résultats au-delà des capacités humaines !
Parmi les cas d’application les plus répandus, on peut citer les jeux type Atari, avec un environnement assez basique (peu d’actions possibles et un environnement peu changeant). Nous avons décidé de travailler sur le jeu d’alunissage d’OpenAI Gym, plus complexe que les jeux Atari.
L’objectif est de poser un module d’alunissage entre deux drapeaux, comme Apollo sur la Lune. Le pilotage du module se fait à l’aide de flèches directionnelles pour contrôler les propulseurs (gauche, droite et bas). L’alunissage doit se faire en douceur, sinon le module s’écrase.
Voici l’ensemble des paramètres de notre modèle:
Afin de corser le défi et montrer la capacité super-humaine d’un algorithme de Reinforcement Learning, nous avons décidé de modifier le design de l’alunisseur d’OpenAI Gym et lui donner la forme du mot « Aqsone ». Ainsi, le centre de gravité n’est plus aligné avec le propulseur central, ce qui implique d’utiliser plus subtilement l’ensemble des propulseurs qu’avec l’alunisseur standard.
Pour ce projet, nous avons utilisé une méthode de renforcement dite Acteur-critique, qui a l’intérêt de nécessiter peu de puissance de calcul.
La méthode Acteur-Critique met en confrontation un réseau Acteur, qui représente l’agent, et un réseau Critique. Ce réseau critique va déterminer la valeur associée à une situation donnée. Par exemple, la situation où l’alunisseur est sur le dos aura une valeur associée très faible car elle induira très certainement un crash à court terme.
En plus de calculer le score total à la fin de la partie (Policy based method), la méthode Acteur-Critique évalue également un score intermédiaire à chaque situation (Value based method). L’acteur peut alors savoir s’il se trouve dans une « bonne » ou « mauvaise » situation à chaque instant.
Pour plus de détails techniques sur cette méthode, vous pouvez consulter cet article sur Towards Data Science: https://towardsdatascience.com/understanding-actor-critic-methods-931b97b6df3f
Après quelques essais, nous avons compris que le nouveau design de l’alunisseur avait augmenté significativement sa masse, ce qui nous a obligé à augmenter la puissance des propulseurs.
Après avoir réglé la taille du réseau, défini la politique précisément, l’apprentissage peut démarrer.
C’est parti !
L’alunisseur commence par faire beaucoup d’erreurs mais apprend progressivement la conséquence de chacune de ses actions. L’algorithme enregistre progressivement les suites d’actions qui ont le mieux fonctionné, c’est-à-dire qui lui ont fait gagner le plus de points.
Après plusieurs milliers d’itérations, le résultat final est impressionnant : le modèle de Reinforcement Learning alterne très rapidement les actions sur les différents propulseurs (voir vidéo), à une vitesse inatteignable par un humain, pour avoir un atterrissage quasi parfait.
Nous avons tenté de faire alunir le module manuellement, pour comparer notre performance à celle de la machine. Résultats ? Nous n’avons jamais réussi à faire alunir notre nouveau module correctement et entre les drapeaux. Ceci prouve l’efficacité des algorithmes de Reinforcement Learning.
Nous ne pouvons que constater les capacités extraordinaires des algorithmes de Reinforcement Learning. Il faut cependant ne pas oublier l’importance de la pertinence de la simulation de l’environnement ainsi que de la politique mise en place avant de placer le modèle dans un environnement réel.
Le panel de cas d’applications en Reinforcement Learning est très large, allant de la robotique (monde physique) à l’optimisation des méthodes marketing (monde virtuel). Nous vous encourageons à nous contacter pour échanger sur vos problématiques et définir ensemble si le Reinforcement Learning est la technologie la plus appropriée pour y répondre.