La première démocratie connue est apparue à Athènes au cinquième siècle avant J.-C. Depuis, de nombreux États ont choisi ce régime politique. Mais la démocratie a toujours été appliquée à des communautés humaines. Serait-elle applicable à d'autres communautés ? C’est cette question qui est posée dans l'anime Evangelion.

Disclaimer : je ne suis pas un spécialiste de Evangelion, loin de là ! De plus, je ferais certaines suppositions par la suite car ce sujet n'est pas développé extensivement dans l'anime. Si jamais vous trouvez une erreur ou si vous avez une suggestion, n'hésitez pas à poster un petit commentaire !

Evangelion


Le 13 septembre 2000, la Terre a connu un désastre sans précédent : une explosion en Antarctique, qui a dévasté une grande partie de la planète (et dévié son axe !). Une quinzaine d'années plus tard, de mystérieuses créatures appelées Anges attaquent Tokyo-3, la nouvelle capitale-forteresse japonaise. Une organisation secrète, la NERV, a construit des géants humanoïdes pour les combattre. Pour coordonner tout le monde, Tokyo-3 est dirigé par un superordinateur qui répond au doux nom de Magi.

Magi
Le superordinateur Magi

Magi est un superordinateur assez particulier : il est composé de trois unités nommées Melchior, Balthasar et Casper. Chaque unité est totalement indépendante et représente un aspect différent de sa créatrice, la Dr. Naoko Akagi, qui était à la fois une scientifique, une mère et une femme. Vous me direz, qui prend les décisions au final ? Eh bien, tout le monde : Magi est une démocratie d'ordinateurs. Chacune des trois unités vote, et la majorité l'emporte.

Magi vs. les superordinateurs actuels

Les superordinateurs actuels sont un réseau d'unités de calcul appelés nœuds (des ordinateurs, avec des processeurs et de la mémoire vive). Ces supercalculateurs sont construits pour résoudre des problèmes mathématiques. Le but de tout utilisateur d'un superordinateur est de découper le problème en plusieurs morceaux, afin de pouvoir fournir chaque morceau à un nœud, et de faire travailler tout le monde simultanément, en parallèle. Ce découpage est généralement assez délicat, de plus chaque unité a généralement plusieurs processeurs (pour être exact, plusieurs cœurs) ce qui complique encore plus la chose. Découper le problème, c'est aussi perdre du temps à distribuer les sous-problèmes et à reconstituer la solution finale, et il est parfois plus rapide de réduire le nombre de morceaux, quitte à ne pas exploiter toute la puissance de calcul.

Pleiades
Pleiades, un superordinateur de la NASA

Magi ne fonctionne pas du tout de la même manière. Les trois sous-unités qui le composent ne travaillent pas chacune sur une partie du problème, mais elles résolvent le problème chacune d'un point de vue différent. Chaque unité de Magi utilise le Personality Transplant OS (mot à mot, le système d'exploitation de transplantation de personnalité), ce qui veut dire que chaque unité possède une personnalité propre qui se bat pour dominer les autres, mais qui ne peut atteindre ce but grâce à la démocratie. La créatrice de Magi a intentionnellement laissé les dilemmes de la nature humaine intacts.

D'ailleurs, le problème à résoudre n'a pas la même nature. Les supercalculateurs actuels servent à résoudre des problèmes mathématiques. Par exemple, la NASA veut calculer des prévisions de trajectoires très précises pour ses fusées. Des physiciens modélisent alors le problème, c'est-à-dire analysent ce qu'il se passe vraiment sur le terrain (enfin plutôt dans l’espace) et représentent le mouvement des objets de l'espace par des formules mathématiques. C'est alors qu'un superordinateur est utilisé pour faire vivre le modèle et simuler des trajectoires. Magi n'est pas fait que pour ça. Magi a été construit pour diriger une capitale. Il doit donc être capable de résoudre des problèmes bien plus complexes, et surtout des problèmes où il n'existe pas une solution optimale, absolue. Magi doit faire des choix et prendre de réelles décisions.

En ce sens, Magi a bien plus de pouvoir que les ordinateurs de nos jours. Nos machines sont encore utilisées comme des outils, on les conçoit et on les utilise en prenant bien soin de vérifier leur comportement. Il existe plusieurs moyens de vérifier qu'un programme fait bien son travail :
  • En le testant automatiquement sur le plus grand nombre d'exemples possible. Pour cela, on fait une liste de données à entrer dans le programme, et une liste de ce qu'on attend comme résultat en sortie du programme. Par exemple, pour un logiciel qui calcule des trajectoires de satellites, on peut vérifier que les trajectoires des satellites déjà lancés correspondent bien à ce que prévoit le programme. On appelle cela des tests unitaires.
  • En prouvant mathématiquement que le programme va bien faire son travail. Pour des logiciels simples, c'est assez facile, pour des programmes plus complets, cela devient nettement plus compliqué. Des outils existent et ont déjà été mis en œuvre, notamment pour le métro automatique à Paris.
Néanmoins, ces méthodes ne sont pas applicables à Magi. Les tests unitaires paraissent assez ridicules face au nombre de situations possibles, et les preuves mathématiques sont trop impraticables.

