Journal d'un terrien

Web log de Serge Boisse

On line depuis 1992 !

Recherche personnalisée

Implémenter les lois de la robotique


Mon propos ici est de chercher comment on pourrait implémenter les dites lois dans un système intelligent. En tant qu'informaticien, je me rend bien compte que la tâche est presque impossible. Toutefois, sur un problème complexe, il est toujours possible d'appliquer la bonne vieille méthode de Descartes, n'en déplaise aux holistes : diviser le problème en sous-problèmes plus faciles et recommencer... Essayons donc.

Crées et popularisées par Isaac Asimov dans son excellent livre fondateur, "les robots", les fameuses "lois de la robotique" furent au nombre de trois initialement  (il est à noter qu'on en trouve différentes formulations, qui diffèrent par des points de détail). Cinquante ans plus tard Asimov ajouta la loi zéro, qui a priorité sur les trois autres :

Loi zéro :
Un robot ne peut par son action mettre l'humanité en danger, ni, restant passif, laisser l'humanité en danger.
Première loi :
Un robot ne peut par son action mettre un être humain en danger, ni, restant passif, laisser un être humain en danger, sauf si cela est en contradiction avec la loi zéro.
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 zéroième ou la première Loi.
Troisième loi :
Un robot doit protéger sa propre existence aussi longtemps qu'une telle protection n'est pas en contradiction avec les lois qui précèdent.
Il est à noter que dans l'idée de Asimov, les lois ne sont pas des directives strictes, mais génèrent un "potentiel" variable, celui des loi 0 et 1 étant le plus important. Un ordre impératif (potentiel fort de la loi 2) peut ainsi entrer en conflit avec un risque minime de mettre un être humain en danger (faible potentiel de la loi 1). Sans cette notion de potentiel, les robots ne feraient rien de ce que l'on demande, car en fait presque toutes les actions d'un robot peuvent se révéler plus ou moins dangereuses pour les humains : conduire un véhicule, par exemple (risque d'accident), mais même parler (risque de blesser la susceptibilité de l'humain à qui l'on s'adresse), ou simplement servir un verre d'eau à un humain (risque minime, mais existant, que l'eau contienne un germe pathogène), etc... Il existe de plus une frontière floue entre "mettre un humain en danger" et "faire du tort à un humain". L'ajustement correct des potentiels de chaque loi est donc le point clef de la robopsychologie.

du sang sur une main de robot ? Les lois zéro et un, par leur seconde clause ("ni restant passif..."), font que le robot ne peut être inactif, même en l'absence d'ordres reçus. Lorsqu'il n'a pas d'ordre à exécuter, le robot doit rechercher ce qui pourrait mettre un humain (ou l'humanité !) en danger... La loi zéro autorise explicitement un robot à mettre en danger un humain si cela peut protéger l'humanité (on pense à la "neutralisation" d'un dictateur fou, etc.). Mais bien sùr, si l'on ne veut pas que les robots tuent tous les présidents des nations nucléaires au motif qu'ils ont la capacité de déclencher une guerre atomique, les "potentiels" des lois zéro et un ont intérêt à être sacrément bien ajustés...

Enfin un robot est nécessairement un système multitâche : à un instant donné, il se peut qu'il doive exécuter plusieurs ordres, tout en étant mû par les potentiel des quatre lois. L'ordonnancement des tâches dans un robot asimovien s'apparente à celui qui existe dans un système informatique temps réel, à ceci prêt que l'ordonnanceur lui même doit vérifier que la séquence de tâches choisie ne comporte pas de risque pour les être humains ou l'humanité. Exemple : si je donne au robot les deux ordres suivant : 1) préparer dans un verre une solution d'arsenic concentrée, et 2) donner le verre à un être humain, chaque action individuelle est permise par les lois de la robotique, mais leur conjonction viole la première loi ! Notons qu'un humain malicieux pourrait utiliser deux robots qui exécutent chacun une partie de l'action : que se passe-t'il alors lorsque le second robot s'apercevra que son action a tué un humain ?

Dans les romans d'asimov, si malgré tout le robot s'aperçoit que son action a violé l'une des lois, singulièrement la première, il "devient fou" et tombe en panne. Ce n'est pas très réaliste ! A priori, un robot n'a pas "d'état d'âme" relatif à ses actions passées. Ou alors il faudrait rajouter une autre loi : si un robot s'aperçoit que son action passée a violé l'une des deux premières lois d'une manière conséquente, il se met en veille et cesse de faire quoi que ce soit. Je ne pense pas que cette cinquième loi soit bien utile...

