Bonne question… Et pour être franche, pas une facile. Mais hey ! J’aime les défis ! Une autre très bonne question : mais pourquoi diable un ornithorynque ? Continuez de lire et vous saurez.

Petit disclaimer avant de commencer: si vous préférez le format audio, j’ai participé à une émission du Balado Scepticisme Scientifique ou j’aborde plus ou moins les mêmes concepts qu’ici, à la différence que sur le balado je parle également des problèmes éthiques que je ne traiterai pas dans cet article. Par contre, vous ne saurez pas pourquoi l’ornithorynque. Faites-votre choix!

Maintenant, on y va !

Un peu d’histoire

Rien de bien méchant, pas de panique. Les experts s’accordent généralement à dire que le terme “Intelligence Artificielle” et le domaine de recherche associé remontent en 1956 et à la “Conférence de Dartmouth”. Cette conférence a réuni les plus grands experts de différents domaines tels que les mathématiques, l’informatique, l’ingénierie, la psychologie et autre, et avait pour but d’étudier “chaque aspect de l’apprentissage et de l’intelligence”. Ou, comme John McCarthy le dit lui même1:

Nous suggérons que pendant 2 mois durant l’été 1956 au collègue de Dartmouth, Hanover, New Hampshire, 10 hommes étudient l’intelligence artificielle. Cette étude se base sur l’hypothèse que chaque aspect de l’apprentissage ou n’importe quel aspect de l’intelligence peut, en théorie, être décrit si précisément que des machines soient capables de le simuler. Il serait tenté de trouver comment des machines peuvent utiliser le langage, former des abstractions et des concepts, résoudre des problèmes réservés aux humains et s’améliorer. Nous pensons que des avancées conséquentes peuvent être réalisées dans un ou plusieurs de ces domaines si un groupe de scientifiques soigneusement sélectionné y travaille ensemble pendant un été. — J. McCarthy,  31 Août 1955.

Deux mois pour modéliser tous les aspects de l’intelligence? Un peu optimiste non? Pour information, le projet de la Conférence de Dartmouth est disponible en ligne (en anglais)2.

Depuis, la recherche en Intelligence Artificielle est passées par deux “hivers” majeurs. Le terme d'”hiver de l’IA” est apparu pour la première en 1984 pendant la conférence AAAI (Association Américaine d’Intelligence Artificielle, l’une des conférences maîtresses du domaine, depuis renommée l’Association pour l’Avancée de l’Intelligence Artificielle). Le premier hiver a eu lieu dans les années 1970, le deuxième fin 1980.

Le premier hiver est dû, entre autres, au fait que le domaine de recherche n’a pas su se hisser à la hauteur de ses promesses. Les chercheurs ont garanti des avancées extraordinaire et d’immenses changement pour la société grâce à l’IA, mais n’ont pas pu tenir leurs promesses et la tâche semblait alors impossible. Le public, les médias et les chercheurs eux-mêmes ont commencé à perdre espoir face aux défis posés et le prix devenait trop élevé face aux hypothétiques bienfaits de l’IA. Il en résultât une perte d’intérêt et de financement majeurs.

Le deuxième hiver,  à la fin des années 1980, a commencé de la même façon: des projets extrêmement ambitieux non menés à bout et les gouvernements et agences de financement qui perdent foi en la commercialisation possible de l’IA. Une fois de plus, il en découle un manque d’argent pour les futurs projets, ralentissant la recherche.

Entre deux, évidemment, pas d’hiver sans été: apparition des Système Experts après le premier hiver et la montée des IA incarnée après le deuxième. Depuis les années 2000, l’IA semble être dans un été permanent, mais il semble que  nous soyons toujours dans la plus récente et probablement plus chaude vague que l’IA ait connue jusqu’à présent. Notamment grâce à l’amélioration, aux très grands succès et à la commercialisation de l’Apprentissage Artificiel, et tout particulièrement les techniques d’apprentissage profond. Néanmoins ça serait une erreur de penser que le reste du domaine s’est tourné les pouces pendant que l’apprentissage artificiel progressait! De très grandes avancées ont été menées dans différents domaines de recherche, mais moins visibles que celles en apprentissage.

<Insérer Titre Artificiellement Intelligent>