Enfin, la nature même de l'ordinateur diffère : Magi est un ordinateur organique, c'est-à-dire qu'il n'est pas seulement constitué de circuits électroniques, son cœur est vivant.

Casper
L'intérieur de Casper, une des trois unités de Magi

C'est bien de rêver, mais...

... Est-ce que ça marche ? Est-ce que c'est même possible de réaliser une telle machine ?

Pour répondre à cette question, j'ai essayé de coder un brouillon de réplique de Magi. Bien sûr, je n'ai pas construit d'ordinateur organique, pas plus que je n'ai créé de système d'exploitation capable de faire tourner une personnalité (« rendez l’argent des abonnés ! »). L'idée ici est juste de tester si un système de démocratie tel que celui de Magi est viable. C'est donc sur cet aspect que je me suis focalisé.

Une première question lors de la conception de cette réplique a été l'architecture de Magi, et principalement : qui prend les décisions ? Une possibilité aurait été de créer un ordinateur central qui interroge les unités de Magi et qui, en fonction des décisions de chacune, prend celle qui est majoritaire. Néanmoins cette approche a une grosse faille : le fait que la prise de décision soit centralisée. Tout d'abord, d'un point de vue sécurité informatique, il est clair qu'une entité centrale peut être piratée, quelqu'un de mal intentionné aurait donc juste à s'infiltrer dans celle-ci et prendre le contrôle sans interroger les trois unités. Mais ce n'est pas tout : Magi est un système démocratique, et comme dans tout système démocratique, il est essentiel que personne n'ait les pleins pouvoirs. Il est donc primordial de penser un système totalement décentralisé, avec tout le monde au même niveau.

Serveur centraliséRéseau décentralisé
À gauche, un système centralisé.
À droite, un système décentralisé.

Imaginons une ville Tokyo-3 basée sur un système décentralisé. Concrètement, le réseau ressemble à un gros méli-mélo où tout le monde est connecté à plusieurs autres personnes. Le réseau est constitué des trois unités Magi ainsi qu’un tas d’autres ordinateurs qui sont chargés d’agir (ouvrir des portes, fermer des vannes, etc...) ou de sentir (caméras, capteurs, radars, etc...).

Lorsqu'une décision doit être prise, comment ça se passe dans ce système décentralisé ? Chaque unité de Magi vote, mais comment peut-on savoir quelle décision prendre au final ? Prenons un exemple : une unité propose l'autodestruction de Tokyo-3. D'un côté il y a les deux autres unités qui votent contre, de l'autre il y a l’ordinateur commandant d'autodestruction qui attend les ordres.



Comme souvent pour de tels problèmes, la solution est la cryptographie ! Chaque unité peut détenir une clé, signer son vote (c’est-à-dire prouver que le vote a bien été émis par l’unité en question et pas une autre) et diffuser son vote signé à travers le réseau. Dans notre exemple, le module d'autodestruction reçoit trois votes : un pour, deux contre. Il doit d'abord vérifier la signature de chaque vote pour éviter que n'importe qui puisse voter. Puis, il n'amorce pas l'autodestruction, compte tenu des votes.



La prise de décision est donc faite par des modules spécialisés et indépendants : un module pour l'autodestruction, un pour l'ouverture des portes blindées, un pour la régulation d'électricité, etc... Chaque module est commandé par la réception des trois votes et ne peut agir que dans un champ très réduit (le module de régulation de l'électricité ne peut pas ouvrir des portes). Si quelqu'un veut forcer un module à prendre une décision, il doit falsifier au moins deux votes, ce qui est impossible car il ne possède pas les clés des unités de Magi.

Un autre avantage est la redondance des connexions : si quelqu'un coupe quelques connexions, le système peut continuer à fonctionner, tant que le réseau n'est pas coupé en deux. Si une des unités de Magi est piratée et coupe toutes ses connexions, les décisions peuvent continuer à être prises par les deux autres unités, et les modules peuvent continuer à appliquer ces décisions.



Un méchant coupe certaines connexions, mais tout continue à fonctionner correctement.


C'est bon, on a l'organisation de notre réplique ! Reste deux problèmes à traiter : comment construire trois unités Magi qui ont chacune une sorte de personnalité, et quelles décisions peut-on leur faire prendre pour tester ?

Concernant le premier problème, comme déjà dit, peu de personnes en ce monde seraient capables de coder le fameux Personality Transplant OS qui se comporte comme une partie de la personnalité de quelqu'un (ou ça se saurait !). On va donc tenter de s'approcher d'un tel résultat en utilisant des réseaux neuronaux. Non, on ne va pas scalper le premier venu pour lui piquer sa précieuse matière grise ! Les réseaux neuronaux sont en informatique des programmes qui sont vaguement inspirés de notre cerveau. Il y a tout d'abord une phase d'apprentissage (comme votre petite sœur de 3 ans) où on fournit à l'algorithme la question et sa réponse, et ensuite on peut l'utiliser en lui posant des questions. Il essaie de répondre en se basant sur ce qu'il a appris. Ce type de programme est très utilisé pour la reconnaissance de caractères par exemple. On va donc entraîner trois réseaux neuronaux avec trois points de vue différents.

