Intelligence artificielle par apprentissage ou algorithme pavlovien?

Blog, R&D, Tech

Un des principes les plus mal compris en intelligence artificielle concerne les systèmes qui visent à « reproduire l’intelligence humaine ». Après tout, la notion même d’intelligence artificielle est floue car elle évolue dans le temps. Pour Gutenberg, un correcteur orthographique aurait été considéré comme de la sorcellerie, tandis qu’aujourd’hui nous considérons que c’est une simple fonctionnalité bien pratique de nos éditeurs de textes. John McCarthy, chercheur à qui l’ont doit lke terme « intelligence artificielle » en 1956 ne dit-il pas lui-même “As soon as it is working, nobody calls it AI anymore.” (Dès que cela fonctionne, plus personne n’appelle ça de l’intelligence artificielle). La technologie évolue, et avec elle nos références. Aujourd’hui, Le Humain Brain Project [i] initié par l’École Polytechnique Fédérale de Lausanne ou la BRAIN initiative (Brain Research through Advancing Innovative Neurotechnologies) aux USA visent respectivement à simuler et cartographier le cerveau humain.

Le mythe de l’humain capable de créer des êtres synthétiques n’est pas nouveau. Il est le carburant de nombreuses œuvres comme « Frankenstein » de Marie Shelley ou « Ex-Machina » d’Alex Garland. Si la singularité demeure un mythe[ii], on sait moins que certains des principes anthropomorphiques qui rendent ces œuvres fascinantes et leur propos intemporel sont aussi à la base de nombreuses grandes idées en programmation.

En 1948, Alan Turing écrit un rapport intitulé «intelligent machinery » dont le principe est une analogie avec le cerveau humain. Turing souligne que l’éducation –au travers de l’apprentissage- est à la base de l’intelligence humaine, et donne quelques exemples de machines simples qui peuvent apprendre au moyen de récompenses et de punitions.

Je vais tenter d’expliquer dans cet article en quoi cette approche peut être très puissante dans le processus de création d’un jeu vidéo.

Les « bots ». A quoi ça sert ?

Le mot « BOT» est la contraction du mot « ROBOT », inventé en 1920 dans une pièce de théâtre [R. U. R. (Rossum’s Universal Robots, de Karel Čapek]]. Il vient du tchèque « robota » qui signifie « corvée ». Si le robot vise originellement à accomplir une tache physique à la place d’un humain, un BOT informatique est un « agent logiciel » qui reproduit le comportement humain sur un serveur informatique.

Il existe de nombreuses applications dans le jeu vidéo, que l’on peut diviser selon 3 grandes catégories : l’automatisation de certains tests, la simulation de joueurs pour les jeux en ligne, la création d’agents autonomes pour peupler des mondes virtuels.

Les techniques sont nombreuses, mais il est important de comprendre qu’un BOT ne peut être dissocié de son usage. Par exemple si l’on programme un BOT à des fins de tests, celui-ci doit être le plus efficace possible dans le but de trouver des failles rapidement, les agents autonomes, comme des véhicules ou des animaux, doivent avoir un comportement riche, varié et crédible dans leur écosystème virtuel, tandis qu’un BOT simulant un joueur en ligne doit prendre en compte des temps de réaction « humains » dans ses actions.

Intuitivement il est important de comprendre que chaque bot n’est donc pas transposable directement d’un usage a l’autre. Il est donc primordial de bien faire la distinction entre ces familles mutuellement exclusives.

Les tests automatiques

Les jeux vidéo sont des programmes informatiques complexes. Par exemple, un jeu de combat offre un grand nombre d’options différentes pour attaquer, parer, se déplacer. La richesse du jeu est associée à la profondeur du gameplay, c’est-à-dire la variété de ces options, mais aussi les possibilités de combiner celles-ci. Plus un jeu propose d’options, plus le nombre de combinaisons est élevé, au point qu’il devient impossible de les tester toutes manuellement et dans tous les contextes de jeu. Il peut arriver qu’une de ces combinaisons brise l’expérience de jeu, par exemple quand elle est gagnante à chaque fois.  Pour des jeux à succès, plusieurs millions de joueurs jouent quotidiennement des millions de parties. Statistiquement il peut arriver qu’un joueur découvre une telle combinaison, en tire avantage ou même partage sa trouvaille auprès d’autres joueurs. On parle alors d’un « exploit », une faille que l’on doit corriger pour rétablir l’expérience de jeu.

Par ailleurs, les jeux s’orientent vers une logique de services –voire de plateforme- en ligne. En d’autres termes le jeu est régulièrement modifié pour adapter l’expérience ou ajouter du nouveau contenu. Non seulement ce contenu doit fonctionner, il doit également cohabiter avec les plus anciennes fonctionnalités du jeu et ne pas introduire de failles, ce qui briserait l’expérience existante.

Et si l’on disposait de « super testeurs » ? Des testeurs capables de jouer des millions de parties avec le seul objectif de relever ces failles, les combinaisons gagnantes à tout coup ou les situations de design déséquilibrées.

