Intelligence artificielle

Vous n’avez jamais entendu parler d’intelligence artificielle, ni récemment entendu parler de robots intelligents ? Bravo ! Vous avez découvert l’un des derniers endroits de la planète à l’abri des médias et d’Internet, et vous avez la sagesse d’y habiter ! Mais si comme l’homo connectis moyen, vous entendez parler d’intelligence artificielle tous les jours, alors une bête question : c’est quoi, l’intelligence ? 

Selon Wikipédia, c’est « l’ensemble des processus de pensée d’un être vivant qui lui permettent de comprendre, d’apprendre ou de s’adapter à des situations nouvelles« . On peut imaginer, d’après cette définition, que l’intelligence artificielle doit être quelque peu différente. Comment un ordinateur peut-il faire preuve d’un équivalent d’intelligence ? 

La réponse est forcément complexe; après tout cela fait plus de cinquante ans que les chercheurs rêvent d’imiter l’intelligence avec un algorithme d’ordinateur. La première application réellement opérationnelle de l’AI (Artificial Intelligence) a été dans l’écriture d’algorithmes de jeu pour ordinateur. Ainsi, l’ordinateur a permis de battre l’humain aux échecs, puis récemment au jeu de Go; comment fait-il ? 

On peut grossièrement décrire le processus de base avec quelques (deux ou trois) mécanismes de base qui constituent aussi (en simplifiant quelque peu) l’ossature élémentaire de tout processus d’intelligence artificielle. Il y a tout d’abord la description des règles du jeu. Ceci inclut l’architecture du plan de jeu, les mouvements et les comportements des éléments mobiles du jeu. Le plan de jeu peut être ou non connu au départ, ce n’est pas là l’important : un aspirateur robot, par exemple, va devoir travailler sans connaissance a priori du plan sur lequel il évolue, alors qu’un robot joueur d’échecs dispose d’un plan de jeu figé de 64 cases en damier de 8 par 8, sur lequel il peut déplacer des pièces de manière dépendante de la pièce en question. Quant à l’aspirateur robot, ses règles de déplacement sont assez simples : cela passe ou ne passe pas, ses capteurs lui permettant en théorie de décider si un escalier devant lui constitue un obstacle infranchissable ou non.

Le deuxième élément est la fonction d’évaluation. A un instant donné, la situation pour chacun des joueurs est plus ou moins favorable. En principe, ce qui est favorable pour A est plutôt défavorable pour B, selon le jeu en question. L’art est de parvenir à une bonne quantification du caractère favorable d’une situation de jeu à un instant donné. A partir de cette situation, on pourra simuler tous les mouvements possibles, ainsi que les réponses possibles de l’adversaire pour parvenir à un nouvel état théorique du jeu. Parmi tous les essais que l’on aura ainsi effectué, on pourra choisir le meilleur selon la métrique de notre fonction d’évaluation. Bien sûr, on peut pousser plus loin l’exploration, en refaisant la même opération à partir de chacun des tableaux calculés, ceci éventuellement plusieurs fois de suite : on parle alors de profondeur de recherche. Plus elle est grande, plus l’ordinateur possède un grand nombre de coups d’avance sur son adversaire; dans un jeu simple, comme Othello, il peut même se permettre d’être complètement exhaustif après quelques coups initiaux, ce qui le rend pratiquement invincible. A ce stade, on constate deux problèmes qui semblent constituer le talon d’Achille de la méthode : la fonction d’évaluation doit être de bonne qualité (représenter une métrique réaliste de la situation de jeu), et de surcroît doit être assez simple à calculer, car cette estimation devra être répétée des centaines de millions de fois dans la partie, ce qui fait la lenteur de la prise de décision de l’ordinateur.

Plusieurs éléments de réponse ont été apportés à ces deux problèmes; ainsi, on a pu simplifier la recherche en évitant d’examiner des situations lorsque l’on pouvait être sûr qu’elles ne pouvaient en aucun cas conduire à un résultat meilleur que ce que l’on avait déjà évalué (algorithme minimax, ou alpha-bêta). On a aussi introduit des fonctions d’évaluation variables (en début de partie, on ne recherche pas forcément les mêmes positionnements qu’en milieu ou en fin de partie) pour améliorer les qualités stratégiques de l’ordinateur et lui permettre de mieux jouer avec une recherche moins exhaustive. On a aussi ajouté à la fonction d’évaluation la possibilité de vérifier si telle situation s’était déjà produite dans une partie précédente, et à quel résultat elle avait finalement conduit : cela a été l’introduction, en particulier dans les jeux d’échec, de bases de données de parties déjà jouées. On a commencé avec des parties de Grands Maîtres Internationaux, puis on a permis à l’ordinateur de stocker ses propres résultats, ce qui lui a conféré la capacité d’apprentissage. Enfin, on a mis ces bases de données en réseau, ce qui permet théoriquement à n’importe quel ordinateur de la planète de profiter de l’expérience de toutes les parties jouées par ses confrères n’importe où dans le monde. La dernière performance en la matière est celle de l’algorithme AlphaGo Zero de DeepMind (l’AI selon Google, pourrait-on dire), qui est parti avec une base de données vierge (en ne connaissant que les règles du jeu de Go ainsi que les objectifs de base, donc une fonction d’évaluation basique), et qui l’a lui-même améliorée en jouant contre lui-même des millions de parties jusqu’à pulvériser la version précédente Alpha Go (version ayant battu à plate couture le meilleur humain) par 100 victoires à zéro. 