Le dernier problème - celui de la question à poser à notre réplique de Magi - gratte un peu. On pourrait par exemple demander à plusieurs personnes si un texte sur un fond de couleur donné est plus lisible en blanc ou en noir (démo), c'est typiquement un problème qui se résout bien avec des réseaux neuronaux. Mais ce genre de problème n'a pas de réel intérêt à être résolu par une telle artillerie, un seul réseau neuronal suffit amplement. En fait, tous les problèmes qui ont une solution mathématique universelle n'ont pas de réel intérêt. Il nous faut donc un problème à la fois quantifiable (que l'on peut représenter par des nombres, pour les besoins des réseaux neuronaux) et subjectif (pour pouvoir voir clairement jouer les différentes personnalités).

De plus, vouloir réaliser une machine et essayer ensuite de trouver le problème qu’elle va résoudre est un peu… capillotracté (je dirais même pathétique). Normalement, on fait face à un problème (diriger Tokyo-3) puis on cherche une solution (créer Magi), et non l’inverse.

Ce problème de trouver la bonne question m'a fait réfléchir depuis novembre 2015 (soit presque un an à l’heure où j’écris ces lignes !). À vrai dire, je n'ai pas rencontré la question idéale 💔. J'ai finalement décidé de prendre une question simple dans un premier temps, afin de pouvoir tranquillement construire mon prototype. L'adapter à une question plus compliquée viendra peut-être dans un second temps.

Finalement, j’ai donc choisi le problème simple du texte sur un fond de couleur. La bonne nouvelle, c’est que vous pouvez vous-même tester chez vous cette pâle réplique : https://naota.emersion.fr/magi/ (un navigateur à jour et digne de ce nom est requis, utilisez Firefox ou Chrome/Chromium). Le principe est simple : vous allez pouvoir vous connecter au réseau Magi qui tourne sur mon serveur et lui poser des questions.



Une question ressemble à : « est-ce que du texte écrit sur un fond vert pômme/bleu ciel/taupe/la couleur de votre choix se voit mieux s’il est écrit en noir ? ». Pour poser une question, sélectionnez une couleur avec le bouton à droite. Votre question sera alors propagée à travers le réseau. Un peu plus tard, les unités de Magi répondent et propagent leur vote, votre ordinateur vérifie leur authenticité et les affiche. Chez moi, le temps de réponse de Magi est d’environ 150ms (ce temps relativement élevé est dû à la façon dont le réseau est géré et pourrait être amélioré).

Si vous vous y connaissez un peu et voulez voir comment c’est fait sous le capot, le code est disponible sur GitHub.

Bon, du coup ce qui est pas mal c’est qu’on a un système opérationnel qui pourrait presque être utilisé sans modification pour une petite ville. On a l’enveloppe de Magi, l’architecture de son réseau. Ce qui manque par contre, ce sont les trois unités de Magi. J’ai entraîné trois réseaux neuronaux pour les constituer en répondant moi-même aux questions. Histoire que toutes les unités ne votent pas toujours la même chose, j’ai fait exprès de répondre de façon différente.

Une première approche pourrait être de faire entraîner chaque réseau neuronal (donc chaque unité Magi) par une personne différente. Ceci permettrait en effet d’avoir trois avis différents sur une question donnée (à défaut d’avoir trois personnalités différentes). Je ferais peut-être quelques expériences dans ce sens.

On peut aussi penser à des améliorations de Magi : au lieu de seulement voter oui ou non, chaque unité pourrait voter un nombre entre 0% et 100%, 0% voulant dire « jamais de la vie ! » et 100% « ah oui oui oui ! ». Cela serait utile dans le cas où une unité n’est pas absolument sûre de la décision qu’elle prend.

L’intérêt d’un tel système à l’heure actuelle est vraiment limité : les technologies nécessaires à l’isolation de personnalités dans des unités séparées est de la science fiction. Ainsi, avoir un système de décision conçu comme Magi n’est pas une bonne solution aujourd’hui. C’est pour cette raison que personne n’a jamais étudié la question plus en profondeur.

Néanmoins, une idée relativement proche est parfois utilisée dans le domaine de l’intelligence artificielle : plusieurs algorithmes complètement différents peuvent être utilisés en parallèle pour résoudre un même problème (https://en.wikipedia.org/wiki/Weighted_Majority_Algorithm). Cette technique reste tout de même peu utilisée pour le moment.

Cet article rejoint donc la longue liste de textes, analyses et thèses (oui !) qui étudient l’œuvre de Hideaki Anno, dans des dimensions aussi variées que la psychologie, la religion, ou - comme ici - la technologie. En partant d’un tout petit élément de l’univers, il est très impressionnant de constater à quel point il est possible de développer ce dernier. De plus, je n’ai étudié ici que l’aspect purement technique, mais il est fait allusion aux conséquences morales d’un tel système. Le fait de proposer dès 1995 des idées qui se révèlent viables en 2016 fait de cet anime bien plus qu’une simple fiction : une oeuvre visionnaire qui n’a pas fini de faire parler d’elle.