Aujourd’hui, c’est notes de lecture ! L’article d’aujourd’hui est dans la droite lignée de ce dont on parlait la dernière fois, sur le fait d’apprendre à une intelligence artificielle comment jouer à une fiction interactive à analyseur syntaxique. J’ai lu un article de recherche récent portant sur ce sujet, et je vous en fais la synthèse, pour qu’on puisse voir les difficultés et l’avancée de la recherche dans le domaine !

Dans tout l’article, on parlera d’« intelligence artificielle qui joue à une fiction interactive ». C’est long ! Donc je lui donne un petit nom : l’IAFI.

L’article est « Language Understanding for Text-based Games using Deep Reinforcement Learning », de Narasimhan et al., paru en 2015.

Le but de ce papier est de construire une IA qui soit capable de lire la description donnée et d’en inférer l’état du jeu et les actions souhaitables. Ils utilisent comme support des MUD, et plus précisément le framework Evennia, qui apparemment fonctionne en donnant les lieux, les objets et les actions. (Un peu comme les expériences en JSON d’Astrofra ?) Je ne connais pas du tout Evennia, et il y a peut-être des subtilités qui font que tout ceci n’est pas immédiatement transférable aux jeux Inform ; mais on peut penser qu’un jeu simple en Inform sans trop de complications (verbes simples, pas de conversations, etc.) devrait convenir.

En général, quand on veut construire un système qui analyse du texte, il y a l’approche primitive du « sac de mots » (on compte les occurrences de chaque mot — mais on perd de l’information) ou l’approche par annotations, où l’humain annote plein de textes avec des catégories et des choses pour aider l’ordinateur à faire des abstractions. L’approche utilisée ici est de faire un apprentissage par renforcement par réseaux neuronaux, c’est-à-dire une approche où on donne un score à la performance de l’ordinateur, pour qu’il puisse voir si c’est bien ou pas et ajuster ses neurones en fonction.

L’article commence par une petite formalisation du problème, où l’on apprend qu’ils se limitent aux jeux à parser avec des commandes « verbe + nom ». Leur but est de calculer la valeur d’une action étant donné un état ; mais vu le nombre d’états possibles, leur but est en fait d’avoir un réseau neuronal capable, étant donné un état, de prédire quelle action serait la meilleure, ce qui est plus simple. Ils ont deux composants : un qui essaie de se représenter l’état en lisant la description, implanté avec un réseau de neurones de type LSTM (qui a fait ses preuves en traduction et en analyse de sentiments) ; l’autre qui essaie de deviner le score qu’obtiendra une commande (et donc quelle est la meilleure) avec un autre réseau de neurones.

Une subtilité : ils ont un système qui devine la meilleure action, et un système qui devine le meilleur objet, et ils prennent le couple « action-objet » qui a la moyenne la plus haute. Ceci est plus efficace (seulement 200 évaluations avec 100 actions et 100 objets, alors qu’il y a 10000 couples possibles), mais c’est assez étrange : en gros, leur IAFI lit la description du lieu, a un bout de neurones qui lui dit « mmh ouh là je sens qu’il va falloir prendre quelque chose » et un autre qui dit « mmmh cette pelle m’a l’air cool », donc elle essaie « prendre pelle » !

Une fois l’évaluation des commandes possibles faites, l’IAFI va vouloir jouer ce qu’elle pense être la meilleure action. Mais en fait, on va la faire dévier de ce choix avec une certaine probabilité : par exemple, l’ordinateur peut suivre son instinct avec probabilité 50 %, ou faire complètement autre chose avec probabilité 50 %. Pourquoi ? Parce que c’est une bonne façon d’introduire plus de diversité et d’améliorer l’apprentissage, en tombant au hasard sur les bonnes actions et en s’en souvenant pour la prochaine fois. Et de façon intéressante, ils font baisser le pourcentage de ne pas suivre l’instinct à mesure que l’ordinateur apprend : plus l’IA joue, plus elle apprend, et plus elle a dû trouver des actions chouettes, ils font donc en sorte qu’elle devienne plus sûre d’elle au fil du temps. (Ça rappelle un algorithme de recuit simulé, où on commence avec des perturbations aléatoires mais on devient sérieux à mesure qu’on s’approche de la fin.)

