Journal d'un terrien

Web log de Serge Boisse

On line depuis 1992 !

Recherche personnalisée

L'architecture logicielle d'une intelligence artificielle (IA) véritable

blue brain (IBM)Entre parenthèses, cette architecture est aussi celle de l'esprit humain...
Comme tout très gros projet informatique,  notre IA que j'appellerai HAL est structurée en une multitude de processus et de threads tournant sur des grappes de processeurs.  Néanmoins cette architecture matérielle n'est pas celle qui nous préoccupera ici. Dans cette page, nous allons discuter de l'architecture logicielle de HAL, et répondre à la question : comment concevoir un système intelligent ?

La réponse détaillée à cette question se trouve dans mon livre l'Esprit, l'IA et la Singularité. Je vais exposer ici certaines des idées contenues dans ce livre, cependant si vous voulez tout savoir je vous recommande de lire mon livre !

Architecture de base

La première chose est d'identifier le système et son environnement.  Il va de soi qu'une intelligence, qu'elle soit artificielle ou naturelle, doit pouvoir communiquer avec le monde extérieur.  Nous allons  donc munir HAL de capteurs et d'effecteurs, voire d'un corps robot (qui n'est nullement indispensable cependant). HAL récupère ses information via un système de modalité sensorielles et agit sur le monde via un système moteur/effecteur.  Oui, mais quel monde extérieur ?  Il peut s'agir d'un monde virtuel entièrement simulé, du monde réel ou d'une combinaison des deux (par exemple certaines modalités sensorielles auront accès à un environnement simulé, d'autres à l'environnement réel). Nous avons donc quatre systèmes de base :
Ici nous ne nous intéresseront qu'à HAL lui-même. De quoi est donc composé un système intelligent ?  De sous-systèmes et de services. Les sous-systèmes font des choses, les services constituent le substrat informatique qui leur permet de remplir leurs tâches.

Nous avons  cinq sous-systèmes de base, qui sont, faut-il le dire, extrêmement complexes :
Comment ces cinq sous systèmes communiquent-ils entre eux ?  le plus simple est de concevoir un service que j'ai appelé messagerie. La tâche de base de ce service est de véhiculer des objets appellés messages qui sont d'un type le plus général possible : ce sont tout simplement des phrases en français, dont certains mots peuvent être remplacés par des références vers des objets à l'intérieur d'un autre sous-système. Un exemple de message est "ceci: <référence vers un objet> est intéressant parce que: <référence à un autre objet>".
Il est tentant de définir des types (informatiques) de messages, mais je pense que ce n'est pas la bonne approche si nous voulons rester le plus général possible.  Le sous-système messagerie permet de sélectionner/rechercher des message ou évènements selon un ensemble de filtres analogues aux expression régulières mais beaucoup plus performant.  Il contient aussi un mécanisme d'abonnement qui permet à des modules de... s'abonner à des messages qui le concernent plus ou moins.

Naturellement nous auront besoin d'un autre service pour gérer les ressources, que j'ai appelé allocateur, et qui s'occupe de l'allocation des ressources (temps, processeur, etc) à différentes tâches, services ou agents.  L'allocateur s'occupe aussi de la gestion du temps : en effet dans un système basé sur un simulateur ou communiquant avec un simulateur, le temp peut être "réel" ou simulé, ralenti, accéléré, mis en pause, voire revenir en arrière, etc.  Un système temps réel classique utilise un grand nombre de timers, mais dans HAL ces timers sont particuliers car le temps utilisé n'est pas forcément le temps réel...

Agent, késako ? L'agent est une des entités de base de HAL, en effet les cinq sous-systèmes de base sont composés (entre autres) d'agents, et peuvent créer/supprimer/modifier des agents.  Pour communiquer entre eux les agents d'un même  sous-système n'ont pas besoin de passer par le service de messagerie, ils peuvent utiliser des appels de fonctions et des méthodes ; par contre entre différents sous-systèmes  ils utiliseront le service de messagerie qui "traduira" éventuellement ce que veut dire un sous-système pour que cela soit compréhensible par  un autre.