Il est intéressant aussi de voir qu'un robot doit protéger sa propre existence mais qu'il n'est pas tenu de protéger celle d'autres robots : Ainsi un robot pourrait se défendre contre un autre robot qui lui voudrait du mal (suite par exemple à un ordre humain). Un conflit entre robots est donc une chose parfaitement possible. Ici aussi il faudrait peut être ajouter une loi quatre :
Un robot ne peut mettre un autre robot en danger, sauf si cela contredit l'une des lois précédentes.
Ceci assure qu'un robot ne va pas spontanément en détruire d'autres, sauf s'il s'est mis en tête que cela pourrait sauver le monde... Je me demande si cette loi quatre est utile ? On peut aussi envisager de modifier comme suit la troisième loi :
Un robot doit protéger sa propre existence et celle des autres robots aussi longtemps qu'une telle protection n'est pas en contradiction avec les lois qui précèdent.
Dans le monde d'asimov, les robots sont en fait vus comme des esclaves dociles (en général !) et qui, de plus, ont à coeur de protéger les humains. On remarquera qu'il n'y a pas de loi du genre : "en l'absence d'ordres à éxécuter ou de danger détécté, le robot doit essayer de se rendre utile". Mais en fait une telle loi serait tellement vague qu'il vaut mieux utiliser la loi deux pour lui faire accomplir des chose utiles: dans le cas d'un robot domestique, on peut lui donner des ordres permanents, du genre : "à la fin de chaque repas, débarasse et fais la vaiselle",  ou bien "tous les jours, passe l'aspirateur, si tu vois que cela ne dérange personne" !

Ce qu'il faut bien comprendre, c'est que sans les lois d'asimov, un robot (ou n'importe quel programme d'ordinateur intelligent, la fameuse IA) serait quelque chose d'extrèmement dangereux. Personellement je ne laisserais pas une machine piloter ma voiture si je sais qu'elle ne différencie pas un ballon d'un enfant traversant la route et  n'accorde pas plus de valeur à l'un qu'à l'autre ! Or ce genre de machines, tout d'abord pseudo inteligente, puis de plus en plus compétente, va progressivement envahir notre vie. Il n'est pas impossible qu'à l'aide des nanotechnologies et de ce que l'on appelle l'ingénierie évolutive, on puisse construire d'ici quelques décennies, pas plus, des machines plus intelligentes que l'être humain. La question de l'implémentabilité des lois d'Asimov dans ces machines devient une question d'importance pratique de plus en plus cruciale pour l'avenir de notre espèce, rien de moins !

Le problème...

Si on veut écrire un programme qui puisse piloter un robot asimovien (et même peut être que tout programme informatique devrait respecter ces lois ?), les choses apparaissent d'emblée très compliquées. Il est clair que la science informatique ne permet pas, actuellement et sans doute pour longtemps, de traiter des problèmes aussi difficiles. Mais voyons donc se trouvent les difficultés :

Tout d'abord il est clair que notre robot doit disposer d'un certains nombre de compétences, ou de capacités, minimales pour mettre en œuvre les quatre lois :  lesquelles, au juste ? Les voici, dans le désordre :
Chacune de ces compétences pose déjà  un problème informatique immense. Un autre problème immense consiste, en supposant que le programme du robot comporte déjà des "modules" spécialisés capables d'accomplir ces tâches, à déterminer ce que le robot doit faire à un instant donné en respectant les fameux "potentiels"  de chaque loi.

On peut néanmoins tenter de modéliser l'algorithme de base du robot (le fameux ordonnanceur des tâches) comme suit :
On suppose que le robot tient à jour en permanence une table des situations susceptibles de déclencher une des quatre lois : cette table contient :
En outre la mémoire du robot contient également à un instant donné :
L'algorithme de base du robot est alors :
  1. Acquérir les informations en provenance de l'environnement. Déterminer parmi ces stimuli lesquels sont des nouveaux ordres, lesquels marquent des situations de danger nouvelles, lesquelles marquent l'avancement ou la fin d'une action entreprise par le robot et lesquelles marquent la fin d'une situation de danger. Pour ce faire, utiliser les compétences listées ci-dessus. Mettre à jour la table des situations et le modèle interne du monde en conséquence.
  2. Mettre à jour la liste des plans d'actions. Déterminer les nouveaux plans d'actions   possibles correspondant à chacune des lois, ainsi que  leur potentiel d'urgence vis à vis des quatre loi et leur difficulté. Vérifier que les nouveaux plans d'action ne violent pas une des quatre lois. Déterminer les plans d'actions devenus inutiles ou impossibles et les éliminer.
  3. Déterminer le plan d'action qui a le plus fort ratio potentiel / difficulté. 
  4. Exécuter la première action du plan et revenir  à l'étape 1.