Donner une définition de l’IA est particulièrement compliqué, tout comme trouver un titre à une section donnant cette définition. L’Intelligence Artificielle est un domaine de recherche très très très large qui regroupe des techniques aussi variées que les systèmes experts, le raisonnement automatique, la perception automatique, le traitement naturel des langues, la théorie des jeux… Sans compter un autre petit problème : le domaine lui-même tend à changer en fonction de ce qu’il parvient à faire et à améliorer. Le théorème de Tesler3, ou Effet IA 4, donne un assez bon résumé du problème:

L’IA est ce qui n’a pas encore été fait.

Dans le passé, à chaque fois qu’une application de techniques d’Intelligence Artificielle passait dans l’utilisation courante, on ne le qualifiait plus d’IA car ne reflétait pas ce qu’on imagine de l'”Intelligence”.

Malgré ces difficultés à définir l’IA, se j’ai vraiment à le faire, j’aime utiliser la définition suivante: l’Intelligence Artificielle est ce l’ensemble des techniques qui donne à un agent artificiel des capacités de raisonnement, planification, prédiction et apprentissage. En d’autre terme, c’est ce qui permet à un agent de s’adapter.

Je suis parfaitement consciente que cette définition est restrictive et ne se généralise pas à l’ensemble des domaines de l’IA, surtout si on considère l’Intelligence Artificielle de niveau humain (aussi appelée Intelligence Artificielle Générale)5 ou l’IA incarnée 6, mais il me semble que c’est un bon début. Maintenant, on va rentrer dans les détails.

Agent et Environnement

Tout d’abord, quelques définitions pour qu’on parte sur les même bases: qu’est ce qu’un agent artificiel (souvent simplifié en agent) ? Même si vous avez sans doute une assez bonne intuition de ce qu’est un agent, mettons-nous d’accord.

Un agent, c’est ça:

architecture agent

Un agent est une entité (un programme ou un ensemble de programmes) qui existe dans un environnement. Cet environnement peut être le monde réel ou un monde abstrait, et cet agent peut être incarné (i.e. avoir un corps, comme un robot) ou abstrait (n’exister que dans un ordinateur). Un agent n’existe pas tout seul: il existe en relation avec un environnement. Notez que cet environnement peut contenir d’autres agents. Enfin, l’ensemble Agent + Environnement est appelé un Système.

Un agent possède un modèle et un réacteur. Le modèle décrit ce que l’agent sait à propos de lui-même et de l’environnement.  Le réacteur est un terme très générique7 pour décrire le fait que l’agent réagit à ce qu’il perçoit du monde en utilisant son modèle, et génère des actions. Cet actions peuvent être se déplacer, assigner une catégorie à une image, ouvrir une porte… vous choisissez !

Des robots dans le monde réel sont ce qu’on appelle des agents incarnés8 (i.e. qu’il on un corps et contrôler ce corps est un aspect très important de leur intelligence). Néanmoins, avoir un corps n’est pas une caractéristique essentielle d’un agent. Un bot conversationnel capable de répondre à vos questions sur le site de votre banque est aussi un agent. Un agent n’est pas forcément intelligent par défaut. Il existe des agents réactifs et des agents cognitifs, et tout le continuum entre les deux. Les agents purement réactifs réagissent aux stimuli : quelque chose se passe dans l’environnement et l’agent réagit toujours de la même manière. Les agents cognitifs sont capables de comportements complexes dont ils décident à travers un raisonnement et une planification. En vrai, la plupart des agents montrent des capacités réactives et cognitives, mais on va s’intéresser à la partie cognitive pour la suite.

Le carburant de la prise de décision: perception, données et connaissance

Pour être capable de raisonner et planifier leur comportement, les agents ont besoin de percevoir leur environnement. En tant qu’humain9, nous percevons le monde à partir de nos capteurs (yeux, oreilles, nez, peau…), chaque capteur nous offrant une perception différente. Et bien c’est pareil pour les agents, sauf que leurs capteurs peuvent être physiques (caméra, micro, capteur de température…) ou virtuels. Des capteurs virtuels sont tout simplement les mécanismes qui permettent à un agent de recevoir de l’information sur leur environnement, telle qu’un champs dans lequel vous tapez votre question ou une fonction qui permet à un agent de connaître le prix actuel de l’objet qu’il souhaite acheter.

Ces capteurs donnent des données aux agents. De simples signaux sans aucun sens, juste des suites de zéros et uns (comme nos capteurs ne nous donnent que des signaux électriques). Il faut donc transformer ces données en connaissances, i.e. leur donner un sens, avant de pouvoir raisonner dessus.