Une caractéristique importante de HAL est son aptitude à se reprogrammer.  Ce n'est pas fondamental pour créer une IA, mais c'est important pour créer une IA efficace.  La re-programmation fait appel à une modalité sensorielle particulière, le "sens du code".  Nous avons donc un service de reprogrammation qui sera capable de générer du code source selon certaines directives, de le compiler à la volée et de le lier à un module en cours d'exécution.

robot neurasteniqueUne autre caractéristique importante de HAL est son extrème évolutivité.  On commencera en effet "l'apprentissage" de la jeune IA en même temps que les programmeurs continueront de modifier/améliorer son code.  Sans compter son aptitude intrinsèque à l'auto-programmation.  Il y a donc de grandes chances pour que les interfaces entres modules et services soient très souvent modifées. Il va de soi que si l'on ne veut pas perdre toutes les connaissances acquises par notre IA à chaque modif de code ou de format de fichier, il va falloir un service de maintenance qui se charge automatiquement de créer les "moulinettes" qui permettront toujours aux tests de non-regressions (système TST) de fonctionner, et d'effectuer à la volée toutes les conversions de format et protocoles qui s'avéreraient nécessaires. Ce service est donc extrèmement complexe, informatiquement parlant.

Le concept de base est ici celui d'IA germe. Une IA germe est comme un bébé qui vient de nâitre, elle dispose de certaines compétences minimales mais elle n'est pas encore vraiment intelligente. Seulement, comme elle peut apprendre, ses compétences augmentent avec le temps, au début avec l'aide des programmeurs et instructeurs, puis progressivement avec la seule aide de ses instructeurs, l'IA se reprogrammant elle-même si nécessaire.

Enfin un service  important de HAl est le superviseur,  qui comme son nom l'indique surveille ce qui se passe et peut automatiquement prendre des décisions comme interrompre une tâche  dans le cas ou certaines limites fixées par le programmeur auraient été dépassés (temps, boucles...). Le superviseur est très lié au système TST, mais il peut aussi être autonome.

Les modalités sensorielles

On désigne par "modalité sensorielle" les "sens" qui permettent à un être vivant intelligent ou non, d'acquérir des informations sur le monde extérieur.  Les être humains disposent ainsi que sept modalités sensorielles (et non cinq !)
système visuelLeur rôle primaire est d'acquérir des informations de l'extérieur (monde réel ou simulé) et de construire des percepts,  qui sont des descriptions abstraites de ces "sensations". Mais toutes les modalités sensorielles fonctionnement aussi comme générateur, elles peuvent construire des modèles puis des percepts à partir de pseudo sensations qui leur sont données en entrées. Quand je pense à une orange bleue, je construit un percept d'orange puis je lui impose la couleur bleue, et je visualise aussitôt une orange bleue.  Il s'agit d'une capacité absolument fondamentale d'un esprit intelligent.

Les modalités sensorielles ont aussi un rôle de détection de phénomènes inhabituels, répétitifs, brusques, étranges, etc.  Enfin elles sont capables d'établir des analogies entre percepts.

Le modèle de base des modalités sensorielles est basé sur le système phaeaco de Harry Foundalis, lui même inspiré des architectures FARG de Douglas Hoftsadter. Je n'ai vraiment pas la place ici pour discuter en détail,  mais la notion d'analogie et de glissement perceptuel ou glissement de rôle est ici fondamentale.

En "sortie", les percepts intéressants sont communiqués au système concepts et aussi au système pensées (pour prendre en compte les évènements).

