L’expérience sensori-motrice : le robot insectoïde

Ay. Poulain Maubant
46 min readNov 13, 2015

--

Prolégomènes. On parle beaucoup d’algorithmes, ces derniers temps, sans que l’on sache bien toujours de quoi il s’agit. Un récent ouvrage de Dominique Cardon en fait cependant un tour assez précis : “À quoi rêvent les algorithmes — nos vies à l’heure des big data”.
Une des questions qui se posent est la suivante : est-ce que le concepteur d’un algorithme peut connaître à l’avance absolument tous les effets que le système qui supporte son algorithme va avoir sur l’environnement dans lequel il agit ? En réalité, plus l’algorithme est complexe et moins cela est possible. Et ceci peut entraîner des conséquences inattendues, plus ou moins graves, sur le système lui-même et son environnement. J’ai écrit un texte là-dessus à l’occasion du projet Loi de Renseignement en France.
Le (long) texte ci-dessous fait partie d’une série plus large et toujours en cours de publication (je l’explique plus bas). J’ai fait une thèse en Sciences Cognitives il y a 20 ans, et j’y ai découvert des choses intéressantes. L’une d’entre elles a été la suivante : il était possible d’obtenir une (même plusieurs, en l’occurrence) propriété émergente d’un algorithme qui n’avait pas été codée explicitement dans l’algorithme. Cet exemple est celui d’un robot à 6 pattes, disposant de connaissances sur son environnement sous formes de règles physiques, et d’un réseau de neurones artificiel entre ses pattes (et sa vision élémentaire) qui soit le plus proche de ce que l’on sait de la neurobiologie de la marche des insectes à 6 pattes, à qui l’on donne un but (aller à tel endroit). Il y avait un algorithme, celui qui consistait à faire circuler des influx neuronaux entre les pattes, la vision, et les capteurs de l’environnement et procéder à des apprentissages en fonction de la conservation de l’équilibre et le rapprochement du but. Et de cet algorithme général, dans lequel jamais l’algorithme de la marche (mettre un pied devant l’autre dans un certain ordre et avec une certaine amplitude) n’avait été explicitement codé, la marche la plus efficace pour une bestiole à 6 pattes a émergé systématiquement et durablement, parmi l’ensemble des démarches que le système laissé à lui-même a essayées.
De ce moment, j’ai considéré que dans tout algorithme un peu élaboré pouvait se trouver, dans ses interstices, un algorithme plus fin, plus évolué, qui émergerait avec le temps.
Bonne lecture !
(publié le vendredi 13 novembre 2015)

Ce texte est le chapitre VII de ma thèse soutenue le 13 novembre 1995 sur l’Hybridation en Sciences Cognitives. Je la publie pour pouvoir la réactualiser avec l’aides des lecteurs. Découvrez pourquoi et comment dans cet autre document, puis bonne lecture…

Et je publie ce texte 20 ans plus tard, jour pour jour.

Notes de lecture et éléments de vocabulaire.

Le but de ma thèse était de réunir deux courants de l’Intelligence Artificielle qui s’étaient séparées des dizaines d’année plus tôt, et de développer des nouveaux systèmes, hybrides, sur une machine parallèle très avancée pour l’époque, à base de transputers, FPGA et DSP (la machine ArMenX).

Plusieurs types d’hybridation entre les systèmes experts (des règles de type si…alors, qu’on appelle systèmes symboliques car ils manipulent des symboles : si il pleut, alors prendre parapluie) et des réseaux de neurones (dits aussi subsymboliques) sont possibles. Ils sont expliqués dans un autre chapitre de la thèse, et on parle d’hybridation cognitive forte quand le concepteur du système hybride en question (je le nomme neuroticien) prend une part active dans le développement du système hybride : il en définit la structure, sa construction au cours de son apprentissage, les problèmes qu’il lui pose, l’environnement dans lequel il le plonge, et la manière dont il guide son évolution.

Les réseaux de neurones utilisés mettaient en œuvre une technique d’apprentissage très employé : la rétropropagation du gradient. En deux mots, le gradient est comme une petite unité d’information dérivée d’une connaissance que l’on observe à la sortie d’un réseau de neurones. Cette connaissance est une valeur que le réseau exprime, et qui doit à la fin de l’apprentissage correspondre à ce qu’on souhaite lui voir apprendre (par exemple, un réseau de neurones à 10 sorties devra dire 0, 1… ou 9 quand on lui présente en entrée (une entrée constituée de 16x16 neurones pour 256 pixels) une image d’un chiffre manuscrit). Toute l’astuce de l’apprentissage consiste à propager de la sortie vers l’entrée du réseau de neurones ce fameux gradient en le distribuant sur les poids synaptiques des liaisons entre les neurones, qui se modifient donc à chaque passage d’un motif à apprendre. Il y a de jolies formules mathématiques pas très compliquées, mais gourmandes en temps de calcul, d’où l’intérêt de paralléliser toutes ses opérations quand on le peut. Et j’étais allé très loin sur ces formes de parallélisation. Qui pourraient être particulièrement utiles aujourd’hui où l’on manipule des réseaux avec des milliers de neurones sur des dizaines de couches.

Un autre terme utilisé quelques fois ci-dessous : l’époque. Il s’agit d’une séquence continue d’apprentissage, comportant au moins le nombre total de classes d’exemples qu’un réseau de neurones doit séparer. Par exemple l’apprentissage des chiffres manuscrits arabes implique des époques de 10 motifs à apprendre, au minimum. Un grand nombre d’époques forme une sessions d’apprentissage, suivies parfois de sessions de test (on vérifie si l’apprentissage s’est bien déroulé, en testant le réseau de neurones sur un ensemble de motifs jamais rencontrés encore).

Pour une lecture rapide de ce texte (si seulement cette histoire de propriété émergente dans un algorithme vous intéresse), faites un fast forward du début en ralentissant à chaque figure, histoire de savoir de quoi on parle, et filez sur la partie “Les résultats de l’expérience” à la fin. Si vous êtes étudiant en sciences cognitives, avez du temps, êtes de ma famille, avez fait la lecture rapide et vous êtes retrouvé.e passionné.e.s, élevez des fourmis ou souhaitez explorer Mars sur le dos d’un robot hexapode, prenez le temps de tout lire.

Toutes les références bibliographiques de ce chapitre ne sont pas incluses ci-dessous, pour alléger le texte. De même, quelques sections ont été omises, c’est déjà assez long comme cela. Que le lecteur sache que cette thèse est disponible dans sa totalité en PDF. Il y a des notes dans le corps du texte, qui commencent par Nd2015, ou des notes plus longues qui ont la forme de celle que vous êtes en train de finir de lire.

Nous abordons dans ce chapitre la partie de notre thèse consacrée à l’effectuation de l’hybridation (Nd2015: lire cette courte introduction à l’hybridation en sciences cognitives, telle que nous en parlions en 1995). Nous avons cherché une application qui nous permette la mise en œuvre de l’hybridation technologique et cognitive forte.

Pour des raisons de facilité de communication avec le lecteur, et compte-tenu du domaine d’application, qui s’y prête bien, nous n’avons pas hésité à employer dans ce chapitre des expressions anthropomorphes. Pour éviter d’alourdir le texte, ces expressions ne sont pas mises en gras ou en italique. Nous précisons aussi dans cet avant-propos que “l’énergie véhiculée dans les réseaux” n’est pas une vision Freudienne du fonctionnement neuronal. Il s’agit simplement de traduire le fait que, vu les algorithmes utilisés, la force des activations émises par un neurone n’est pas sans conséquences. Un neurone qui émet de petites valeurs ne pourra pas espérer voir ses poids synaptiques bouger fortement.

Cadre du travail

Convaincus que les différentes théories présentées au chapitre 2 (Nd2015: chapitre pas encore sur Medium) étaient à même d’apporter un nouveau souffle à la notion d’hybridation, nous avons cherché un domaine d’application où il serait possible d’expérimenter certaines de nos idées. Nous avions besoin d’un domaine ayant les qualités suivantes :

  • Domaine pour lequel le neuroticien possède une expertise minimale.
  • Domaine pour lequel il est possible de définir quelques règles simples le décrivant, et non pas une large base de règles.
  • Problème déjà résolu (de manière à comparer les performances de notre solution à celles déjà proposées).
  • Problème mettant en jeu les sens et le corps.
  • Problème suffisamment complexe pour ne pas être trivial, mais pas trop, pour ne pas dissimuler des difficultés sans rapport avec notre besoin.

Un robot insectoïde apprenant à marcher, puis à se diriger dans un environnement donné nous a paru réunir ces critères.

Et en plus, c’était marrant et on était en pleine préparation de l’exploration martienne, donc plusieurs équipes étaient sur le coup.

Buts poursuivis