En règle générale, ce sont les humains qui donnent le sens aux machines. Lorsqu’un réseau de neurone classifie des images de chat, chien ou d’ornithorynque, ce qu’il classifie en vrai ce sont des images de Truc1, Truc2 et Truc3. Le réseau n’a aucune idée de ce que cela signifie d’être un chat, un chien ou un ornithorynque. Il ne sait pas par exemple qu’ils marchent tous sur quatre pattes, que les chats et les chiens ont des oreilles externes mais pas l’ornithorynque, ou que le chien a des maître alors que le chat à des esclaves et que l’ornithorynque est la preuve que Dieu à le sens de l’humour. Toute cette information est quelque chose que l’humain ajoute à l’agent afin que l’algorithme puisse raisonner (si besoin) sur le fait qu’il ait reconnu un ornithorynque.

picture of a platypus

J’avais vraiment envie de caser une photo d’ornithorynque. Crédit: KlausFlickr: Wild Platypus 4

Donner du sens aux données, c’est le domaine de la Représentation des Connaissances et tous les domaines contenant le mot Sémantique (perception sémantique, cartographie sémantique…). Et croyez-moi, y a du boulot.

Inférence : n.f. Opération par laquelle on passe d’une assertion considérée comme vraie à une autre assertion au moyen d’un système de règles qui rend cette deuxième assertion également vraie.

Générer de la connaissance à partir des données, c’est fait. Deuxième étape : générer plus de connaissance à partir de faits connus. Et ça, c’est le domaine du raisonnement automatique. Il y a des dizaines de façons de faire du raisonnement automatique, et à peu près autant de domaines de recherche. Tout dépend du type de connaissance considéré et de quelle partie du système est importante. Du coup, vous pouvez compter sur les Raisonnement Spatio-Temporel si vous avez besoin de considérer la durée des évènements ou leur localisation dans l’espace, sur le Raisonnement sous Incertitude si vous ne connaissez pas tout de l’environnement, sur le Raisonnement par cas si vous avez besoin de résoudre un problème en utilisant des solutions à des problèmes précédents et similaires, ou sur le Raisonnement par Sens Commun si vous vous intéressez à comment un agent peut réagir à des situations relevant du sens commun humain. Et évidemment, je n’ai pas tout listé. Et vous savez la meilleure ? Chacun de ces domaines de recherche possède plusieurs sous-domaines de recherche ! Par exemple pendant un temps, j’ai travaillé sur le Raisonnement Probabiliste, qui est une sous-classe du Raisonnement sous Incertitude. Qui a dit qu’il n’y avait plus rien à faire en IA ? Personne ? Parfait ! Continuons.

De la connaissance à l’action : un peu de planification

OK, maintenant on est capable d’inférer des connaissances à partir de données et de nouvelles connaissances à partir d’anciennes. Cool, mais ça suffit pour pas mal d’applications10. Mais pour beaucoup d’autres, ça n’est pas assez. À un moment, on a besoin de planifier.

Qu’est ce que c’est que ça ?

Dans leur bouquin, Automated Planning11, Traverso, Ghallab et Nau12 définissent la planification de la façon suivante13 : “planifier, c’est raisonner à propos d’actions”.

Attend… quoi ? Planifier c’est raisonner ? Pourquoi on l’a pas mis dans la section d’avant du coup ? Oui, la planification est une forme de raisonnement vue qu’on infère de nouvelles connaissances (ici un ensemble d’actions à effectuer) à partir de connaissances précédentes (à propos de l’environnement, de l’agent lui-même…). Mais c’est un cas tellement particulier de raisonnement et englobant tellement de recherche que c’est pas mal de le traiter séparément.

Du coup, planifier est décider d’un ensemble d’actions à effectuer pour atteindre un but donné. Cet ensemble d’action est généralement représenté soit en tant que plan, soit en tant que politique. Un plan est une succession d’actions. En gros, c’est dire “d’abord tu fais A, ensuite B, ensuite C”. Il existe des plans conditionnels, où on dit “d’abord tu fais A, si X se produit tu fais B, sinon tu fais C”, mais, vous avez saisi l’idée, un plan c’est toujours une succession d’action. De l’autre côté, une politique, c’est un résumé de la meilleure action à effectuer dans un état donné. Donc une politique, ça dit “si le système est dans l’état X, tu fais A, s’il est dans l’état Y tu fais B et s’il est dans l’état Z tu fais C”. Mais ça ne dit pas si le système sera dans l’état Y ou Z après avoir fait A dans X.