La première étape est "simplement" une mise à jour de l'état interne du robot en fonction des stimuli qui lui parviennent.

L'étape 2, permet au robot de mettre à jour la liste des plans d'actions qui sont possibles à un instant donné.

L'étape 3, en revanche, détermine le choix du plan d'action à mettre en oeuvre effectivement à cet instant. Il est clair que pour une même situation, les quatre lois vont engendrer (étape 2) plusieurs plans d'actions possibles. ces plans seront plus ou moins prioritaires (les plans qui soustraient un humain à un danger sont plus prioritaires que les plans correspondant au fait d'exécuter un ordre), mais aussi plus ou moins difficile. La solution choisie, choisir le plan qui a le meilleur ratio importance / difficulté, permet au robot de choisir la tâche la moins difficile pour une importance donnée, mais aussi lui permet de trancher entre des actions prioritaires "sauver l'humanité"  mais très difficiles et des actions moins prioritaires (exécuter un ordre) mais bien plus faciles ! Par exemple lorsque qu'un robot ne détecte pas de danger pour les humains qu'il connaît, et n'a acun ordre à exécuter, il pourra alors, mais alors seulement, commencer à éxécuter des taches compliquées pour sauver la planète...

Notons qu'on peut très bien , dès la sortie d'usine, donner au robot un ordre du type "si tu n'as pas d'ordre à exécuter en dehors de celui-ci même, ne fait rien". Un tel ordre est... très facile à exécuter et par conséquent on peut raisonnablement être sùr alors que le robot restera "tranquille" en général. Un problème est alors qu'il est devient possible d'empêcher un robot de porter secours à un être humain en lui ordonnant "stop !", ordre qui est très facile pour lui qui aura donc un score élevé. Tout est bien sûr affaire de pondération. Peut être doit-on envisager de calculer le "score" de l'action envisagée par une formule plus compliquée, genre : score = potentiel / (difficulté +10) ? C'est un point de détail, mais qui a son importance !

L'action 4 permet au robot de faire effectivement quelque chose : une tâche élémentaire. Il faut comprendre que ce sont des tâches très élémentaires que je vois ici, du genre "lever le bras", "avancer d'un pas", "prendre un objet", "prononcer une réponse"; etc. La "granularité" de ces ordres doit être assez fine, pour que les taches 1,2 et 3 soient accomplies suffisamment souvent.

Les tâches 1 à 4 peuvent naturellement, moyennant un peu de programmation temps réel, être accomplies concouramment et non séquentiellement. Notons aussi qu'il est fort possible qu'à chaque cycle le plan choisi change, de sorte que le robot, comme l'âne de Buridan, passe son temps à hésiter entre plusieurs actions. Dans les histoires d'Asimov, cela se produit effectivement parfois !  En principe ce genre de comportement est très rare et résulte de situations très artificielles où deux tâches ont presque le même score.  Il ne semble pas y avoir de solution géniale à ce problème...

Au fait, comment le robot se dépatouille-t-il lorsqu'il reçoit des ordres contradictoires ? Dans les histoires d'Asimov, toujours elles, les robots sont capable de se rendre compte qu'on leur donne des ordres contradictoires, et peuvent même s'en offusquer : "mais vous venez de me demander le contraire, maître !" . Cette compétence est donc à apporter aux robots, et de même la tâche 1 doit permettre d'identifier ces ordres.

Apprentissage des robots

Toujours dans les histoires d'Asimov, les robots ne se contentent pas d'obéir aux quatre lois de la robotique : ils peuvent apprendre. Dans notre modèle ci-dessus d'algoritme de base pour un robot, cela se fait au cours de la tâche 1 (qui est donc une tâche très complexe !).

 Néanmoins l'apprentissage d'un robot sera différent de celui que peut faire un être humain : en effet le robot "asimovien" qui apprend un nouveau fait, est, de part sa nature même, obligé de classer les faits appris dans l'une des cinq catégories :