Le jeu est ensuite testé avec deux mondes différents. Le premier est simple : 4 pièces toutes interconnectées, 4 quêtes possibles (mais formulées de façon potentiellement complexe). On lâche l’IAFI dans une pièce au hasard, on lui dit par exemple « mange une pomme mais ne dort pas », et on la laisse jouer ; puis on recommence, sachant que le score obtenu lui permet de modifier ses prises de décision futures. Le deuxième monde est un peu plus complexe ; créé par les développeurs d’Evennia, il a plus de descriptions de salles et d’actions possibles. Cependant (et c’est un peu décevant), les auteurs disent 3 pages plus loin « en fait on ne va s’intéresser qu’à la quête de traverser le pont, où à chaque tour on a 5 % de chance de tomber du pont » ; je ne sais pas comment le jeu est fichu, mais quand ils disent que c’est plus complexe, ne vous attendez pas à des miracles. Ils font des dizaines d’essais, en laissant tourner l’IA pendant des dizaines de tours…

Et alors ? Ça marche ?

Hé ben plutôt pas mal !! Prenons l’exemple du premier monde simple : si on a une IAFI qui choisit l’action et l’objet au hasard, ça tourne en rond et ça ne marche vraiment pas bien. Si on a une approche « sac de mots », ça commence à être pas mal : l’ordinateur ne perd plus son temps à essayer « manger pomme » s’il n’y a pas de pomme dans la salle. Par contre, cette approche a du mal avec les quêtes qu’ils ont créées (« mange la pomme mais ne dort pas »), parce que comme on ne compte que les occurrences des mots (et pas leur ordre ou le sens de la phrase), le système ne sait pas s’il faut dormir ou manger (il a vu les deux, donc il pense aux deux, donc il peut très bien aller dormir). Par contre, leur système avec un LSTM ne se trompe pas et, au bout d’un moment, comprend tout parfaitement, et ne se trompe jamais dans la résolution des quêtes !

Alors OK, on pourrait dire que c’est artificiel : après tout, il n’y a pas tant de quêtes, donc c’est facile à mémoriser. Surtout, ils ont fait exprès de faire des quêtes avec des « ne pas » en sachant que l’approche « sac de mots » n’arriverait pas à comprendre ; si la quête était « mange une pomme », les deux systèmes auraient 100 % de réussite. Donc bon, certes, leur système apprend à résoudre leur genre précis de quêtes.

Ensuite, ils appliquent la même procédure au monde de fantasy (avec le pont). Le système qui choisit au hasard est nul, bon, normal. Le système « sac de mots » est pas mal, et on peut aller plus loin si on compte les occurrences de couples de mots, mais dans les deux cas ils ne sont pas très efficaces et tombent du pont pas mal de fois, et sont perturbés par les descriptions changeantes. Encore une fois, l’IAFI est la meilleure, et traverse le pont en moins d’étapes et sans se laisser dérouter par les descriptions changeantes.

Enfin, ils ont obtenu deux résultats supplémentaires assez encourageants :

  • Si on regarde les représentations internes d’un système entraîné sur le
    jeu simple dans la maison, les mots « pizza », « kitchen » et « hungry »
    sont rapprochés, et idem pour les 3 autres salles, ce qui laisse penser que
    l’ordinateur a appris des associations de concept.
  • Si on entraîne un système sur le premier jeu et qu’on le lâche dans une
    variante où les salles ne sont plus à la même place, le système parvient à
    apprendre à résoudre la variante bien plus rapidement que s’il n’avait
    jamais vu le premier monde — ce qui implique un certain degré de transfert
    et de réutilisation des connaissances !

En conclusion, les auteurs ont donc construit un système qui a l’air de comprendre ce qu’on attend de lui en lisant les descriptions beaucoup mieux qu’avec d’autres approches. Certes, les jeux et les quêtes sont très simples, et même avec cela il y a énormément de possibilités, et les auteurs ont dû procéder à des simplifications. Mais tout de même, on a un système qui apprend à résoudre des problèmes simples, et qui peut transférer un peu de son savoir sur des situations similaires mais différentes ; c’est intéressant, et prometteur !