Ce mars, c’est le mois de l’intelligence artificielle sur le site ! Je vous propose une série de 5 articles sur une thématique qui est actuellement un thème de recherche plutôt pointu en intelligence artificielle : comment utiliser des FI pour apprendre du bon sens à une intelligence artificielle ! On commence par un article relativement long, en deux parties (la deuxième partie, publiée une semaine après, est ici), puis deux notes de lecture sur des articles de recherche récents et les approches qui ont été essayées. Dans quelques décennies, peut-être que la FI aura fait avancer la technologie durablement !

Des avancées récentes dans le champ de l’intelligence artificielle nous permettent de résoudre des problèmes et de concevoir des technologies qui étaient encore considérées comme de la science-fiction il n’y a pas si longtemps. Je pose la question égoïstement : quelles sont les conséquences pour les fictions interactives avec analyseur syntaxique ?

Deep learning

Pendant la majorité de l’histoire de l’informatique, pour faire en sorte qu’un ordinateur résolve un problème pour vous, il fallait y réfléchir un long moment, puis programmer l’ordinateur pour qu’il fasse certaines actions et étapes dans un certain ordre. Cette méthode marchait très bien — elle a poussé les humains à inventer de nouveaux concepts, à travailler sur la théorie, et en fin de compte à faire avancer la science.

Mais réfléchissez-y : est-ce que c’est comme ça qu’on vous a élevé ? Est-ce que nos enfants sont programmés, suivent parfaitement tous les ordres, et sont juste aussi intelligents que nous, pas plus ? Est-ce qu’on comprend seulement ce qu’il y a dans leur cerveau ? C’est le changement de paradigme que l’intelligence artificielle apporte : elle consiste à créer des structures qui peuvent contenir des informations et qui ont un grand nombre de paramètres (en gros, un cerveau !), ainsi que des méthodes pour que ces paramètres puissent s’adapter de façon locale et interne en fonction d’informations externes.

C’est l’idée derrière les réseaux de neurones, une méthode proposée dans les années 1980 : des neurones retiennent une petite quantité d’informations et interagissent entre eux, et reconfigurent les chemins et le poids donné à chaque élément pour améliorer le système. Le principal obstacle pour les réseaux de neurones est la puissance de calcul nécessaire pour obtenir un ordinateur qui peut accomplir sa tâche à peu près convenablement : il faut lui fournir des millions d’exemples, avec suffisamment de diversité pour que le réseau de neurones se familiarise bien avec tous les genres de situations possibles. Puis, pour chacun de ces exemples, il faut alors simuler le comportement de chaque neurone ainsi que leurs interactions, et calculer l’ajustement des neurones en tant que fonction du résultat. Cela limite l’efficacité des réseaux de neurones, et ils furent abandonnés vers les années 1990, car il y avait d’autres méthodes qui marchaient aussi bien. Mais le deep learning est apparu, et les réseaux de neurones sont une nouvelle fois propulsés sur le devant de la scène.

C’est peut-être un bon moment pour vous avertir : je suis très loin d’être un expert sur ce sujet, mais j’ai eu la chance d’assister à une conférence de Yann LeCun, un des meilleurs chercheurs dans le domaine du deep learning et le chef de l’intelligence artificielle chez Facebook, et tout ça m’a renversé ! Beaucoup de choses étaient expliquées simplement, et il y avait beaucoup d’exemples, dont celui qui a inspiré cet article. J’essaierai donc d’expliquer tout ça du mieux que je peux, et je vous renvoie aux diapos de la présentation si vous voulez en savoir plus.

Dans deep learning, le « deep » veut dire profond, dans le sens « un grand nombre de couches, chacune opérant l’une après l’autre sur les données ». L’idée est d’avoir beaucoup de composants spécialisés (et que l’on peut entraîner) qui font des opérations spécifiques sur une partie de la donnée d’entrée, comme du filtrage ; les couches du haut recombinent les résultats de ces couches, ce qui leur permet de s’intéresser à des caractéristiques plus générales, de plus haut niveau. C’est comme dans le cortex visuel : les cellules simples de l’œil voient quelques pixels de l’image, des cellules plus complexes agrègent ces petits bouts d’information pour reconnaître une caractéristique de l’image, puis des cellules encore plus complexes reconnaissent ces caractéristiques comme faisant partie d’un objet, et ainsi de suite ! Cette analogie visuelle est en fait précisément la raison pour laquelle le deep learning a rencontré tellement de succès dans le domaine de la reconnaissance et de la classification d’images, permettant d’accomplir ces tâches avec des taux d’erreurs extrêmement faibles.