Comme pour le raisonnement, le type de planification que vous allez choisir dépend de quelles hypothèses vous considérez. Il y a beaucoup d’hypothèses possibles, mais trois que je qualifierais de principales :

  1. Est-ce que vos actions sont déterministes ou stochastiques ? En gros, si vous effectuez plusieurs fois la même action A dans le même état X êtes-vous sûr·e d’arriver toujours dans l’état Y ? Si oui, alors vos actions sont déterministes et vous allez plutôt utiliser des techniques qui produisent des plans. Sinon, vous actions sont stochastiques et vous allez plutôt utiliser des techniques qui utilisent des politiques ou des plans conditionnels.
  2. Est-ce que vous connaissez exactement l’état de votre système ? Si à chaque instant, vous pouvez dire exactement que le système est dans l’état X/Y/Z, alors votre système est complètement observable. C’est le cas par exemple d’un agent qui joue aux échecs et qui connaît à l’état du plateau de jeu après chaque coup joué. Dans le cas contraire, votre système est dit partiellement observable. C’est le cas d’un agent qui joue à Tetris et ne connaît pas la pièce qui apparaîtra après la prochaine. C’est aussi le cas pour un robot qui peut percevoir le monde à travers de ses capteurs mais ne le perçoit jamais dans son entièreté.
  3. Est-ce que votre environnement est statique ou dynamique ? L’environnement est dit statique si seules vos actions peuvent changer son état. C’est le cas par exemple du jeu de carte solitaire. Si cet environnement peut changer sans que vous ayez effectué une quelconque action, alors il est dynamique. C’est le cas de jeux à deux joueurs comme les échecs, où l’environnement est considéré comme dynamique du point de vue de chaque agent à cause du second agent.

Du coup, maintenant, vous avez un agent capable de percevoir son environnement, raisonner pour obtenir de nouvelles connaissances et planifier ses futures actions. C’est cool hein?

Et l’apprentissage artificiel dans tout ça?

L’apprentissage artificiel est un sous-domaine de l’IA, de la même façon que la perception, le raisonnement ou la planification automatique. Mais c’est aussi un ensemble de techniques utilisées dans les domaines sus-nommés. Du coup, c’est à la fois un sujet d’étude et un outil pour d’autres sujets.

L’idée derrière l’apprentissage artificiel est de donner trente-six milles14 exemples d’un truc à un algorithme et de le laisser trouver comment faire quelque chose avec. Ce “quelque chose” dépend des buts données par le programmeur du système.

Disclaimer : c’est en grande partie faux de dire que “même les chercheurs ne comprennent pas l’apprentissage artificiel”. Le problème de l’apprentissage artificielle (mais qui fait aussi sa force) c’est qu’il est capable de trouver des solutions si complexes en prenant en compte tellement de données qu’un humain ne peut pas l’appréhender. Par contre, c’est toujours le designer du système qui donne le but à la machine ainsi que les actions qu’elle peut effectuer. Ce qu’il ne peut pas comprendre, c’est pourquoi l’algorithme affirme que sa solution est la solution correcte15 mais il sait ce que le système est supposé faire et ce qu’il peut utiliser pour le faire. Ça arrive que des algorithmes trouvent des solutions surprenantes et inattendues, mais le but du système est connu. Du coup, à partir de maintenant, prudence lorsque vous lisez dans les médias quelque chose du genre “Des robots inventent un nouveau langage sans être programmés pour !”. La vérité est souvent plus subtile.

Bref, revenons à nos moutons. Il existe trois types d’apprentissage artificiel: Apprentissage Supervisé, Apprentissage NonSupervisé et Apprentissage par Renforcement.

En Apprentissage Supervisé, on donne des tonnes d’exemples à un algorithme, par exemple des photos d’animaux. On lui donne aussi les étiquettes associées à chacune de ses images, par exemple “ça c’est un chat, ça c’est un chien, ça c’est un ornithorynque”. Et l’algorithme apprends à reconnaître ce qui, dans une image, différencie un chat d’un chien et d’un ornithorynque. Notez que comme je l’ai déjà écrit, l’algorithme n’a aucune idée de ce que cela signifie d’être un chat, un chien ou un ornithorynque. Il apprend juste à différencier les trois.