Faire en sorte que des robots insectoïdes marchent correctement est un problème déjà résolu, à des échelles différentes, selon des paradigmes différents, et de manière simulée ou réelle. Notre but n’est donc pas de proposer une nouvelle façon de marcher, ou d’apprendre à marcher. En revanche, donner la possibilité à un robot de bouger ses articulations par l’intermédiaire de circuits neuronaux totalement libres de s’activer, et guider leur activation dans un cadre strict de règles du jeu de la marche, en espérant que la meilleure démarche possible finisse par être adoptée, n’a jamais été essayé à notre connaissance.

Le robot : une plate-forme d’essai. Le but de l’étude qui fait l’objet de ce chapitre est principalement de tester quelques-unes des idées présentées dans les deux premières parties. Le robot a suivi un processus constructiviste : au fur et à mesure des (non-)résultats rencontrés, sa structure interne a été modifiée, ainsi que quelques parties d’algorithmes. Ces modifications en cours de construction (alors que le neuroticien commence à se faire une idée du fonctionnement de l’artefact qu’il construit) seront discutées [plus loin]. Dans le même temps, nous avons noté une série de méthodes et principes utiles pour développer des systèmes artificiels selon le paradigme de l’hybridation. Cette collection de principes et méthodes, appelée saphir, fait l’objet du chapitre suivant. Le robot (baptisé Arcandie) était un prétexte pour développer un début d’expertise en hybridation.

Comme nous le verrons plus loin, le robot n’a pas pu être réalisé. La machine ArMenX (Nd2015: une machine hautement parallèle, fabuleuse à l’époque) n’est pas non plus impliquée pour supporter le système hybride. En revanche, le code utilisé émule les principes de programmation de la machine, et le portage vers cette machine, pour piloter en temps réel un véritable robot, ne devrait pas être insurmontable. Le chapitre [sur l’apprentissage de la lecture] présente un système hybride réalisé sur la machine.

Une autre partie de la thèse s’est intéressée à la reconnaissance des chiffres manuscrits, avec des résultats excellents dès lors que j’ai introduit, pour résoudre les chiffres les plus difficiles à lire, l’apprentissage de l’écriture en plus de celui de la lecture. Oui, le même système symboliconnexionniste, comme on disait, a appris non seulement à lire les chiffres, mais à les écrire, ce qui a renforcé ses compétences en lecture. Astucieux, non ? Petit détail, certaines de ces séquences d’apprentissage correspondaient à des séquences de rêve, mais c’est l’objet d’un autre chapitre.
Gourmand en calcul, ce système tournait sur cette fameuse machine parallèle permettant de nombreux types de parallélisme.
Mais retournons à notre fourmi Arcandie.

Originalité de l’approche choisie. La particularité de notre approche est que nous n’avons pas obligation de résultat. Nous donnons au robot des capacités motrices et nous le laissons s’exercer à les utiliser, dans le cadre de quelques lois simples définissant des contraintes physiques, des réflexes et un but. De même, nous lui donnons des capacités visuelles et le laissons s’exercer à les utiliser en même temps qu’il explore son environnement selon la démarche qu’il a adoptée. Nous donnons une règle supplémentaire qui lui permet d’avoir un réflexe simple de recul au contact d’un obstacle. L’activation des différentes règles et celles du matériel neuronal permet l’apparition de comportements qui n’ont pas été explicitement programmés. Ces nouveaux comportements peuvent être ajoutés à la base de règles initiales et utilisés quand le contexte environnemental le nécessite.

Une autre originalité est que le robot “s’éduque” lui-même par l’intermédiaire des actions qu’il effectue sur l’environnement. Dès qu’il est lâché dans son environnement, aucune supervisation en provenance du concepteur n’intervient. C’est ainsi que les exemples de position des “pattes” du robot sont produits par lui-même : il n’existe pas de base d’exemples de positions, associés à d’autres positions désirées. Au contraire, les positions possibles apparaissent au hasard au cours des premiers tâtonnements, et sont jugées suivant les valeurs inscrites au sein de certaines règles de base.

Pourquoi un robot insectoïde ? Nous avons choisi d’étudier un robot à six pattes plutôt que deux ou quatre, ou plutôt qu’un robot roulant, pour avoir un problème ni trop compliqué ni trop trivial. Pour la marche sur deux membres, il n’existe qu’une démarche possible (une jambe après l’autre, si on veut ne serait-ce que bouger), qui ne peut donc émerger réellement. La marche sur quatre membres permet plus de combinaisons, mais une seule démarche permet d’avancer (les autres font bouger, mais rien d’autre). En revanche, si on simule totalement l’équilibre du robot, ou si on a affaire à un vrai robot, plusieurs allures (marche, trot, galop) peuvent apparaître. Seule la marche à six pattes permet l’existence d’un répertoire de plusieurs démarches possibles dans le cadre de notre simulation, pour laquelle le robot est dit déséquilibré dès que son centre de gravité sort du polygone de sustentation. De ces différentes démarches possibles, seule une (la démarche en tripode) est efficace.

Si on nomme les pattes g1 d1, g2 d2, g3 d3, avec g pour gauche et d pour… droite, et 1 les pattes avant, 3 les pattes arrières et… 2 celles qui restent, la démarche en tripode consiste à lever (puis avancer, puis poser) les pattes g1, d2, g3 pendant que les autres restent au sol, et à faire de même avec les pattes d1, g2, d3 restées en arrière…

Enfin, un robot roulant ne nécessitait pas l’ensemble de paramètres à maîtriser que la marche exige. Nous n’avons pas trouvé de base de règles du jeu à mettre en contact avec les capacités motrices d’une machine roulante. Une autre raison justifiant la non-utilisation d’un robot roulant est donnée dans la section suivante.

Travaux connexes

L’intérêt principal des robots insectoïdes provient du fait qu’ils peuvent explorer 90% de la surface terrestre, en restant économiques et écologiques, ce qu’un robot roulant ne sait pas faire. L’industrie de l’exploration spatiale, en particulier les projets de bases permanentes sur la Lune, ou d’exploration de Mars, a fortement contribué à la nécessité de créer de tels artefacts. Les études sur l’intelligence collective ne sont pas non plus étrangères à ce besoin.
De nombreux travaux sur la robotique et l’intelligence artificielle sont entrepris dans la communauté des sciences cognitives. Nous regardons brièvement trois approches différentes de la démarche en tripode.

L’école de Brooks. Il ne serait pas possible de présenter des travaux d’Intelligence Artificielle (IA) appliquée à la robotique sans mentionner les générations de robots produits par Rodney Brooks et son équipe au MIT. Plusieurs robots de tailles et de conceptions différentes ont été construits, dont certains à six pattes, comme Attila et Genghis ; des recherches sont actuellement menées pour concevoir des mécaniques résistantes, peu encombrantes, et donnant le maximum de degrés de liberté aux pattes (à l’heure actuelle, la majorité des robots insectoïdes ne permettent aux pattes que d’aller d’avant en arrière).

Les robots sont développés selon la subsumption architecture, et programmés à l’aide d’un langage. La subsumption architecture est une vision modulaire de l’acquisition des comportements. Elle est constamment mise au contact de la réalité, pour assurer la validation écologique. Elle repose sur l’observation que les animaux n’ont pas acquis leurs comportements complexes à partir de rien, mais par le biais de l’évolution et de l’accumulation de comportements plus simples.

La subsumption architecture consiste donc à assembler de manière incrémentale des modules de comportements simples (comme “lever une patte”, la “balancer d’un certain angle”), qui sont des pièces de non moins simples (constitués d’un CPU, d’une horloge, de registres et de canaux de communication en entrée et en sortie).

Les comportements proposés par les modules peuvent être inhibés par d’autres, ce qui peut donner une impression de réseau de modules, à la neuronale. D’un autre côté, la possibilité de programmer (grâce au behavior language) les interactions des différents modules, donne une forte composante symbolique à cette approche.

Les travaux de l’équipe de Brooks sont bien considérés par la communauté Animat. Ils ont en effet permis l’obtention de robots capables d’interagir avec leur environnement, et d’établir la boucle indispensable entre perception et action. De tels robots acquièrent leur autonomie de manière constructiviste, grâce à l’action et l’expérience.

Démarche par réseaux de neurones. Une approche de la démarche en tripode purement neuronale est proposée dans [Couturier et.al., 1994]. Les auteurs ont choisi le robot hexapode pour s’affranchir des problèmes posés par la gestion de l’équilibre d’un robot possédant moins de pattes. Le robot est réalisé effectivement ; une grande part de l’étude a été consacrée à la faisabilité de ce robot.

Les actions possibles des pattes sont limitées : soit la poussée vers l’arrière, soit la séquence “lever la patte, l’avancer et la reposer”. Les actions des pattes sont commandées par un neurone binaire (un par patte), prenant en entrée les positions des six pattes. Le réseau neuronal est donc très simple, reflétant les caractéristiques mécaniques assez pauvres du robot.

L’apprentissage est effectué par renforcement : récompenses ou pénalités en provenance de l’environnement, selon que les mouvements produits préservent ou non l’équilibre du robot.