Il se trouve que la capacité de classer un fait dans l'une de ces catégorie est loin d'être triviale et pourrait, elle aussi, donner lieu à un apprentissage : la mémoire contiendrait aussi des méta-faits (des faits sur les faits) qui permettraient de les classer en catégories.

Ainsi il semble possible qu'un robot ne sache initialement que fort peu de choses,  mais qu'un apprentissage lui permette progressivement de devenir plus compétent. Mais il se trouve que le "peu de choses" qui est nécessaire pour permettre un apprentissage utile et autonome du "sens commun" que possèdent chacun de nous est, comme l'a montré Douglas Lenat avec son système CYC, de  l'ordre de plusieurs millions de faits... Néanmoins ça peut se concevoir.

Ainsi, contrairement à ce que certains ont pu dire, il n'est pas impossible d'implémenter les fameuses loi de la robotique. Il faut "simplement" que le programme d'autoaprentissage prenne dès sa conception en compte l'algorithme de base et le modèle de classification des faits que j'ai exposé.

Devoir de vacances

Pour étudier tout ces problèmes, on peut commencer  avec une version simplifiée : une simulation informatique. Je propose de réaliser une variante du jeu bien connu sims city dans laquelle figureront, outre les sims, des robots auquels les sims, mais aussi le joueur humain, pourront donner des ordres. Si on modèlise en outre les situations qui peuvent être dangereuses pour les sims, on pourra tester différents modèles pour l'algorithme de commande du robot ; la première loi serait bien sur "un robot simulé ne peut blesser un sim, ni restant passif, laisser ce sim en danger !"

Cette simulation aurait l'avantage de laisser de coté tout l'aspect reconnaissance de formes, etc, effectué par le robot, puisque le modèle interne du monde dans l'esprit du (pseudo) robot serait en fait simplement un sous ensemble du modèle de la simulation globale des sims... les dialogues entre robots et sims ou robots et joueurs humain pourraient utiliser initialement un langage formalisé comportant un petit nombre de commandes (deplace tel objet a tel endroit, ferme la porte ...) que l'on élargirait progressivement.

Ce petit monde virtuel simplifie bien le problème mais permet quand même tout un champ d'expérimentation sur la manière d'implémenter les lois de la robotique dans le programme des pseudo robots.

Super idée, non ?

Enfin, on ne peut s'empécher de se poser la question de savoir s'il n'existe pas des "Lois de l'humanotique", des lois auxquelles l'être humain obéirait sans le savoir. Et bien, a mon avis, oui ! clique ici pour en savoir plus...

Journal d'un terrien

Commentaires (6) :

Page : [1] 

Goodfox
Le 02/09/2017 à 13h15
cette simulation des sims existe t'elle ?
Dominique
Le 20/09/2016 à 14h58
Empêcher les naissances n'est pas contraire aux quatre lois et ferait disparaître l'humanité entière sans la mettre en danger.
pierrot
Le 25/09/2015 à 10h29
Qu'est ce que la morale

concept de notre civilisation, bien ou mal ne dépende que de la perception d'un individu ou de l’égrégore. Pour la machine quoi que vous fassiez ce sera pareil.

Elle aura des choix à faire qui ne plairont pas à tous, elle apprendra a supporter la responsabilité de ses actes « si elle en a conscience » « pas évident » ou les conséquences de ses choix, la réaction a une action, mais tout cela sera du calcul.

Vous prévoyez de donner des directives « des lois aux machines, vous voulez quelles soient proches de l'humain mais nous, ne contournons nous pas les lois, les règles, pour assouvir nos buts ?

La question est qu'elle sera le but de la machine intelligente ?

Tous objectifs engendre des conséquences, seront nous prêt a accepter celles-ci ?

Qui sera le responsable des actes d'une machine ?

La machine, le créateur, l'utilisateur ?
puipui
Le 07/02/2015 à 02h10
"Personellement je ne laisserais pas une machine piloter ma voiture si je sais qu'elle ne différencie pas un ballon d'un enfant traversant la route et n'accorde pas plus de valeur à l'un qu'à l'autre !"





les machines peuvent déjà faire la dfférence :p , je pense de plus en plus que la "singularité" va arriver plus vite qu'on si attend la
Guillaume
Le 02/02/2015 à 22h07
Super ton site ! :)<br />rnJ'adore son design et surtout le javascript insérer lorsque l'on bouge la souris !! C'est très original ! :D XD
maevamaeva
Le 20/01/2014 à 10h55
Très interessant


Ajouter un commentaire (pas besoin de s'enregistrer)

Pseudo :
Message :


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