De quelles modalités sensorielles un système minimal d'IA germe devrait-il disposer ? Une interface en mode texte est evidemment indispensable, de même qu'une "vision" même limitée. Il ne peut à mon sens y avoir d'intelligence si l'esprit n'est pas à même de se "représenter" un graphe, et sans doute un "monde" même limité comme le fameux monde des blocs célèbre en IA "classique". Mais d'autres modalités sensorielles (plus ou moins faciles à implémenter sont probablement nécessaires ou souhaitables dans une IA germe :
Cette dernière  permet à HAL de comprendre et modifier du code informatique, y compris son propre code. Un rêve de programmeur !  Inutile de dire qu'il s'agit d'un composant extrèmement complexe. Je crois toutefois que l'on peut y arriver avec une démarche incrémentale dans un système tel que HAL parce que les autre modalités sensorielles sont à notre disposition pour comprendre le code.  Ainsi la modalité "graphe" pourra servir à HAl pour se "représenter" le graphe d'appel ou le flot d'instructions d'un programme... J'ai beaucoup réfléchi à ce sujet, mais je n'ai pas la place pour développer ici :-)

Une caractéristique étonnante de HAL par rapport aux êtres intelligents existants (nous !) est qu'il est possible de lui adjoindre à tout moment de nouvelles modalités sensorielles, ou de modifier celles existantes. On voit le rôle très important des services  maintenance et superviseur  pour faciliter la tâche des programmeurs lorsque cela se produit !

Les concepts

Le système concepts a pour rôle principal d'archiver des concepts intéressants et de les garder en mémoire permanente. Inversement, il fait le ménage en supprimant les concepts inutiles ou redondants. Il est utilisé bien sûr également pour faire des analogies entre concepts (demandées par le système "pensées" ou "délibération").  Il est également chargé de détecter des nouveaux concepts dans les percepts fournis par les modalités sensorielles et de cerner les degrés de variabilité possibles de ces concepts.  Enfin il peut être appelé par le système "pensées" pour "réifier" une pensée et en faire un nouveau concept.  On voit qu'il s'agit d'un système tout aussi compliqué que celui des modalités sensorielles (voire plus !)

le concept d'archeL'archétype de la structure informatique d'un concept est le réseau sémantique, tel que celui bien connu pour le concept d'arche dans le monde des blocs. Une autre représentation classique est celle des cadres (les frames de Minsky). Chaque concept possède ainsi une description abstraite, mais l'expérience de l'IA "classique" a montré que cette description est insuffisante.  Il est nécessaire de disposer d'un ou plusieurs exemples-types  et éventuellement de contre-exemples qui permettent de cerner les "limites" du concept. Et même cela n'est pas suffisant.

Afin de chercher les variations possibles d'un concept (une orange bleue, une ampoule triangulaire...),  le système concept peut faire appel aux modalités sensorielles pour "visualiser" le concept et en faire varier certains attributs.  Cela peut d'ailleurs donner naissance à de nouveaux concepts ou au contraire montrer qu'il ne s'agit que d'un cas particulier d'un concept plus général.

Un concept possède une utilité, qui est nécessaire pour la gestion de la mémoire des connaissances,  mais attention cette utilité est dynamique et probablement multiforme. Outre une certaine utilité intrinsèque (combien de fois le concept a-t-il été utilisé récemment ?) , il existe également une utilité dynamique par rapport aux pensées et aux buts courants. Il existe certainement d'autres types "d'utilité."

Je n'ai pas la place ici de parler des mécanismes de création des concepts, qui sont exposés dans mon livre.

Le nombre de concepts à gérer dans HAL est immense et se chiffre en millions, voire en centaines de millions.  L'esprit humain dispose d'une faculté impressionnante de compression de l'information, dont il faut absolument implémenter l'équivalent dans HAL.  Et justement, puisque nous savons, pour les nouveaux concepts, reconstruire "à la volée" leur description à partir de perceptions identifiées comme exemples ou contre-exemples,  il est donc inutile d'archiver ces descriptions, il suffit de conserver l'information sensorielle qui permettra de re-visualiser "intérieurement" ces exemples ultérieurement.

L'oubli des exemples est par ailleurs un mécanisme intéressant pour mieux cerner les limites d'un concept à partir des seuls exemples, c'est à dire sans contre-exemple.  Supposons que l'on ait un concept pour "une orange". Lorsque HAL verra pour la première fois une orange,  il créera une représentation pour cela, la visualisera grâce aux capacité génératives des modalités sensorielles,  et fera varier certains paramètres comme la couleur pour "voir" si cela ne peut pas se rattacher à un concept "voisin". C'est ainsi qu'il créera un concept pour une orange bleue. Mais comme il ne verra sans doute jamais d'orange bleue dans la nature et qu'il n' y pensera pas spontanément (nous verrons plus loin comment cela pourrait se produire),  cet exemple d'orange bleue sera rapidement oublié et donc l'attribut "couleur:orange" sera renforcé dans le concept d'orange "de base". De même pour une orange cubique.  grâce à l'oubli, le système apprend donc tout seul quels sont les attributs importants d'un concept !

Les pensées

Les pensées, dans HAL comme dans l'esprit humain, sont non verbales.  Elles pourront être verbalisées grâce à la modalité sensorielle "DC" (voir plus haut) mais à la base elles sont non verbales. Un chien qui tient un gros os dans sa gueule et qui "pense" à pencher la tête pour passer à travers les barreaux étroits d'une grille possède un niveau de pensée non verbal.  Que sont donc les pensées ?

test de PiagetLes pensées sont des arrangements de concepts selon une grammaire conceptuelle.  Elles servent à relier entre eux des concepts différents.  Je parle volontairement ici de grammaire parce que la structure informatique d'une pensée est semblable à un graphe d'analyse syntaxique ou sémantique, tels que ceux qui sont utilisés par l'IA "classique" dans l'analyse des langues naturelles, mais je le répète, les pensées sont non verbales. D'ailleurs les "feuilles" de ces arbres sont des concepts et non des mots.

A la différence des concepts les pensées ne sont pas (généralement) permanentes : Dans HAL elles ne sont pas archivées (généralement) sur disque, elles sont temporaires et sont fabriquées continuellement. Certaines pensées sont fabriquées suite à des "remarques" provenant du niveau des concepts, lorsque celui-ci "trouve" quelque chose de nouveau ; d'autres sont imposées par la niveau délibération, ce sont les pensées-buts. D'autres enfin arrivent à se frayer un chemin jusqu'à la conscience, mais nous verrons cela plus loin.  En règle générale, les pensées sont totalement inconscientes.

Les pensées sont issues de proto-pensées,  elles-même issues de générateurs de pensées.  Ces générateurs sont très nombreux, il fabriquent à chaque seconde des milliers de proto-pensées. C'est pourquoi, pour éviter d'encombrer la mémoire de travail d'un fatras de pensées inutiles, il existe des filtres à pensées, qui ne "retiennent" qu'un petit nombre d'entre elles.

Les générateurs de pensées sont très nombreux et très spécialisés.  D'ailleurs les programmeurs en ajouteront tous les jours ou presque.  Il y en a qui s'intéressent à ce qui est nouveau dans les percepts ou concepts, et générent une pensée : "tiens, c'est nouveaux, ça". Il y en en a qui cherchent des différences, oppositions, similitudes entre les concepts actifs et génèrent une pensée s'ils trouvent quelque chose. Il y en a qui cherchent dans les souvenirs (l'histoire des pensées conscientes passées), etc.  Les pensées peut-être les plus utiles proviennent de générateurs qui sont en relation avec le système de délibération (qu'on verra plus loin) et qui créent des pensées qui ont un rapport avec les buts courants.

A la différence des concepts qui sont "polymorphes", les pensées sont typées.  Certaines classes de pensées sont très importantes et même utilisées hors du système "pensées" proprement dit : il s'agit des idées et des buts.

Les filtres à pensées sont nécessaires précisément pour éviter de penser n'importe quoi. Quand nous pensons à un matériau pour une roue de vélo, nous pensons à un métal à, à la limite à du plastique ou du bois, mais pas à une roue de vélo faite en soupe au tapioca. Un filtre à pensée peut être lui-même un système très complexe. Pour éliminer le matériau "soupe au tapioca" pour notre roue de vélo, il faut s'imaginer une roue faite en soupe au tapioca et comprendre qu'elle se liquéfirait immédiatement et ne pourrait pas supporter le vélo (comme tout matériau plus ou moins liquide d'ailleurs). Cela fait donc appel au niveau des concepts qui va appeler celui des modalités sensorielles, etc.  Certaines proto-pensées seront aussi éliminées parce qu'elles ne semble pas "résonner" avec les buts courants du niveau délibération et avec les pensées conscientes courantes.  Ce dernier mécanisme est d'ailleurs le prototype du mécanisme d'attention qui est si important pour la conscience (on verra ça plus loin).