L’Apprentissage Non-Supervisé est utilisé pour détecter des motifs ou des tendances dans un ensemble de données, souvent si grand qu’un humain ne pourrait d’en occuper. En gros, vous donnez un gigantesque ensemble de données à votre algorithme et lui demandez “trouve quelque chose”. C’est parfait pour trouver des corrélations entre données qui semblent sans aucun lien. En revanche, comme toujours, le sens à donner à ces corrélations est à la charge de l’humain.

Enfin, l’Apprentissage par Renforcement permet à un agent de planifier sans aucun modèle a priori pour le système. C’est le genre d’apprentissage utilisé par AlphaGo et par les algorithmes capables de jouer aux jeux Atari. L’idée est que vous donnez un ensemble d’actions possibles à votre programme et le laisser tourner pendant un certain nombre d’épisodes, un épisode étant une succession d’actions, de changements dans l’environnement et de perceptions. À la fin de chaque épisode, vous donnez une récompense à votre agent, qui dépend de sa performance. L’algorithme derrière va adapter son comportement pour maximiser la récompense obtenue, et ainsi apprendre une bonne succession d’actions.

Et c’est tout ?

Absolument pas! Comme je l’ai  déjà mentionné, il y a des tonnes d’autres sous-domaines de l’IA qu’on n’a même pas encore envisagés. Juste quelques exemples: les Systèmes Multi-Agents (quand plusieurs agents agissent dans le même environnement), le Traitement Automatique des Langues, la Localisation et Cartographie Simultanées (quand un robot essaye de déterminer où il est et où aller… en même temps)… On va sans doute en parler un peu plus dans le futur.

Vous avez peut-être eu une idée déjà, mais l’IA, c’est gigantesque. C’est un domaine très large et très complexe, mais aussi très mal défini. Mais bon, pour l’instant, je pense que vous avez les bases pour suivre les futurs articles de ce blog. Mais si vous voulez plus d’info sur un sujet en particulier, je vous donne une liste de liens et de livres à considérer avec une petite étoile pour ceux que je recommande vraiment. Ils sont tous en anglais par contre, c’est assez dur de trouver de bonnes références en français. Mais restez un peu, ça vaut le coup!

Contenu additionel

Le saint Graal des bouquins généralistes sur l’IA : Russell and Norvig, Artificial Intelligence: A Modern Approach

La bible de la planification : Traverso, Ghallab and Nau,  Automated Planning: Theory and Practice

La bible de l’apprentissage par renforcement : Sutton, Barto and Bach, Reinforcement Learning: An Introduction, 2nd Edition.

Le cours de David Silver, de DeepMind sur Youtube. Excellente introduction à l’apprentissage par renforcement.

Le cours sur coursera d’Andrew Ng, très bonne introduction à l’Apprentissage Artificiel en général.

** Excellent article sur le raisonnement sens-commun et ses relations avec l’apprentissage artificiel sur WIRED

*** Présentation génialissime de Subbarao Kambhampati sur l’IA “human-aware”

Quelques autres très bon articles:

  1. Traduction de moi
  2. http://www-formal.stanford.edu/jmc/history/dartmouth/dartmouth.html
  3. qui ne s’appelle théorème que pour le chic car n’a rien d’un théorème du tout
  4. https://en.wikipedia.org/wiki/AI_effect
  5. On fera un autre article là-dessus, il y a beaucoup à dire
  6. On en parlera aussi!
  7. Inventé par moi
  8. En vrai il n’existe pas de terme français communément admis. En anglais, c’est embodied, et incarné me paraît une traduction raisonnable.
  9. Ou n’importe quelle autre créature sur Terre en fait
  10. Par exemple le comptage d’occupants dont j’ai déjà parlé ici
  11. La référence ultime en matière de planification
  12. Yep, en science on va souvent utiliser les noms de famille des auteurs. Ça paraît un peu bizarre au débat, mais on s’y fait vite. Ça arrive que je ne me rappelle plus du prénom des auteurs et que je me rende compte que l’auteur est un homme quand je croyais que c’était une femme et inversement.
  13. Traduction toujours de moi
  14. J’exagère… un peu… mais pas tant que ça en fait
  15. Même cette affirmation n’est pas complètement vraie, mais acceptons cette simplification pour le moment.
0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie 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.