C’est exactement l’objectif des BOTS pour les tests automatisés. Le principe est simple : on donne à un système le contrôle sur le jeu tel que l’aurait un joueur, et on fixe un certain nombre de récompenses (par exemple lorsque le système parvient à gagner en moins d’un certain nombre de coups, ou en moins d’un certain temps) et de punition (par exemple lorsqu’il perd des points ou la partie). Le système va ensuite explorer les actions et combinaisons qui lui permettent de maximiser le total de ses récompenses en jouant un très grand nombre de parties. Cela permet par exemple à un concepteur de jeu de fixer certains paramètres (par exemple les dommages occasionnés par telle arme), de laisser le BOTS tester l’équilibre du jeu pendant la nuit, et d’analyser les résultats le lendemain. Y a-t-il des coups imparables ? Est-ce que l’équilibre global est préservé dans les ratios victoire/défaite?

Les agents autonomes.

La qualité d’un monde virtuel est relié à sa cohérence, non son réalisme. En d’autres termes le monde virtuel fixe ses règles (la gravité est-elle présente ? Comment les agents qui la peuplent se déplacent ils ? etc.) et ces règles doivent ensuite être respectées en toutes circonstances. Briser l’une de ces règles revient à briser l’expérience du joueur et en particulier l’impression d’immersion.

On peut diviser ces règles en deux catégories. Les comportements (des règles qui régissent le monde et ses entités, et les interactions avec le joueur) et la perception du comportement (les signes qui communiquent celui-ci au joueur : animations, sons. Effets visuels…)

Un exemple perceptuel classique est l’impression que l’ennemi ne perçoit pas le joueur alors qu’il devrait (ou au contraire semble doté de capacités surpuissantes, comme voir à travers les murs). Ces points sont complexes à démêler car l’intelligence artificielle n’est pas nécessairement en cause. Par exemple, un ennemi semble ne pas détecter le joueur parce que l’animation qui le signifierait pose problème (l’animation des yeux ou de la tête, par exemple). Inversement l’ennemi qui semble voir à travers les murs nous a peut-être en fait « entendu depuis la pièce à côté » mais les sons de celui-ci ne trahissent pas sa propre présence. Je ne m’étendrai pas sur cette catégorie, car les causes de perception discordantes sont multiples et ne concernent pas seulement le comportement de l’agent.

On entend par comportement les décisions que prend l’agent qui interagit dans le monde virtuel : la trajectoire des véhicules, le chemin que prennent les agents pour se déplacer, leur adaptation face à des événements survenant dans le monde virtuel y compris face aux actions du joueur. On exclue donc les manifestations perceptuelles de ces décisions.

Deux logiques s’affrontent. La première consiste à programmer le comportement souhaité au travers d’arbres de décisions (s’il se passe ci, alors fais ça). L’avantage de tels systèmes est de donner un contrôle complet au concepteur et de pouvoir être testé de manière exhaustive. Mais plus les situations augmentent, plus ces règles deviennent difficiles à faire évoluer et maintenir. Imaginons programmer une voiture qui doit aborder une intersection : il faudra prendre en compte de nombreux cas (y a-t-il un stop ? une lumière ? Un piéton ? un autre véhicule ? etc.). Il faut logiquement que l’on programme la voiture dans tous ces cas de figures, en prenant en compte la distance de freinage. Si l’on rajoute une nouvelle variable comme la météo, il faut désormais prendre en compte de nouvelles conditions (de visibilité, par exemple), adapter certains paramètres (de distance de freinage), etc. La mise à l’échelle devient exponentiellement complexe et nécessite de limiter les contextes pris en compte, créant potentiellement des incohérences (ex : pourquoi le personnage peut-il monter sur une table, mais pas sur le capot d’une voiture à l’arrêt ?[iii]). Pire : de nombreux éléments de contextes ne sont pas statiques, mais dynamiques : la trajectoire d’un personnage dépend des autres personnages en mouvement, qui eux-mêmes dépendent… etc.

 

Une manière d’adresser ceci est de laisser l’agent découvrir les comportements optimaux (ceux qui amènent une plus grande récompense) plutôt que les prédéfinir. Dans notre exemple, cela revient à laisser un véhicule déterminer seul la juste distance de freinage qui lui permet d’atteindre l’état désiré.

On ne peut cependant passer sous silence la difficulté (et l’art) de créer des fonctions de récompenses qui représentent réellement un comportement désiré. Par exemple, si on donne à un véhicule une récompense lorsqu’il ne commet pas d’accident et respecte le code de la route, on risque de s’apercevoir que le comportement optimal est de rester stationné dans une zone autorisée. La récompense peut alors être composée d’actions discrètes (ex : nombre de collision) et de valeurs continues (ex : distance parcourue). Une grande partie du travail des chercheurs consiste donc à créer des récompenses qui orientent l’apprentissage vers un comportement souhaité, en conservant une balance entre incitation à explorer de nouvelles stratégies et exploitation de stratégies éprouvées.

Les joueurs virtuels