La délibération

bébé avec une cuiller et un bolLes agents de ce niveau s'intéressent aux (proto)pensées qui font quelque chose, ou qui ont pour but de planifier des actions (lesquelles actions sont aussi bien de "vraies actions" que des actions purement mentales : plans, stratégies de résolution de problèmes, etc.) Les concepts centraux du niveau délibération sont en effet des buts et des sous-buts.

Attention, ici encore il faut comprendre que les buts dont je vous parle sont tous (encore) inconscients.  Comment pouvons-nous avoir des buts inconscients ? Voici un exemple frappant : le phénomène de chatouille. Vous avez remarqué que lorsque vous vous chatouillez-vous-même, l'effet est beaucoup moins fort que si c'est une autre personne qui vous chatouille. Pourquoi ? Parce qu'il existe dans notre cerveau un processus remarquable qui prédit les conséquences de nos mouvements et en particulier qui prédit les sensations que causerons nos membres s'il viennent à toucher des parties de notre corps. A quoi sert ce mécanisme ? C'est un mécanisme de défense qui provient de nos lointaines origines animales : si quelque chose nous touche, qui n'est pas le fait de nos propres actions, il est extrèmement important que nos en soyons averti, afin de fuir ou d'attaquer l'agresseur.  Et lorsque quelqu'un d'autre nous chatouille, ce mécanisme est activé !