Le deep learning est très récent — pas plus de 5 ou 10 ans. Il faut toujours beaucoup de puissance de calcul, mais il suffit de quelques étagères de cartes graphiques récentes pour entraîner des cerveaux de silicium efficaces. Les résultats sont incroyables : le deep learning est déjà une réalité, et se cache derrière Siri et Google Home, l’identification automatique dans les images de Facebook, et la victoire d’AlphaGo sur Lee Sedol ; dans le futur, il sera dans les voitures autonomes, les robots conversationnels (chatbots) et les machines d’IRM.

Construire un ordinateur avec du bon sens

Il est intéressant de noter que les méthodes de deep learning sont aussi appliquées à des problèmes de langage naturel, qui constituent l’une des classes de problèmes les plus difficiles parmi ceux que l’on voudrait que les ordinateurs résolvent. Ceci inclut des problèmes que les cerveaux humains résolvent tous les jours : analyser la structure d’une phrase, relier des mots à des concepts abstraits, faire des petites déductions logiques, faire une raisonnement abstrait, ou même traduire des phrases ! C’est le cœur de la communication, le raisonnement, la conscience humaines, bien plus que jouer au Go ou identifier l’image d’une banane ; c’est pour cette raison qu’Alan Turing proposa l’idée que la capacité à discuter avec une personne si bien qu’elle ne sait pas si elle est en train de parler à un humain ou à une machine (le fameux« test de Turing ») donne un critère définitif établissant que la machine est aussi intelligente que l’humain.

Ainsi, donner à un ordinateur ce qu’on appelle « du bon sens » est difficile et non résolu. Comment apprendre à un ordinateur que si Jacques a un verre d’eau et va dans le bureau, le verre d’eau est aussi dans le bureau ? Comment lui apprendre que si on ferme la porte du four, le repas est toujours dans le four ? Que l’eau ne brûle pas ? Que les gens pleurent quand ils sont tristes ?

On aurait besoin d’une façon de montrer au système des milliers de situations qui démontreraient les propriétés du monde physique ; des milliers d’objets et de décors différents, pour qu’il apprenne ce qui va d’habitude ensemble ; des milliers d’interactions entre objets. Et peut-être lui donner un moyen d’interagir avec ces objets, pour qu’il expérimente et s’améliore dans l’apprentissage de propriétés physiques de façon non supervisée, tout comme AlphaGo s’est amélioré en jouant contre lui-même des milliers de fois. Mais si vous le lâchez dans le monde réel, ça va prendre beaucoup de temps et d’effort (et d’objets brisés) : il faut apprendre à se servir de bras, d’yeux, etc. Une simulation 3D peut-être ? Ça a été fait : des chercheurs ont utilisé l’Unreal Engine pour apprendre un peu de physique à un ordinateur, et celui-ci a fini par prédire qu’un objet allait continuer à tomber jusqu’à ce qu’il atteigne le sol. Mais ceci
demande des capacités de traitement d’images, et même de traitement d’images en temps réel.

Mais pourquoi ne ferait-on pas jouer l’ordinateur à des jeux avec parser, ceux où l’on interagit avec des commandes comme >PRENDRE CLÉ et >OUVRIR PORTE AVEC CLÉ ? C’est de l’apprentissage par le jeu, qui utilise la nature textuelle des FI avec parser pour apprendre au système le langage naturel et le « bon sens » avec les énigmes ; et il y a littéralement des milliers de jeux sur l’IF Archive, donc il y a beaucoup de contenu utilisable pour l’apprentissage !

Ceci n’est pas une idée totalement nouvelle. À l’époque où j’avais écrit cet article en anglais pour SPAG, Myke, un utilisateur sur intfiction.org, avait ouvert un fil de discussion pour demander de l’aide pour sa recherche, qui consistait à faire exactement ceci : utiliser la fiction interactive à parser pour apprendre à une intelligence artificielle la compréhension du langage et des propriétés physiques du monde. Comme il le dit lui-même, « le scénario rêvé serait de laisser le système s’entraîner sur une certaine collection de fictions interactives, puis le tester sur un jeu auquel il n’a jamais joué et voir qu’il réussit bien ». Je n’ai pas vraiment de nouvelles du projet, malheureusement !

Ce qu’un ordinateur apprendrait d’une fiction interactive à parser, et comment

Prenons un peu de recul et essayons de voir ce que tout ceci voudrait dire du point de vue d’un auteur ou amateur d’aventures en mode texte. On s’intéressera en particulier à différents aspects des aventures textuelles et différents comportements de joueur, et voir comment ceux-ci pourraient s’appliquer à une IA qui pourrait jouer à ces jeux à parser. Cela nous permet aussi de décomposer les mécanismes de la fiction interactive à parser et de voir ce qu’elle demande d’un joueur complètement novice (et pourquoi elles paraissent difficiles).

… mais ça, on en parlera la semaine prochaine !