Contrairement à notre robot, la démarche en tripode est en réalité codée explicitement dans les choix de la structure neuronale. L’apprentissage ne fait que conduire naturellement vers l’unique motif de sortie possible, et le fait d’ailleurs assez rapidement (une quarantaine d’époques). Ce “codage explicite” est dû au fait que les actions possibles des pattes sont significatives dès le début. À l’orée de l’apprentissage, le robot commence déjà à avancer ou reculer ses pattes, tandis que pour nous, les mouvements horizontaux des pattes (et les valeurs de décalages horizontaux) sont indépendants des mouvements verticaux, et nécessitent d’être corrélés (via l’environnement) avant de permettre l’émergence de la démarche.

Démarche par algorithmes génétiques. La dernière approche que nous désirons présenter consiste à résoudre le problème de la marche à l’aide d’algorithmes génétiques. Ces algorithmes agissent sur des réseaux de neurones, suivant le schéma GenNet, de Hugo de Garis. Le robot Lizzy possède 4 pattes et deux antennes, et un certain nombre de neurones.

Les poids synaptiques subissent un processus d’évolution grâce à des techniques génétiques, de manière à ce qu’un répertoire de comportements allant de la simple marche à la marche avec but (par exemple pour trouver une proie ou un compagnon, ou fuir un prédateur) émerge.

L’ensemble des comportements possibles est fondé sur 3 mouvements simples : marcher droit devant, tourner à droite et tourner à gauche. Les mécanismes génétiques GenNet sont organisés hiérarchiquement en modules : les modules les plus récents (et de plus haut niveau) contrôlant les modules de plus bas niveau ayant déjà subit le processus d’évolution. Nous retrouverons cette vision modulaire des choses avec notre robot […].

Simulation

Comme nous n’avons pas pu faire la validation écologique de notre robot, nous allons à présent discuter de la justesse de notre simulation.

Une simulation a ses limitations

Simuler n’est jamais suffisant. Le principal problème est la prise en compte de l’incertitude. Dans un monde simulé, il est rare que du bruit soit introduit dans les données sensorielles et que les événements soient brouillés. C’est quasiment impossible si toutes les interactions avec le monde et tous les événements sont codés de manière symbolique. C’est déjà plus facile avec la logique floue ou les réseaux de neurones (deux paradigmes qui ont des équivalences), mais il n’est pas certain que le bruit introduit, ou les intervalles flous, reflètent correctement la réalité.

En robotique, un problème difficile est de bien refléter les possibilités techniques : certaines forces et frictions sont rapidement oubliées, ou alors les aspects techniques des senseurs sont surestimés. Enfin, dans le monde réel, toute une série de données peuvent interférer avec ce que l’on veut étudier (Nous avons d’ailleurs fait les frais d’une telle mésaventure il y a quelques années. Nous avons étudié un bras de robot terminé par une pince. Le contrôle des articulations s’effectuait grâce à une couronne alternativement noire et blanche, centrée sur l’articulation, et défilant devant une cellule photo-électrique. Tout marchait bien jusqu’à ce que quelqu’un ait l’idée saugrenue d’ouvrir en grand les rideaux du laboratoire, changeant ainsi l’éclairage de la pièce, et brouillant du même coup le travail de la cellule (ce que nous n’avons compris que bien plus tard, en apprenant que d’autres étudiants avaient déjà eu cette aventure, en soutenance !)) ; des événements peuvent se produire qui n’ont aucune liaison avec l’apprentissage en cours, mais qui peuvent fortement le perturber.

Dans ce dernier cas, le caractère isolé d’un modèle simulé peut être une force. Il existe ainsi des robots qui ont une contrepartie simulée. La simulation s’effectue dans un environnement “propre” et stable et permet de tirer quelques enseignements. Ceux-ci sont alors reportés sur le véritable robot qui rencontre de nouveaux problèmes. L’avantage est que l’on sait que ces problèmes n’existaient pas dans la simulation : on peut donc les isoler plus facilement. Quand on les a débusqués, on peut les reporter dans la simulation, qui s’enrichit. On effectue comme cela un va-et-vient entre le robot réel et sa simulation, permettant à cette dernière, plus économique, d’être de plus en plus réaliste.

C’est pas une super idée, ça ? Un robot réel couplé à un robot virtuel ? Si.

Déroulement de la simulation

Que simule-t-on vraiment ? Dans notre simulation, nous avons essayé de séparer l’aspect de réalisme de celui de “réalisabilité” : nous n’étions pas intéressés par la construction effective d’un robot marcheur, mais par la manière dont les structures cognitives supportant les capacités d’un tel robot pouvaient être construites. C’est pourquoi le monde dans lequel le robot évolue est plat et quasiment vide, car ce n’est pas la complexité du monde qui est importante. De même, les mécanismes des articulations sont simples, car la complexité d’une jambe à trois joints n’aurait rien apporté de plus au processus de la marche (sur terrain plat) que nous désirions découvrir.

Nous n’avons même pas besoin de savoir si un monde réel correspond à notre monde simulé. À la limite, c’est une pure coïncidence si une telle correspondance peut exister. Nous devrions considérer le domaine du problème de notre robot comme se suffisant lui-même, sans référence à quelque chose de connu. Dans ce cas, la seule chose qui importe est que notre système artificiel construit selon le paradigme de l’hybridation exhibe des capacités non prévues au départ et présentant une efficacité certaine ; c’est le but que nous nous sommes fixés au début de ce chapitre.

Cela n’empêche évidemment pas, puisque notre plate-forme d’exploration de l’hybridation peut se projeter dans une application réelle, de discuter de la validation écologique de notre modèle. Nous n’avons malheureusement pas pu obtenir à temps un robot hexapode pour tester notre système hybride.

Nous estimons cependant que les structures hybrides de base seraient les mêmes pour un vrai robot. La simulation est telle (la position d’une patte est repérée dans un espace à trois dimensions, alors qu’il existe encore des robots hexapodes dont les pattes n’ont qu’un degré de liberté) que, pourvu que l’on puisse relier la topologie de notre modèle aux mécanismes du vrai robot, l’apprentissage effectué en simulation serait directement valable en situation réelle. En utilisant les principes et les méthodes employées pour la simulation, il ne resterait qu’à écrire les lois traduisant les spécificités du vrai robot et de son environnement réel, pour permettre à notre système hybride de s’adapter à la réalité.

Il est aussi envisageable de construire un robot répondant exactement aux spécificités de notre robot simulé, car, comme nous le verrons dans ce chapitre, la mécanique et les senseurs utilisés ne sont pas hors de portée. Un tel robot pourrait alors être relié par radio à ArMenX, qui prendrait en charge les algorithmes hybrides.

Tout cela est réalisable à présent, dans un fablab…

Simulation graphique. De manière à être parlante, la simulation du robot est graphique. Le domaine de notre problème s’y prête bien, et il est possible de voir rapidement pourquoi le robot ne fait pas ce qu’on désire (utile pour le debuggage), puis, quand l’application fonctionne, de porter un jugement sur son efficacité.

[…dans le texte original se trouve une figure de l’algorithme gros grain de la simulation en pseudocode, discuté ci-dessous…]

La simulation est faite sous X-window. Elle représente le robot vu de dessus , évoluant parmi des obstacles. Le champ d’obstacles calculé au sein du module de la vision est aussi disponible. Le fichier de paramètres lu en début de simulation permet de faire des démonstrations différentes de la simulation. Par exemple le choix des différentes topologies neuronales, ou de certains seuils, toutes choses discutées [plus loin], sont de tels paramètres. Les obstacles, l’orientation première du robot par rapport à son but premier, les coordonnées de ce but et les variables aléatoires qui servent à initialiser les poids au hasard sont aussi choisis lors de cette étape.

Les réseaux de neurones sont ensuite initialisés, puis le robot est “allumé”. Sa vie consistera à (tenter de) faire un pas, après avoir lancé une série d’impulsions sonar dans son environnement. Lors de l’apprentissage de la marche, aucun obstacle ne se présente, et les capacités visuelles ne sont pas branchées. Nous allons à présent décrire les différentes capacités de notre robot.

Réalisation : la marche

Dans cette section, nous présentons plus précisément la réalisation d’Arcandie. Le robot n’a pas toujours eu la structure que nous exposons à présent ; les idées qui ont été abandonnées ont cependant apporté un éclairage sur la réalisation de systèmes hybrides : elles seront discutées à la fin du chapitre. Arcandie est principalement un corps non articulé, propulsé par six pattes, et possédant un système de détection d’obstacles par sonars. Le robot n’a jamais accès à une description de la démarche efficace des insectes sous forme symbolique.

Neuroanatomie de la marche chez les insectes

Le lecteur désireux d’en savoir plus sur les principes de la locomotion chez les animaux est invité à se reporter au chapitre 20 de [Shepherd G.M. 1988, Neurobiology. Oxford University Press] et au chapitre 37 de [Kandel et al., 1991, Principles of neural sciences. Prentice-Hall Int’l Inc].