Quel rapport avec les buts ? Ici notre cerveau avait besoin de prédire une conséquence de quelque chose. Or qui dit besoin de prédire dit but.  Pour chacune de nos actions motrices, un but "prédire les conséquences sensorielles de ce mouvement" est inconsciemment engendré !

Qu'est ce qu'un but ? La notion centrale est celle de séquence d'action.  Un but vise toujours à imaginer les conséquences d'une séquence d'actions, ou à provoquer ou à éviter une séquence d'actions. Le système de délibération contient donc un module de planification, qui peut être amené à décomposer des buts en sous-buts, etc. Ces processus sont bien connus en informatique et comme chacun sait on se heurte à l'explosion combinatoire. Dans HAL cependant, les étapes d'une séquence de buts peuvent être traduits en concepts, visualisés, et traités par analogie avec d'autres buts ayant réussi (ou échoué) dans le passé. A la différence de ce qui se passe dans un système de planification classique, le niveau "délibération" de HAL n'est pas tout seul et peut profiter de toute la puissance des autres sous-systèmes !

Comme pour les pensées, il existe dans HAL de nombreux générateurs de buts indépendants ainsi que des filtres à buts (les buts sont d'ailleurs un type particulier de pensée)

Certains buts proviennent du niveau "conscience", d'autre sont engendrés par des générateurs de pensées du type "et si..." ou "pourquoi pas...", ou "chercher les ressemblances (ou les différences)" etc...

La conscience

PlatonLa conscience : Les quatre niveaux précédents sont tous des niveaux "inconscients". En réalité, la conscience contient un filtre à pensée, qui évalue l'intérêt des pensées par rapport à des buts, et qui sélectionne six ou sept idées, pas plus, qui vont être analysées en profondeur à ce niveau.  Ce filtre à pensée particulier qui fait le "gardien" à l'entrée de la conscience utilise  un mécanisme remarquable appelé l'attention.
 
Lorsqu'une pensée est sélectionnée pour faire partie du groupe des "élus", elle devient consciente, tout simplement parce qu'elle est traitée par les agents du niveau "conscience".  Pour accomplir sa tâche, les agents de ce niveau font appel aux émotions, qui sont des concepts assez spéciaux et internes à la conscience, et également à un agent (très) spécial qui s'appelle "le moi".

Les émotions sont des types particulier de pensées qui peuvent agir  simultanément sur un grand nombre de concepts, buts et pensées, et aussi collecter simultanément les informations fournies par ces derniers.  Elles  sont utiles pour déterminer les "centres d'intérets" du mécanisme d'attention. La conscience est une sorte de mini cerveau qui posséde son propre système sensoriel (qui traite les émotions et les pensées retenues par le système d'attention), ses propres concepts, pensées et buts.  Là encore,  je n'ai pas la place ici de développer ce qui tient dans tout un chapitre de mon livre.

