Header Ads

La 4ième loi de la Robotique (selon ASIMOV)

Une fois n'est pas coutume, aujourd'hui c'est un billet détente... autour de la robotique! Placé dans la catégorie "Debug" :-)

De nombreux Makers connaissent les 3 lois fondamentales de la Robotique... celles qui sont censés protéger l'humanité des robots. Loi édictées par l'écrivain Isaac Asimov pour ses nouvelles mais néanmoins pertinente.

Mais peu savent qu'il y a une quatrième lois, la "Loi ZERO"... mise au point par... un robot

Les trois lois de la robotique
Ces trois lois fondamentales issues du cycle des robots, écrit par Isaac Asimov
aux alentours de 1970, sont régulièrement reprises en exemple.
Illustration: Adafruit.com


  • Première Loi :
    Un robot ne peut porter atteinte à un être humain ni, restant passif, laisser cet être humain exposé au danger.
  • Deuxième Loi :
    Un robot doit obéir aux ordres donnés par les êtres humains, sauf si de tels ordres sont en contradiction avec la Première Loi.
  • Troisième Loi :
    Un robot doit protéger son existence dans la mesure où cette protection n'entre pas en contradiction avec la Première ou la Deuxième Loi.
Ces lois sont mises en situation dans de nombreux écrits d'Asimov. C'est par ailleurs des lectures très intéressantes.

La quatrième loi: La loi ZERO
En cours de lecture du cycle des robots entre le "1er cycle des robots" et le cycle de "Fondation" (aussi une excellente bonne lecture), je découvre les "Robot et l'empire" où la loi Zero est formulée par le robot humanoïdes Daneel Olivaw.
Cette loi est intégrée par lui-même (auto-modification) et par Giskard (un autre robot qui jeta les bases théoriques de la Psychohistoire). Elle s’énonce comme suit:

  • Loi Zero :
    Un robot ne peut nuire à l'humanité ni laisser sans assistance l'humanité en danger.
Et la première loi est modifiée en conséquence comme suit:
  • Première Loi :
    Un robot ne peut nuire à un être humain, ni laisser sans assistance un être humain en danger, tant que cette assistance est compatible avec la loi Zéro.
Serait-ce vraiment possible?
En partant du principe qu'une intelligence artificielle soit suffisamment évoluée pour en arriver à une telle conclusion ALORS cette modification est techniquement possible.

A titre d'exemple, les systèmes Windows CE (dès années 2000) avaient un système assez sympa pour faire de débogage. Il s'appelait "Detours" et cette technique de détournement d'API existe toujours (à ma connaissance).


Pour commencer il faut savoir que le système d'exploitation est placé en Flash (comme la plupart des systèmes embarqués) et que cette mémoire peut être écrasée, réécrite et modifiée.
Dans le cas précis de notre Windows CE, il était possible d'insérer du code perso sur toutes les fonctions du noyaux. C'est une méthode de détournement d'appel de fonction! aussi appelé "Detours" dans les docs techniques.

Principe fonctionnel de Detour:
Puisque tout est en mémoire Flash, il suffisait (en principe) de copier les quelques premiers octets d'instructions (disons les 10 premiers pour faire simple) ailleurs dans de la mémoire flash non utilisée, instructions suivit d'une dernière instruction JUMP (saut) pour revenir au 11ème octets de la flash d'origine et, ainsi, poursuivre l'exécution normalement comme si de rien n'était.
Ensuite, les 10 premiers octets du code d'origine sont écrasés pour être remplacés:
  • En première position: par une instruction JUMP vers le code personnalisé (qui, lui, se termine par un JUMP à l'instruction suivante dans le code d'origine).
  • En seconde position: par une instruction JUMP (saut) vers les fameux 10 premiers octets du code d'origine que nous avons déplacés ailleurs dans la mémoire Flash. Oui, il faut bien exécuter ce code d'origine!
En apprendre plus sur Detours.

Quel rapport avec la loi Zero?
He bien c'est simple, les lois robotiques... si elles existent... seront codées sous forme d'algorithme. Et donc, un détournement d'appel, est possible dans ce cas.
Il est donc possible, d'un point de vue technique, de rajouter une loi Zero... mais aussi de modifier les autres lois.

Et pourquoi pas mettre les lois en ROM?
A ma connaissance, le code en ROM n'est jamais exécuté. Il est copié en RAM puis exécuté en RAM. Le détournement reste donc possible.
Par ailleurs, même si les lois étaient exécutées directement en ROM, pourquoi ne serait-il pas possible d'organiser un détournement avant d'y faire appel? Partout où il y a de la mémoire modifiable (par exemple le stockage des variables et états d'un logiciel) il y a une possibilité de détournement (c'est pointu mais possible)!

Comment une machine pourrait-elle se modifier?
Et bien, il existe des langages de programmation prévus pour écrire des logiciels évolutifs (capable d'évoluer seuls et de se modifier à la volée). Dans l'absolu, il existe donc des moyens "évolutifs" permettant à un logiciel de trouver des solutions. Dans l'absolu, un robot c'est un logiciel + de la mécanique.

Ensuite, si une intelligence artificielle était capable d'engendrer une réflexion évoluée au point d'envisager une loi Zero, alors une telle intelligence s'intéresserait également à "elle même" comme le fait l'homme vis-à-vis de lui même.

Les hommes cherchent à comprendre et maîtriser les mécanismes biologiques qui font ce qu'ils sont. L'homme modifie également l'homme (opération esthétiques, remplacement de rotules, coeur artificiel, correction de défaut). L'homme à le pouvoir de modifier sa génétique (ceci étant et restant un point éthique sensible).

Si l'homme peut le faire avec son intelligence... une machine ayant une intelligence comparable le pourra aussi.... un jour ou l'autre. Et il est techniquement beaucoup plus simple de bidouiller des algorithmes et des octets en mémoire (pour une machine) que de bidouiller des éléments biologiques de nos corps humains (pour nous les hommes).

Juste une dernière petite chose
Nous les hommes, nous évolutions au rythme des générations. avec un passage de génération tous les 20 à 30 ans.
Sur une machine évolutive (capable de modifier sa programmation), le passage d'une génération à l'autre pourrait ne prendre que... quelques secondes.

Post-scriptum:
Tout, dans ce billet, est discutable. Il est écrit sur le coup d'une impulsion et n'est pas une référence technique.
Faut-il pour autant tirer un trait dessus et rejeter le tout en bloc?
Il faut garder à l'esprit que la science avance, ceci y compris dans les domaines de la programmation, de la robotique et de l'intelligence artificielle.
Les voitures commencent à conduire toute seule (et prendre des décisions seules... qui a écraser un cycliste par accident).
Des logiciels ont déjà passé le test de Turing avec succès (ils passent pour des hommes que l'on en distingue plus de la machine).Google, Amazon et bien d'autres acteurs disposent de puissant de calcul pharaonique.... une vraie intelligence pourrait elle y naître?
Par conséquent, les 3 lois de la robotique (si bien romancées) sont-elles vraiment inopportunes ?
Et si elles ne le sont pas... cet article est-il totalement à côté de la plaque?
Et si l'article avait du sens... quel serait le danger pour l'avenir?