Ces mêmes principes s’appliquent peu ou prou à tout programme contenant un peu d’intelligence artificielle, par exemple la voiture autonome. Le plan de jeu et les règles sont infiniment plus complexes, et la fonction d’évaluation est potentiellement aussi complexe que l’on veut bien le définir, mais à la base assez simple : toute solution qui conduit en un temps raisonnable à un endroit situé plus près de l’objectif final sans accident et sans violation des règles de la circulation est en principe une solution viable. Sauf que dans le cas du jeu d’échec ou du jeu de Go, les adversaires jouent à tour de rôle, alors que dans la circulation automobile, les adversaires sont nombreux et jouent simultanément ! De plus, certains des joueurs n’obéissent pas aux règles (chauffards, ivrognes, animaux). Certains joueurs ne sont probablement même pas prévus dans l’évaluation, ce qui rend une prévision (profondeur de recherche), même à court terme, aléatoire.

Intervient un nouveau paramètre qui est la fréquence de l’évaluation de la situation. La voiture autonome doit en permanence réévaluer la situation pour décider s’il vaut mieux continuer sur sa lancée, obliquer ou freiner. Bien sûr, elle perçoit la situation par le biais de capteurs qui lui livrent un modèle simplifié de la réalité, modèle qui est jugé suffisant pour assurer la fonction de l’automobile; mais cela reste néanmoins un modèle simplifié et qui va forcément présenter des lacunes. On remplace en quelque sorte la profondeur de la recherche devenue peu utile par la fréquence d’évaluation, mais c’est toujours cette satanée fonction d’évaluation qui va déterminer la précision de l’analyse : le temps nécessaire à son calcul va déterminer la fréquence avec laquelle la voiture autonome pourra réagir à un événement imprévu, et la pertinence de la fonction va déterminer le bien-fondé de la réaction de la voiture.

Bien sûr, face à des problèmes complexes, le modèle simplifié risque de ne pas suffire. En l’état actuel des choses, la voiture autonome n’est pas intelligente, et ne fait qu’appliquer de manière plus ou moins pertinente un algorithme (la fonction d’évaluation) qui analyse un environnement simplifié avec une logique figée qui ne saurait s’adapter intelligemment  à une situation qui n’est pas prévue dans son modèle : en un mot, une situation nouvelle. Prenez une voiture qui se met à glisser latéralement dans une neige profonde et glissante, au risque de partir dans le fossé (ou pire, un précipice), et il y a fort à parier que la voiture va réagir en freinant, ce qui est bien sûr la dernière des choses à faire. Soyons justes : la grande majorité des conducteurs ferait la même erreur…

J’ai entendu un expert dire que la voiture autonome aurait de la peine à prendre certaines décisions, comme en cas de dilemme, prendre le risque d’écraser soit une maman avec un landau, ou un vieillard. Que choisir ? On pourrait se demander si un conducteur humain aurait le temps de se poser la question le cas échéant; mais pour l’ordinateur, on n’en est pas là ! Les algorithmes de vision ne sont pas (encore) capables de faire ce genre de différences avec les caméras actuelles et avec le peu de temps à disposition. L’apparition des smartphones a fait gagner plusieurs ordres de grandeur à la puissance de calcul des processeurs, mais il faudra gagner encore quelques ordres de grandeur pour en arriver à un stade où il faudra réellement commencer à inclure des notions d’éthique dans les fonctions d’évaluation. Quoiqu’en disent les inconditionnels de l’AI, les lois de la robotique d’Isaac Asimov ne sont pas encore d’actualité.

Ce qui ne m’empêchera pas de m’asseoir avec plaisir au volant d’une voiture autonome (électrique, sûrement) et de lui dire « Amènes-moi à Sète et en attendant, passes-moi un bon film » le jour où cela deviendra possible (et s’il y a de bons films disponibles, bien sûr). Sur un environnement purement autoroutier, le problème de l’évaluation de la situation est assez simple, finalement; donc cela devrait être jouable dans un futur raisonnablement proche. Mais bon, je ne suis tout de même pas certain de vivre ce jour…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.