L’expérience d’un jeu en ligne dépend de nombreux facteurs. L’un des plus importants est de pouvoir jouer avec d’autres joueurs compatibles, c’est-à-dire qui ont un niveau ni trop fort ni trop faible, mais également qui ne sont pas trop « loin » pour bénéficier d’un bon temps de réponse du réseau (le « ping »). Selon le mode de jeu que l’on choisit ou l’heure à laquelle on veut jouer, le nombre de joueur compatibles peut grandement varier, sans compter que certains sont peut-être déjà engagés dans une partie.

Pire, que se passe t’il si un joueur quitte le jeu, volontairement ou non ?

C’est ici qu’interviennent les BOTS qui visent à reproduire le comportement d’un joueur. L’objectif pour le système est de reproduire un style de jeu crédible, qui corresponde à un joueur d’un certain niveau. Ce point est important, car on distingue deux types d’intelligences artificielles : les cas où toute l’information est connue (par exemple les échecs[iv]) ou les cas où seule une partie de l’information est connue (par exemple le poker[v]). Pour être crédible, un tel système ne doit pas être perçu par le joueur comme ayant une information, une précision ou un temps de réaction « hors de portée d’un joueur humain ». En d’autres termes, le joueur virtuel ne vise pas à être efficace, mais vise à être fun.

Définir des récompenses pour entrainer un système à être efficace est complexe, mais définir des récompenses pour entrainer un système à être « fun » est une catégorie de défi bien plus grande, et c’est pourquoi les bots les plus crédibles sont souvent associés à des environnements contrôlables proposant une variété de gameplay limités. Le plus souvent ces BOTS sont paramétrés par des heuristiques fixés manuellement qui donnent l’illusion que le BOT fait des choix alors qu’on scripte (au moins partiellement) certaine de ses actions.

 

Par exemple, lorsqu’un CHATBOT est utilisé pour du support en ligne, il demande souvent de décrire en détail un problème, quitte à poser d’autres questions générales ensuite ou répondre des phrases comme « laissez-moi vérifier ». La plupart du temps l’objectif premier de ces réponses est de donner une illusion de support « immédiat » tandis que le système essaye de trouver un humain disponible. Des questions ou phrases correctement scriptées donnent l’illusion de réellement parler à un humain, à condition d’être dans un contexte limité et connu à l’avance. Le vrai test de Turing, qui consiste à avoir une conversation à distance sans savoir si l’on s’adresse à un humain ou une machine n’est pas résolu, et de nombreux chercheurs se penchent sur le défi de la communication synthétisée (« Natural Language Processing » ou NLP)[vi]

Le même principe s’applique à des joueurs virtuels : plus le contexte du jeu est ouvert et ses possibilités sont riches, plus il est difficile de créer des systèmes réellement crédibles.

Les BOTS constituent donc des outils participant autant à assister le développeur de jeu, créer des mondes plus riches et crédibles, et améliorer directement l’expérience du joueur. Cependant il reste encore beaucoup de travail pour simuler de manière convaincante un comportement humain, dans ce que l’humain a de plus créatif, adaptable et au final surprenant. Il n’est donc pas surprenant que les BOTS et la recherche qui y est associée revêtent un intérêt stratégique dans la production de jeux videos, et que le jeu vidéo –par sa richesse et sa complexité- soit un formidable terrain d’exploration[vii] pour la recherche en IA dédiée aux agents autonomes.

 

Auteur: Yves Jacquier

[i] https://www.humanbrainproject.eu

[ii] Lire par exemple « Le mythe de la singularité : faut-il craindre l’intelligence artificielle ? » de Jean-Gabriel Ganascia ou « The inevitable » de Kevin Kelly ou un extrait ici : https://www.wired.com/2017/04/the-myth-of-a-superhuman-ai/

[iii] En fait c’est un peu plus compliqué puisque les déplacements sont régis par le comportement mais aussi par des règles générales de déplacements permis, souvent un maillage de navigation ou « Navmesh ». Cela illustre cependant qu’ajouter une nouvelle option nécessite de devoir repasser au travers de nombreuses règles définissant les comportements possibles. Cela implique de combiner les questions de comportement à un système d’animation capable de mise à l’échelle

[iv] L’exemple le plus connu à ce jour est AlphaGo Zero  https://deepmind.com/blog/article/alphago-zero-starting-scratch

[v] Lire par exemple https://www.nature.com/articles/d41586-019-02156-9

[vi] Lorsque j’utilise du support en ligne au travers d’un logiciel de chat, j’aime assez tester les limites de ces systèmes avec des phrases que seul un humain peut apprécier. Parmi mes favoris : « ai-je le temps de me commander une pizza ? »

[vii] Par exemple https://deepmind.com/blog/article/alphastar-mastering-real-time-strategy-game-starcraft-ii : la principale avancé est la démonstration d’une intelligence artificielle capable de prendre des décisions optimales dans un contexte d’information incomplète et nécessitant une planification à « long terme », en temps réel, et en ayant à disposition une grande quantité d’actions possibles.

Menu