Synthèse

proteine quaternaireFinalement, l'intelligence consciente est une qualité émergente de tout système, vivant ou arttificiel, qui possède l'architecture que je viens de décrire. Il va de soi qu'il s'agit d'un système immense, complexe et forcément difficile à mettre au point.  Cepandant il n'est pas nécessaire de tout coder en même temps, un développement incrémental est parfaitement possible  puisque les interfaces entre les différents sous-systèmes et modules sont bien définies. C'est pourquoi j'affirme que la réalisation d'un système informatique intelligent et conscient n'est plus un problème philosophique, mais bien bien problème technique.

Et ce cernier peut être résolu en y investissant une centaine d'homme-années. Ce n'est pas si énorme. beaucoup de systèmes informatiques bien plus gros  (mais bien moins intelligents) ont déja été réalisés ! Vingt ingénieurs pendant cinq ans, et le tour est joué. Je suis sûr que le smilitaires américains ont déjà commencé le développement.  Alors, nous, qu'est-ce qu'on attend ?


Home Mes livres Mes tableaux Plan du site

Partagez / votez pour cette page :

Journal d'un terrien

Commentaires (4) :

Page : [1] 

Serge Boisse
Le 05/07/2015 à 13h47
Pour Curieux: Je vous suggère de vous renseigner sur le domaine de recherche que l'on appelle "vision artificielle". vous mesurerez alors la complexité de ce qui n'est pourtant qu'un petit bout de modalité sensorielle, qui elle-même n'est qu'un petit bout d'une IA...
curieux
Le 02/07/2015 à 19h09
Existe t-il actuellement un systeme de percepts visuel qui permettrait donc de filmer un endroit (2D) puis de reconstituer cet endroit en 3D ? De plus si on ajoute à ce decor fixe des objets en mouvement cela devient vite tres compliqué :(
curieux
Le 02/07/2015 à 00h48
Au niveau des percepts il est écrit :



<< Leur rôle primaire est d'acquérir des informations de l'extérieur (monde réel ou simulé) et de construire des percepts, qui sont des descriptions abstraites de ces sensations >>



On peut considérer que ce système sert simplement à transformer une image 2D (ce que nos yeux voient) en une image 3D (ce que nous nous représentons et ce à partir de quoi nous pensons).



Dans ce cas le système doit pouvoir suggérer ce qui se trouve là où l'on ne voit rien. Par exemple si je regarde un arbre je ne sais pas ce qu'il y a derrière. Je dois donc imaginer ce qui est le plus probable de se trouver derrière compte tenu de la situation. Et donc je dois faire appel à ma mémoire et à ma raison, ce qui dépasse le simple système des percepts.



Ou peut être que le système de percepts ne s'occupe que de ce qui est visible et laisse les couches plus hautes se débrouiller pour le reste ?
Hodawa
Le 04/07/2013 à 19h53
Merci Serge pour les infos que tu partages avec nous.



Je suis ingénieur d'études et m'intéresse à l'IA. Je vais commander ton livre et j'aimerais participer à ton projet :)


Ajouter un commentaire (pas besoin de s'enregistrer)

Pseudo :
Message :


image de protection
En cliquant sur le bouton "Envoyer" vous acceptez les conditions suivantes : Ne pas poster de message injurieux, obscène ou contraire à la loi, ni de liens vers de tels sites. Respecter la "netiquette", ne pas usurper le pseudo d'une autre personne, respecter les posts fait par les autres. L'auteur du site se réserve le droit de supprimer un ou plusieurs posts à tout moment. Merci !
Ah oui : le html genre <a href=...>, <b>b etc. ne fonctionne pas dans les commentaires. C'est voulu.
< Retour en haut de la page