Les muscles sont actionnés par les neurones moteurs qui prennent leurs activations des interneurones (voir le chapitre “Parallélisme” de ce mémoire pour une présentation de la neurobiologie en jeu). Des gestes comme ceux nécessaires pour la marche sont très proches des mécanismes des biorythmes. La structure neuroanatomique impliquée est très simple et bien connue. Il n’y a pas besoin d’un groupe de neurones important pour engendrer les rythmes nécessaires, mais chaque muscle reçoit des impulsions en de nombreux endroits.

Mécanismes élémentaires des systèmes moteurs. Le matériel neuronal en jeu dans les systèmes moteurs permet d’activer des réflexes simples, avec ou sans contrôle des parties centrales du cerveau, et d’effectuer des séquences volontaires de mouvements. Les différentes interactions entre l’environnement, les muscles effectueurs, le cortex et les horloges biologiques sont décrites dans la figure [ci-dessous].

Composants en jeu dans les systèmes moteurs (à gauche). À droite le même schéma adapté à notre problème de robot insectoïde. (Inspiré de Shepherd, p. 414).

Nous voyons (partie gauche de la figure) qu’un des principes primordiaux des systèmes moteurs est le fait que les informations sont véhiculées entre les différents composants dans les deux sens. Quand il s’agit de gestes volontaires, l’influx nerveux emprunte la voie verticale de haut en bas, mais à chaque niveau un signal (efference copy) remonte, de manière à mesurer à la fois l’efficacité du mouvement ordonné et l’activation qui reste nécessaire pour réaliser le comportement voulu.

De la même manière, un retour est effectué en provenance de l’environnement, que ce soit un travail automatique des senseurs, ou que ce soit un changement détecté dans l’environnement, changement dû aux actions précédentes.

Avec Arcandie, nous avons implanté ce schéma général comme indiqué en partie droite de la figure. Le module de la marche (décrit plus loin) est directement au contact de l’environnement. Il y effectue des actions et reçoit des informations perceptives et proprioceptives. Plus tard, d’autres informations perceptives (détection d’obstacles, vision) seront envoyées à un niveau supérieur, via d’autres modules, leur corrélation permettant d’obtenir des comportements plus complexes. Le biorythme émerge au sein du module de la marche.

Mécanismes élémentaires des composants neuronaux. La figure [ci-dessous] présente trois principes élémentaires permettant d’engendrer des mouvements rythmiques. Les neurones clairs ont une action excitatrice et les neurones foncés une action inhibitrice.

Mécanismes élémentaires des composants neuronaux. D représente le neurone qui donne l’impulsion, F le neurone moteur de flexion et E le neurone moteur d’extension. P est un neurone pacemaker. I sont des interneurones. La figure présente la neuroanatomie et les activations de ces mécanismes. (Inspiré de Shepherd, p.~416).

Ces notions neuroanatomiques ont servi de base à la conception de la topologie des réseaux de neurones utilisés dans le module de la marche.

Vocabulaire utilisé. Dans la suite, pour simplifier, et comme nous l’avons dit dans l’avant-propos de ce chapitre, nous employons un vocabulaire volontairement “insectomorphique”.

Le robot est un rectangle de 30 unités de large sur 60 de long. Il possède six pattes dont les mouvements pourraient être complexes avec un vrai robot, mais qui sont ici simplifiés : soit la patte est levée, soit elle est baissée. La patte est rattachée au corps par l’intermédiaire d’une hanche : ce n’est pas une articulation en soi, elle représente seulement les coordonnées de la position de repos de la patte sous le corps. Quatre hanches sont aux sommets du corps du robot et les deux restantes sont à mi-chemin de chaque (grand-)côté du robot.

Référentiel du robot

Le robot évolue dans un espace à deux dimensions, fermé mais suffisamment grand pour qu’il ait assez de place pour apprendre à marcher et, par la suite, mener une exploration complète de son environnement. Il possède un référentiel personnel : tous les calculs numériques nécessaires (à la fois dans le matériel symbolique et le matériel subsymbolique du robot) sont relatifs à ce référentiel. Le référentiel n’est pas fixe par rapport au corps du robot. Son axe Y est dans l’axe principal du robot (orienté vers l’arrière du robot, pour des raisons de facilité dues à X-window), son axe X est dirigé de la gauche vers la droite du robot. L’origine du repère est le barycentre des deux pieds frontaux (bpf). Ce faisant, les calculs de décalage des pattes par rapport au corps et entre elles, se font dans un repère qui est fixe dans l’espace d’exploration des pattes et non pas dans celui du corps. À ce stade, nous ne donnons pas plus de précisions sur ce point qui sera repris en section [plus loin]. Que le lecteur sache seulement que ce choix n’est pas, comme on pourrait le penser, sans conséquences. Le référentiel du robot est noté R (Nd2015: j’utilise pour Medium la convention “v est le vecteur v” (normalement noté v surmonté d’une flèche)).

Le robot insectoïde

Tous les calculs sont effectués dans ℝ, […], ce qui permet aussi de s’affranchir des contraintes de la représentation graphique sous X-window qui s’effectue dans ℕ. Un deuxième référentiel, noté env, est fixe par rapport à l’environnement (origine et axes sont ceux de X-window ; ceci correspond à un des coins de la zone d’évolution permise du robot). Les coordonnées du robot dans env, celles du but courant, et l’angle que forment env et R sont des données connues par le robot. Le robot est aussi informé de l’état courant (levé ou baissé) de chacune de ses pattes, et du décalage entre chaque patte et la projection sur le sol de la hanche correspondante. Dans la simulation, une règle est utilisée pour tenir compte des contraintes physiques qui empêchent une patte de trop s’éloigner du corps.

Structure des capacités motrices

Le module de la marche est divisé en cinq sous-modules.

(Nd2015: il s’agissait vraiment de tous petits réseaux de neurones)

D’autres structures ont été essayées ; celle-ci a permis l’émergence de la démarche classique en tripode.

Position verticale des pattes. Ce sous-module (udm ; les notations utilisées font référence à des acronymes en anglais : up-down submodule, up-down-acting submodule, delta submodules et goal submodule) gère une partie du traitement de la position verticale des pattes. Il prend ses entrées au niveau des six pattes : -1 si la patte est baissée, 1 si elle est levée (voir la discussion [sur la sigmoïde plus bas] pour le choix de ces valeurs). udm est un perceptron multi-couche de type 6–6–1 entièrement connecté. L’apprentissage est supervisé par une règle spéciale : udm est incité à produire une sortie positive quand le robot est en équilibre, et négative sinon.

Proposition de nouvelles positions verticales. Le sous-module Audm ne consiste qu’en une couche de 6 neurones (correspondant aux six pattes) qui prend ses entrées au sein de udm (ce qui lui confère un statut assez particulier : on ne peut pas dire que Audm ne contient qu’une couche, vis-à-vis des entrées pertinentes dont il traite, à savoir les positions verticales courantes des six pattes). Dans la version présentée figure [ci-dessus], chaque neurone ne reçoit une entrée que d’un seul neurone de la couche d’entrée de udm et un seul neurone de la couche cachée de udm, celui qui correspond à la même patte. Ce choix sera discuté à la fin du chapitre.

Traitement des décalages horizontaux. Par simplicité et homogénéité des variables en jeu, les décalages horizontaux des pattes par rapport à leur hanche ont été codés en coordonnées cartésiennes plutôt que polaires. Deux sous-modules identiques dans leur topologie permettent de traiter les décalages dans l’axe principal du robot (δYm) et dans l’axe secondaire (δXm). Les deux sous-modules (δX,Ym) sont de type perceptron mono-couche non entièrement connecté 7–6. Les six sorties sont les décalages proposés de chaque patte pour le prochain pas d’Arcandie. Les six premières entrées sont les décalages actuels, selon l’axe concerné ; elles sont connectées deux à deux aux six neurones de sortie. Le septième neurone d’entrée est connecté à chacun des neurones de sortie. Sa valeur d’entrée provient du dernier sous-module, gm.

Gestion du but. Le sous-module gm ne fait que comparer la position actuelle du robot à celle de son but courant, et émet vers les neurones 7 des deux sous-modules δX,Ym ±1, selon le sens du décalage nécessaire dans l’une ou l’autre direction pour rapprocher le robot de son but.

Caractères connexionnistes innés

Comme nous l’avons vu dans la première partie [de cette thèse], les caractères innés d’un système hybride sont principalement pris en charge par une base de règles initiale. Ceci fera l’objet d’une prochaine section. La topologie des réseaux constituant le matériel connexionniste, si celle-ci doit être spécifiée, est aussi un caractère inné. Il en est de même du choix des poids initiaux, si ceux-ci ne sont pas pris au hasard, et du choix des sigmoïdes, des règles d’apprentissage et de mise à jour des poids, et en fait de tout ce qui constitue la trame de l’algorithme neuronal.

Initialisation des poids synaptiques. Les poids synaptiques initiaux du module de la marche ne sont pas choisis totalement au hasard. Le problème est d’éviter de choisir des poids au hasard qui, sur un si petit réseau, pourraient trop facilement assurer de se perdre dans un minimum local ; pour autant, nous devons laisser une part d’initialisation au hasard n’influençant pas explicitement l’apprentissage qui suivra. Pour cela, l’initialisation des poids consiste en leur choix, aléatoire, dans des intervalles judicieux autour de certaines valeurs. Le choix de ces valeurs est le principal caractère inné de cette étape ; il dépend en grande partie pour l’instant du savoir-faire du neuroticien.

Que signifie cette initialisation ? Que ces valeurs soient 0 ou non, qu’elles soient positives ou négatives ou que cela importe peu, que leurs valeurs absolues soient choisies les unes en fonction des autres, tout ceci permet de donner plus ou moins de poids à certaines synapses, empêche certains poids, lors des premières époques, de prendre des valeurs trop rapidement petites et perdre ainsi leur signification, et précise le caractère excitateur ou inhibiteur des neurones les uns par rapport aux autres.

Dans le cadre d’un réseau qui doit posséder une signification cognitive, même imparfaite ou incomplète, il n’est pas possible de procéder comme pour les réseaux qui ne font que du traitement de l’information, pour lesquels des conditions initiales plus lâches sont possibles. Dans notre module de la marche, chaque neurone a une signification ; la plupart d’entre eux sont directement reliables à des symboles. L’initialisation des poids est donc une étape significative pour le réseau. En fait, le neuroticien joue le rôle ici des deux premiers principes de la TSGN (Nd2015: Théorie de la Sélection des Groupes Neuronaux de Gerald M. Edelman).

Nd2015: Suivent à présent plusieurs paragraphes expliquant comment sont initialisés les poids synaptiques des réseaux de neurones.

En résumé : de nombreuses expérimentations sur le modèle connexionniste présenté plus haut ont démontré l’importance de ne pas laisser le hasard choisir complètement les poids synaptiques. Les intervalles dans lesquels ces poids vont être initialisés (et là, au hasard effectivement) et les positions respectives de ces intervalles entre eux, selon les sous-modules neuronaux concernés, ont de l’importance en ce sens qu’ils “véhiculent” de l’énergie (informationnelle) d’un point à un autre des circuits neuronaux. Mal les choisir et c’est par exemple l’assurance de voir ces poids décroître vers 0 et ne plus rien véhiculer. De même, la fonction sigmoïde classique utilisée en sortie de neurone pour donner des valeurs entre -1 et 1, f(x)=1 / (1 — exp(-x)), n’est pas nécessairement toujours adaptée. Nous avons donc expérimenté en inventant d’autres sigmoïdes, un champ de recherche qui n’est toujours pas vraiment exploré en 2015 !

Intervalles d’initialisation : udm et Audm. Les poids synaptiques au sein de udm prennent leurs valeurs au hasard dans [-.7,-.5] ou [.5,.7], tandis que les poids connectant les entrées de udm et Audm varient dans [-.8,-.4] et ceux entre la couche cachée de udm et Audm varient dans [0.,1.]. Ceci s’interprète comme suit :

  • Les poids synaptiques du sous-module udm sont du même ordre de grandeur que les signaux d’entrée et ceux que l’on désire avoir en sortie (à la fois le neurone de sortie et les sorties des neurones d’entrée et cachés qui doivent alimenter Audm). étant relativement éloignés de 0, il n’y a aucune chance que, lors des premières époques, des poids soient trop petits et annihilent les entrées de udm, qui sont toutes significatives (contrairement par exemple à une rétine, où la perte d’énergie de quelques pixels a moins de conséquences). Les signes ne sont pas spécifiés, donc les caractères d’inhibition ou d’excitation des neurones à l’intérieur de udm sont laissés à la charge de l’apprentissage.
  • Les neurones de Audm doivent être plus influencés par la couche cachée de udm que par la couche d’entrée. Cependant, celle-ci est nécessaire pour alimenter au début le sous-module Audm, car à cet instant, la couche cachée n’émet pas encore d’informations pertinentes. C’est pourquoi les poids en valeur absolue des liens en provenance de la couche d’entrée de udm sont assez consistants, mais pas trop par rapport aux autres liens.

Comme on le voit, l’influence de la couche d’entrée de udm sur Audm est de signe opposé à celle de la couche cachée de udm. Pour expliquer cela, il faut comprendre que les significations des différentes couches que l’on a imaginées a priori et qui ont motivé les choix des poids initiaux ne se définissent que de manière circulaire. En créant cette structure du module de la marche (qui était à l’origine plus complexe encore), nous avons supposé que la couche cachée de udm finirait par représenter une version quasi-achevée des propositions qui doivent être émises pour le prochain pas. Cette version inachevée irait alimenter le neurone de sortie de udm d’une part, dans lequel on pourrait détecter (c’est le but de udm) un déséquilibre en cours ou prêt à ce produire, et d’autre part Audm, où la proposition finale pour le prochain pas serait élaborée en prenant aussi en compte le pas précédent (via la couche d’entrée de udm).

La circularité intervient par l’intermédiaire de l’environnement : si les propositions Audm sont effectuées (on verra plus loin dans quelles circonstances ce n’est pas le cas), elles seront les nouvelles entrées de udm. En milieu d’apprentissage, Audm présente bien le caractère qu’on imagine : il propose de lever les pattes baissées, et inversement. Mais aucune démarche correcte ne pourrait émerger si la couche cachée, qui précède (à la fois dans la topologie, dans les calculs et dans la signification) les sorties effectives des sous-modules couplés udm et Audm ne subissait un apprentissage l’incitant à trouver, à son niveau, et autant que faire se peut, comment faire garder son équilibre au robot. La démarche en tripode commence en fait à émerger au sein de la couche cachée de Audm, puis finalement émerge totalement dans le module complet.

Intervalles d’initialisation : δXm et δYm. Les poids synaptiques présents au sein des modules δX,Ym varient dans les intervalles [-3.,3.]. Lors des premières expériences de la gestion des décalages horizontaux, les sorties de ces deux sous-modules avaient les valeurs qu’on voulait appliquer aux pattes dans chacune des deux directions (c’est-à-dire que les activations émises (1.3 ou -4.6 par exemple) étaient directement traduites en distances). Les bornes de la sigmoïde (classique) étaient donc assez larges pour permettre la sortie de valeurs dans l’intervalle permis par les contraintes physiques des pattes. Nous avons malheureusement observé qu’aucune démarche cohérente n’apparaissait. En examinant les poids de ces deux modules, nous avons vu qu’ils ne faisaient que croître : la sigmoïde saturait et les décalages étaient irréalisables. Ce faisant, le robot était constamment en déséquilibre, non parce que udm et Audm ne s’en sortaient pas, mais parce que le robot tombait sur le côté. À cause d’un comportement erroné d’une partie des sous-modules, d’autres sous-modules ne pouvaient effectuer leur apprentissage dans des conditions honnêtes…

Une solution aurait été de proposer une topologie des δX,Ym similaire à celle de udm couplé avec Audm, puisque, on l’imagine assez bien, les rythmes que nous désirons voir émerger en vertical et en horizontal sont assez semblables. Mais une autre circularité serait intervenue, plus vicieuse : comme les deux aspects s’influencent l’un l’autre via l’environnement, cette circularité aurait permis qu’un des deux mécanismes (gestion des positions verticales, et horizontales) se mette en régime de croisière.

De plus, les virages (comme pour un véhicule à chenilles, le robot insectoïde pivote en ralentissant les pattes à l’intérieur du virage par rapport à celles qui sont à l’extérieur du virage. Dans le même temps, les pattes se décalent légèrement par rapport au corps du côté du virage. Il y a donc deux types d’activation pour les neurones de δX,Ym : une valeur “élevée” (typiquement 3) pour avancer, et une valeur moins élevée (typiquement 1.5) pour pivoter. Avec une sigmoïde classique aux bornes assez larges, nous pensions que les valeurs des décalages horizontaux allaient être choisies judicieusement pour que le corps pivote sur les pattes et que les virages s’effectuent ainsi pas à pas. En choisissant une sigmoïde classique bornée entre -1 et 1, ce comportement qui n’avait pu apparaître précédemment n’a pas plus apparu. Il s’est avéré que la forme symétrique (et croissante) de la sigmoïde ne permet pas que deux sorties (une élevée et une moins élevée) puissent être émises, selon le besoin. Nous avons donc pour ces raisons conçu une sigmoïde particulière, qui est présentée maintenant.

Une sigmoïde un peu spéciale. Les neurones de udm et Audm (exceptés les neurones d’entrée de udm, par définition), ont pour sigmoïde f(x)=1/(1_exp(-x)), entre -1 et 1. Aucune fonction seuil n’intervient (pas de terme h dans la non-linéarité). En revanche, la non-linéarité qui intervient au niveau de la couche de sortie des sous-modules δX,Ym ne possède pas tous les critères [d’une sigmoïde proprement dit] (en particulier, elle n’est pas croissante). Pourtant, elle est impliquée dans l’algorithme de rétropropagation du gradient au même titre qu’une sigmoïde classique. Un grand soin a donc été apporté à la fois à cette non-linéarité et à sa dérivée. Pour des raisons anecdotiques, cette non-linéarité sera appelée par la suite bangoïde.

Les sorties des sous-modules δX,Ym sont comprises dans l’intervalle [-1.,1.]. Les contraintes physiques permettent aux pattes de se décaler dans les deux directions d’au plus 4 unités. Pour tenir compte des rééquilibrages du corps par rapport aux pattes, quand celles-ci sont en position (voir l’algorithme de la marche, les décalages des pattes émis par δX,Ym sont dans l’intervalle [-3.,3.]. Si le calcul de l’angle entre les deux repères R et env et si la position du robot par rapport à son but le motivent, le robot va devoir pivoter sur son corps de manière adéquate. Pour cela, les décalages selon Y du côté où il faut tourner sont divisés par 2, et les décalages selon X, des deux côtés, sont augmentés ou diminués d’une unité, suivant le cas.

Nous rappelons que le problème principal était de garder des valeurs cohérentes en sortie de ces deux sous-modules (ce que la non-linéarité bornée entre -1 et 1 permet) et faire en sorte que les valeurs en entrée aient une signification analogue, à la fois entre elles et avec celles de sortie. Si la sigmoïde classique était appliquée à ces réseaux, en cas de virage, lors de la recherche de la bonne démarche (et ceci se produit constamment, car le robot se déséquilibre et oscille d’un côté à l’autre), des valeurs de l’ordre de 3 et d’autres de l’ordre de 1.5 arriveraient simultanément en entrée (pour ne prendre que le cas de δYm). Qu’“imaginerait” le réseau ? Que ces données sont de nature différente. Et l’énergie donnée par ces valeurs ne serait pas la même, lors de l’alimentation des couches. Dès lors, le montant du gradient de l’erreur rétropropagé ne serait pas le même suivant les neurones : l’apprentissage ne s’effectuerait pas de la même manière pour chacun des neurones.

Certes, nous avons affirmé dans ce mémoire l’importance des événements épigénétiques pour guider l’apprentissage des réseaux de neurones. Mais on se rend compte avec ce problème qu’il y a une question d’échelle à respecter. Une chose est qu’un obstacle induise la mise en œuvre de comportements innés et primitifs de reculs, ce qui est bon, une autre est qu’une valeur numérique mal choisie par le neuroticien soit la source d’un événement indésirable.

Un autre point dont il faut tenir compte est le démarrage du robot. À l’origine toutes les pattes du robot sont à la position (0.,0.) par rapport à leur hanche. La seule énergie qui entre dans les δX,Ym provient du sous-module gm. Le démarrage du robot est donc progressif (nous ne l’avions pas prévu, mais cela se révèle un comportement intéressant. Mais nous ne pouvons pas vraiment dire qu’il a émergé au sens strict), commençant par des décalages de l’ordre d’une unité. La bangoïde (en fait sa dérivée) doit donc être choisie de manière à permettre le passage progressif à la vitesse de croisière.

La figure [ci-dessous] donne les courbes conjointes de la bangoïde et de sa première dérivée. La fonction est impaire et bornée entre -1 et 1. À +∞ elle tend vers 1. À 3, elle vaut -1 : en ligne droite et en supposant que les poids sont suffisamment forts après apprentissage, les décalages proposés ont tendance à rester aux alentours de 3, ce qui est le principe même d’un régime de croisière. La dérivée autour de 3 est telle que des décalages proposés supérieurs à 3 (jusqu’à 4.5, ce qui n’arrive jamais, par expérience) s’atténuent d’eux-mêmes. De même, des décalages inférieurs à 3 reviennent “naturellement” vers 3 ; si ces décalages inférieurs à 3 sont dûs à la nécessité de prendre un virage, les sorties correspondantes restent proches de 1 et les décalages de l’ordre de 1.5 restent conservés. La dérivée en 0 est positive pour empêcher les sorties de s’atténuer peu à peu.

En réalité, la bangoïde a été conçue pour permettre à la fois à l’algorithme de rétropropagation du gradient de fonctionner, et à deux intervalles plus ou moins autour de 3 et 1.5 de “fournir des points fixes”. Excepté quelques erreurs de programmation initiales et une dérivée en 0 initialement nulle (qui, dans certaines conditions, faisait ralentir le robot en ne fournissant que de petites valeurs de sortie), l’équation correcte de la bangoïde a été rapidement trouvée. La décroissance de la dérivée à partir de 4.5 s’effectuait auparavant à partir de 6, mais, sans changements de comportement autour de ce point d’inversion, nous avons pu ainsi obtenir une pente de la dérivée plus raide aux alentours de 3, ce qui restreint encore plus les décalages supérieurs à 3 unités.

Nd2015: dans le source en LaTeX de ce mémoire, je trouve à ce niveau une petite note à moi-même : %% dilemme résolu avec panache

Si nous avons alourdi notre propos un instant en décrivant cette non-linéarité particulière, c’est qu’elle n’est pas un simple “bricolage” qui permet d’arriver à nos fins, mais la solution pour résoudre les problèmes exposés dans cette section, sans compliquer pour autant la topologie du réseau. Nous pensons que l’étude de non-linéarités sortant de la famille des sigmoïdes est un domaine qui n’a pas encore assez été exploré, alors qu’il permettrait sans doute d’accroître les capacités des neurones.

Si cette sigmoïde possède une courbe si “exotique”, c’est qu’elle doit pallier un problème peu classique : les informations qui sortent des δX,Ym sont modifiées par une intervention extérieure au réseau (pour traiter les virages) avant d’être réinjectées, telles quels (comme pour la gestion des positions verticales) dans le même réseau. C’est la sigmoïde qui s’occupe de conserver une certaine cohérence entre les entrées et les sorties de ces réseaux.

Matériel symbolique

La réalisation d’Arcandie a été lancée, entre autres, pour étudier la mise en pratique de la théorie de l’acquisition du savoir-faire exposée au chapitre 2 [de cette thèse]. Si l’on discute de façon informelle des règles du jeu de la marche d’une fourmi, on peut obtenir ceci :

  • On suppose qu’on part d’un animal à pattes qui marche uniquement en les levant et les baissant un peu plus loin, et non pas en poussant dessus (reptation). Aucun mouvement cohérent ne sera possible si une alternance levé / baissé n’existe pas au niveau de chaque patte. En revanche, aucune alternance n’est vitale au niveau global. De même, aucun mouvement cohérent ne sera possible si une patte reste obstinément baissée en arrière du corps, ou obstinément levée en avant du corps (dans le cadre d’une marche vers l’avant). Enfin, aucun mouvement cohérent n’existera si l’animal perd sans cesse l’équilibre.
  • En ce qui concerne la simulation, deux cas doivent être pris en compte : 1. un animal ne lève pas toutes ses pattes en même temps. 2. les pattes ne sont pas infiniment extensibles.

Rien d’autre n’est nécessaire pour définir le jeu de la marche. En particulier, seuls deux types de signaux sont à observer : 1. l’équilibre global de l’animal et 2. des règles locales à chaque patte. Partant de ces principes très simples, on laisse l’animal expérimenter ses capacités motrices. L’activation des règles du jeu assure que l’animal évolue dans le cadre de ces principes.

Nous allons maintenant donner les énoncés des règles du jeu de la marche hexapode. Il s’agit de règles en langage naturel ; elles sont en fait implantées en C sous forme de clauses if.. then.. else agissant sur des variables booléennes ou numériques. Nous les appelons Lois pour ne pas les confondre avec les règles d’apprentissage et de mise à jour des poids présentées en chapitre 4 [de cette thèse]. Comme nous l’expliquerons ultérieurement, non seulement les lois sont activées à des moments précis de l’algorithme de la marche, mais également si les apprentissages correspondants sont désirés ; nous retrouvons ces conditions d’activation dans le terme Requis.

Nd2015: Cinq Lois de ce type sont énoncées dans le mémoire de thèse. Je n’en mets qu’une ici. Ce sont des lois de physique : le robot ne peut pas avoir toutes ses pattes levées sinon il tombe, le centre de gravité du robot reste dans le polygone de sustentation, le robot doit atteindre un but à quelques mètres et doit donc bouger ses pattes…

Gestion de l’équilibre. Comme on l’a vu, le sous-module udm ne possède qu’une seule sortie, dont la valeur va être poussée, par l’apprentissage, à représenter l’état d’équilibre du robot. Bien sûr, un tel état pourrait être détecté par des senseurs. Le but de la loi 1 est double : permettre une impulsion de retour (rétropropagation des erreurs) caractérisant le travail de udm (voir [plus haut: initialisation des poids] la discussion sur la signification désirée des éléments de ce sous-module), et obtenir une prédiction de la dégradation de l’équilibre.

Loi 1 (Calcul de la cible de udm)

  • Requis: Le sous-module udm a été alimenté. On désire l’apprentissage de la capacité levé / baissé.
  • Si: La couche cachée “propose” au moins 4 pattes levées.
  • Alors: La cible du réseau est -1
  • Sinon: La cible du réseau est +1

La loi est très simple. Elle ne dépend pas de l’équilibre effectif du robot, car elle agit avant que le nouveau pas du robot soit effectué : ainsi la couche cachée est véritablement rendue “responsable” de ses propositions et non pas de celles de Audm ; de cette manière le dernier neurone prédit bien les risques de déséquilibre “pressentis” au sein de la couche cachée.

[…suivent 4 autres Lois…]

Algorithme de la démarche

Il est temps maintenant de décrire plus précisément les différentes étapes qui se déroulent entre deux pas.

Nous utilisons le mot “algorithme”, mais que le lecteur ne s’y trompe pas. La démarche classique d’un insecte n’est pas présente de manière algorithmique. L’algorithme qui suit ne concerne que la séquence des opérations nécessaires pour mettre en œuvre les matériels symboliques et subsymboliques. […] L’algorithme est donné ici à titre d’illustration ; il est discuté régulièrement dans le texte.

Avant le premier pas, l’apprentissage des positions verticales (apv) et l’apprentissage des positions horizontales (aph) sont on. Les valeurs de retour possibles de l’équilibre sont les suivantes : -2 : déséquilibre sur 3 pattes ; -1 : 6 pattes levées ; 0 : autres déséquilibres ; 1 : équilibre faible ; 2 : équilibre correct. La différence entre les deux derniers équilibres est que, pour le premier, le centre de gravité du robot est très proche de l’extérieur du polygone de sustentation.

[…suit un algorithme de deux pages en pseudocode. Il explique comment les différents modules neuronaux s’alimentent en valeur les uns les autres. On y trouve un mix entre activations de Loi de l’ordre de l’IA symbolique et activations de réseaux de neurones de l’ordre de l’IA subsymbolique…]

Le robot simulé disposait également d’un système de vision rudimentaire à base de sonars (simulés). L’apprentissage de la marche se faisait également dans un champ d’obstacles, et le robot pouvait perdre de vue son but initial. Il devait alors lui-même se fixer des buts intermédiaires pour s’en sortir. Ce mécanisme de tâtonnement fixé par une Loi supplémentaire s’est avéré contourné rapidement par une “coopération” entre les modules neuronaux de la marche et ceux de la vision, apparue d’elle-même à force d’évolutions dans le champ d’obstacle !

Gestion du but courant. Les coordonnées du but sont constamment connues, lors de la phase d’apprentissage de la marche. Le but désigne l’objet de la démarche. Le calcul de la différence entre ces coordonnées et celle de bpf permet d’indiquer au robot si le but est à droite ou à gauche (ou dans l’axe), et devant ou derrière. En fonction de ces éléments, les activations des δX,Ym sont altérées […]. C’est ce que nous appelons le calcul du pivot, puisque cette altération va faire pivoter le corps sur lui-même, ce qui, combiné avec son mouvement, engendre une prise de virage.

Quand le robot est dans un champ d’obstacles, il se peut qu’il soit obligé de contourner un obstacle ou de reculer, et donc perdre, pour quelques pas, le but final qu’on lui a fixé. Il lui faut alors trouver un sous-but adéquat vers lequel ses pattes le mèneront. Nous avons choisi de lui laisser proposer des sous-buts dans une aire du même ordre de grandeur que sa taille, et dans un secteur vers l’avant et vers l’arrière limité à un demi-angle de 60 degrés. Le sous-but est ainsi rapidement atteint, et ne nécessite pas des manœuvres complexes. Combiné avec le travail des sonars, ce mécanisme simple de tâtonnement permet de se forger un chemin de proche en proche. Quand le module de la vision atteint l’efficacité de celui de la marche, ce mécanisme ne sert plus, puisque vision et marche agissent de concert pour décider du chemin du robot.

Je saute ici une section similaire sur la “gestion des mouvements”, une discussion sur les particularités dues à l’hybridation (mix de règles symboliques et de réseaux de neurones) et notamment des apprentissages entrelacés : les modules neuronaux voient leur processus apprentissage amélioré, plus efficace, car les autres modules neuronaux ont leur processus d’apprentissage qui s’améliore, et ceci forme une boucle. Noter que cette méthode d’apprentissage entrelacé bouclé a été trouvée à la même époque que la découverte des turbocodes, mais dans un autre laboratoire de Télécom Bretagne. J’avais prévu après ma thèse de revenir sur ce sujet, mais j’ai du suivre un chemin différent, qui reboucle finalement 20 ans plus tard…
Je passe également sur toute la section de 7 pages concernant la vision et la gestion du champ d’obstacles. Le lecteur est invité à aller lire la thèse elle-même.

Les résultats de l’expérience

Nous concluons ce chapitre par une analyse des résultats obtenus avec l’expérience sensori-motrice (et plus particulièrement le module de la marche). Comme les comportements du robot n’étaient pas explicitement codés dans la structure symboliconnexionniste du robot à l’origine, les plus intéressants ne sont pas apparus d’eux-même. Il s’est avéré que certains des choix présentés dans les sections précédentes étaient vitaux pour le bon fonctionnement du robot. Dans les trois prochaines sections, nous allons voir quelles alternatives nous avons été amenés à étudier, et quels enseignements en tirer.

Les trois dernières sections présentent les premiers instants de la marche du robot, et les contributions des différents événements qu’il rencontre.

Environnement du robot

La simulation de l’environnement du robot (domaine d’exploration et domaine des mouvements) nous a peu à peu amené à programmer Arcandie de son “point de vue” et non de celui de l’observateur, comme nous allons le voir.

ℕ ou ℝ Lors des premiers essais de programmation d’Arcandie, nous avions fait le choix d’un domaine discrétisé, image directe de X-window. Les activations des différents réseaux étaient donc arrondies à l’entier le plus proche. Il s’est avéré très rapidement que ce choix était mauvais, puisque les réseaux utilisés calculent dans ℝ (aucun comportement intéressant n’est apparu, alors que le passage dans ℝ a immédiatement donné des résultats). Discrétiser leur sortie, là ou ce n’est pas nécessaire, apporte un biais néfaste. Autant les sorties de udm et Audm peuvent être seuillées, puisqu’elles représentent des états, autant celles des δX,Ym doivent rester dans ℝ.

R ou env De même, à l’origine, les calculs des mouvements du corps étaient effectués relativement à l’environnement, env. Il n’y avait pas la notion fondamentale de bpf, le barycentre des deux pattes avant. Les premiers mouvements dirigés vers un but (pas nécessairement le bon, mais n’ayant plus le caractère chaotique observé auparavant) sont apparus quand nous avons effectué ces calculs de mouvement dans l’environnement du robot R, c’est-à-dire dès que les valeurs des activations des différents réseaux ont possédé une “signification” par rapport à un point fixe de l’espace.

Position du but Le but est ce qui motive Arcandie pour apprendre à marcher. Nous avons essayé plusieurs positions relatives du but par rapport à la position initiale du robot. Une distance d’une quinzaine de longueurs du robot est suffisante pour laisser suffisamment de place à l’apprentissage. Le but est placé en face du robot. Le mettre sur un des côtés influence grandement l’apprentissage. S’il est trop de côté, le robot essaye d’apprendre à pivoter avant d’apprendre à marcher, et “s’emmêle les pinceaux”. S’il est un peu de côté, une démarche légèrement en crabe peu apparaître. Si le but est trop près, compte tenu des premiers déséquilibres du robot qui le font tourner sur lui-même, il se retrouve rapidement (en quelques pas) sur un des côtés, avec les conséquences que l’on vient de voir. Étant suffisamment loin, il peut rester à peu près dans l’axe du robot, durant les dix ou quinze premiers pas primordiaux : ceux qui vont différencier les poids synaptiques des différents réseaux pour le début de l’apprentissage.

Suit une section où je discutais d’autres topologies de réseaux de neurones étudiées, for the record, et notamment avec des réseaux entièrement connectés, dans l’espoir que les liaisons inutiles entre neurones allaient d’atténuer d’elles-même. Cela ne marchait pas, sans doute en raison d’un nombre de neurones en jeu bien trop petit, et ne supportant donc pas la redondance à cette échelle. Je passe cette section. La prochaine est beaucoup plus intéressante.

Partitionnement des apprentissages. Le choix de connecter les sorties des δX,Ym aux neurones d’Audm a introduit des oscillations entre l’apprentissage des positions verticales et celui des positions horizontales. Quand le rythme des positions verticales était cohérent, le robot piétinait, et quand le robot se mettait à avancer, il ne cessait de trébucher.

Nous avons ainsi découvert que l’apprentissage de la marche recouvrait deux apprentissages distincts (le rythme et le mouvement), qui devaient rester distincts. Les observations des activations que nous avons pu faire quand δX,Ym et Audm étaient reliés rappellent fortement le problème de la cible mouvante […].

En déconnectant ces deux types de réseaux, nous avons rendu indépendants ces deux types d’apprentissage. Bien qu’ils continuent à s’influencer via les mouvements effectués dans l’environnement, ils n’ont plus d’influence en interne : le terme d’erreur associé à un apprentissage ne vient pas perturber les variations synaptiques qui sont menées au sein de l’autre.

Je ne résiste pas, à ce stade, à souligner cette phrase d’il y a 20 ans “Bien qu’ils continuent à s’influencer via les mouvements effectués dans l’environnement”, et à renvoyer le lecteur curieux vers la notion de Stigmergie, que je ne connaissais pas à l’époque. Il s’agit là d’un principe essentiel.

Émergence des démarches

Le lecteur trouvera une étude robotique (dont un modèle hybride) de la démarche en tripode de la fourmi dans [de Callatay, 1986, Natural & Artificial Intelligence, Processor Systems Compared to the Human Brain, Elsevier Science Publishers], pp.260–271. Dans ce cas, la démarche en tripode est explicitement codée (c’est le cas aussi des travaux de Brooks). Dans notre cas, nous espérions cette démarche, mais elle n’a pas émergé immédiatement.

Démarches primitives. Plusieurs démarches différentes sont apparues pendant la mise en œuvre du robot. Quand les deux réseaux δXm et δYm jouaient un rôle similaire, une démarche en crabe est apparue. À présent, le calcul du pivot donne une plus grande importance aux neurones de δYm, et le robot avance droit. Alors que la procédure de calcul du polygone de sustentation était buguée, nous avons observé une intéressante démarche de grenouille : les quatre pattes arrières baissées et les deux devant levées, puis le contraire. Enfin, alors que les poids étaient autorisés à grandir (presque) indéfiniment, nous avons observé une démarche bancale : les trois pattes d’un côté levées alternativement. À présent, les poids sont limités à un intervalle raisonnable (qu’ils n’ont d’ailleurs pas l’occasion de dépasser).

La démarche finale. Dès le démarrage, le robot commence par bouger un peu de tous les côtés, avançant légèrement vers son but, mais perdant régulièrement l’équilibre. Les premiers choix de démarches explorent les possibilités avec quatre pattes baissées et deux levées. Il est clair que dans ces conditions, l’équilibre est perdu une fois sur deux.

De temps à autre, le robot essaye des démarches à trois pattes, et parmi elles la bonne démarche en tripode. Cependant, comme nous ne lui permettons d’adopter une démarche que s’il l’a utilisée pendant au moins 20 pas, il lui arrive souvent d’oublier cette démarche et de revenir aux démarches 4–2. De même, dans les cas où la démarche en tripode a été découverte, et les poids correspondants gelés, l’apprentissage relatif aux positions horizontales qui met plus de temps à s’effectuer peut demander de relancer l’apprentissage de la démarche. C’est le cas en particulier quand les contraintes physiques sont dépassées et que l’équilibre 3–3 doit être rompu pour permettre aux mouvements de s’effectuer. Dans ce cas l’apprentissage des positions verticales est relancé.

Quoiqu’il en soit, plus le temps passe et plus la démarche en tripode est proposée et maintenue. Pour finir, cette démarche est définitive et les extensions horizontales proposées sont les plus grandes possibles.

Dans le mémoire de thèse, je donne à ce moment un tableau contenant les poids synaptiques appris dans un des réseaux. On y observe des symétries entre neurones, qui n’étaient bien sûr pas présentes dans les poids d’origine tirés au hasard. On pourrait en déduire l’émergence d’une mise en synapse de la symétrie du corps du robot.
Le paragraphe ci-dessous montre qu’une autre caractéristique -d’optimisation- a émergé, à laquelle je n’avais jamais pensé au départ, et qui n’était clairement pas visée.

Un autre type de comportement, qui n’était pas attendu, est apparu : les deux pattes du milieu sont plus proches du corps que les autres pattes. La différence est minime (de l’ordre de 10%), mais suffisamment sensible pour faciliter la prise de virages un peu serrés.

Événements rares

Nous donnons une grande importance aux événements qui rythment la vie d’un système hybride. En effet, c’est souvent grâce à eux, et à leur présentation au bon moment, que nous pouvons influencer les comportements de tels systèmes. La fréquence d’apparition de certains événements périodiques clés a aussi son importance. Les événements rares sont, à cet égard, ceux dont il faut prendre le plus de soin.

Par événements rares, nous désignons les événements qui se produisent à une fréquence franchement inférieure à celles d’autres événements. Il est alors assez difficile de les intégrer dans le schéma d’apprentissage. Dans notre cas, l’événement “les 6 pattes sont au sol, le robot s’apprête à bouger” est rare : il ne se produit qu’au début de l’apprentissage de la marche, et ne peut laisser de trace dans le processus d’apprentissage.

Nous avons ainsi noté que ce que le robot avait réellement appris, c’était “marcher quand il marchait”. Si nous le stoppons, et que nous ramenons ses pattes en dessous de ses hanches, et que nous le redémarrons, le robot piétine, mais n’avance pas.

En examinant les matrices synaptiques de près, nous avons remarqué qu’il s’agissait d’un problème de signe entre le sous-module gm et les δX,Ym. En réalité, les valeurs absolues des poids en question sont correctes, mais les signes ne le sont pas. L’apprentissage qui permettrait à ces signes d’être corrects est identique à celui qui s’effectue pour les positions verticales des pattes. Comme nous avons réussi celui-là, et que nous ne pouvons pas faire celui-ci (arrêter puis redémarrer le robot continuellement pour effectuer cet apprentissage ne rentre plus dans le cadre de cette étude présentée au début du chapitre), nous avons changé les signes à la main, et le robot démarre à présent correctement.

Il s’agit là d’une intervention explicite du neuroticien.

Contribution du renforcement

Comme nous l’avons expliqué plus haut [Nd2015: sections non incluses ici. Lisez la thèse :)], il existe une phase d’entraînement, fondée sur un apprentissage par renforcement. Cette phase s’exécute dans deux cas : 1. quand l’équilibre du robot est correct ou, inversement, incorrect mais sans contraintes physiques en jeu ; 2. quand l’équilibre est incorrect avec des contraintes physiques, ou incorrect avec cependant trois pattes au sol. Les cas où l’équilibre est presque correct (barycentre du robot légèrement à l’extérieur du polygone de sustentation) ou franchement incorrect (six pattes levées ou baissées) ne sont pas sujet à entraînement.

Dans le premier cas ((dés-)équilibre significatif), le renforcement est effectué EqPCOK fois. Dans le second cas ((dés-)équilibre moins significatif), il est effectué EqOK fois. Ce renforcement consiste à alimenter EqOK ou EQPCOK fois le réseau udm avec un vecteur de positions verticales au hasard, et de faire varier les poids synaptiques de ce réseau dans le même sens que la variation venant d’être provoquée par un cas réel, ou dans le sens contraire, suivant que ce vecteur de positions au hasard est proche ou non du cas réel.

Suit, dans la thèse, un tableau avec différentes valeurs de EqOK et EQPCOK, testées pour voir combien de succès et d’oublis de la marche tripode sont nécessaires pour la maîtriser pour toujours. C’est-à-dire, combien de fois l’enfant va se lever, faire quelques pas, puis reprendre sa marche à 4 pattes plus confortable, jusqu’au jour où… J’écrivais sous ce tableau : “On observe avec ce tableau que le nombre de sessions d’entraînement doit être important, mais pas trop, et que le second cas d’entraînement doit être moins souvent renforcé que le premier”.
Je le passe, c’est plein de chiffres.

Conclusion

Dans ce chapitre, nous avons mené l’étude d’un système hybride simple, de manière à mettre en œuvre certaines des théories du chapitre 2 [de cette thèse]. Cette expérience a été une occasion pour dégager une série de principes méthodologiques qui feront l’objet du chapitre suivant. Ces principes sont utiles pour concevoir des systèmes hybrides au sens fort (technologique et cognitif). Ils précisent entre autres le rapport qui doit exister entre le neuroticien et le système hybride qu’il conçoit.

L’expérience sensori-motrice n’est pas terminée. Une prochaine étape serait celle de sa réalisation effective pour une validation écologique. Il serait alors intéressant de continuer l’éducation du robot en lui proposant la maîtrise d’autres savoir-faire. Les différents modules cognitifs établiraient des liaisons les uns avec les autres (de contrôle, de coopération, de réentrée), ce qui pourrait apporter encore plus à l’étude des systèmes hybrides au sens fort.

--

--

Ay. Poulain Maubant

C★O Nereÿs • hop vers l’ère cognitive • #ia #data #cogni #edu #neurobio • #frenchtech • Cofondateur#cantinebrest @AnDaolVras • was chroniqueur pour @TebeoTV