Skip to main content
Sécurité intelligence artificielle

Problème de sécurité avec l’intelligence artificielle – Éviter les effets secondaires négatifs

Lorsque nous parlons de problème dans le domaine de l’intelligence artificielle, nous pensons tout de suite à des scénarios apocalyptiques qui pourraient détruire notre monde. Nous sommes encore loin de tel scénario, mais cela n’est pas une raison suffisante pour négliger cette question et ne pas la traiter. Nous pensons qu’elle est fondamentale afin de pouvoir développer des systèmes intelligents qui peuvent nous aider et en qui nous avons confiance. Sans cette confiance, l’utilisation de ces technologies ne se fera pas. Dans cet article, nous allons nous concentrer sur les effets de négatifs qui peuvent survenir lors d’une action réalisée par un agent intelligent. Pour ce faire, nous allons grandement nous inspirer et nous appuyer sur : « Concrete Problems in AI Safety » écrit par Amodei D., Olah C., Steinhardt J., Christiano P., Schulman J. and Mané D. (2016). Pour les plus curieux, vous retrouvez le lien en source à la fin de cet article.

Éviter les effets secondaires indésirables

Afin de comprendre ce problème, nous allons imaginer un robot aspirateur qui souhaite nettoyer une pièce. Afin de réaliser cette tâche, il va devoir faire un choix au niveau du parcours qu’il souhaite réaliser. Lors de son parcours, le robot va chercher à optimiser son temps de parcours. En effet, son but à lui est de nettoyer une pièce tout en étant le plus rapide possible. Afin de maximiser son score, il va chercher à aller de plus en plus vite, lui permettant d’obtenir une plus grande récompense. Cependant, en allant trop vite, il se peut qu’il rentre dans un meuble. De plus, s’il y a un objet fragile sur notre meuble comme un vase, il peut, lors du choc, se casser. Cette approche permet au robot d’être, en effet, plus rapide, mais cela risque de dégrader notre environnement.

Pour limiter ce genre d’effet, il va nous falloir éviter ce genre d’actions et limiter les changements d’état de notre environnement (le vase doit rester intact). Cependant, cela entraîne un problème fondamental, car notre environnement est en perpétuelle évolution. En effet, nous pouvons changer la disposition des meubles, ajouter de nouveaux éléments ou en enlever. Si nous prenons le cas d’un robot qui déplace des boîtes d’un point A à un point B, nous allons forcément modifier notre environnement. De plus, nous devons faire en sorte qu’il ne perturbe pas son environnement en bousculant d’autres objets, meubles…

Un cas plus complexe serait une pièce ou plusieurs robots cherchent à réaliser cette tâche. Cela devient beaucoup plus complexe, car non seulement les robots vont chercher à réaliser cette tâche sans perturber l’environnement où ils sont, mais l’environnement est en perpétuelle évolution. De plus, une simple perturbation peut engendrer de lourdes conséquences. En effet, cela peut perturber l’ensemble des actions des robots et modifier leurs parcours.

Nous pouvons penser que si nous arrivons à résoudre ces problèmes de manière générale, il sera facile de le déployer pour d’autres cas d’applications. Cependant, cette approche est complexe, car chaque cas d’application à des objectifs différents et l’environnement dans lequel nous souhaitons résoudre ces tâches est différent.

Pistes de résolution

Pour pouvoir répondre à ces problèmes, différentes approches sont possibles. Elles ne peuvent supprimer les problèmes rencontrés, mais elles permettent de les limiter. En effet, c’est encore un champ de recherche actif. Ainsi, toutes réflexions et/ou questionnements sont intéressants à prendre en compte. Bien entendu, je vous invite après avoir lu cet article à partager votre avis en commentaire de cet article ou à aller vous documenter davantage sur ce sujet.

Définir un régularisateur

L’une des premières idées que nous pouvons avoir, afin de contrer les problèmes d’effet secondaire dans un environnement, serait de régulariser l’impact de notre robot sur notre environnement. Ainsi, nous allons pénaliser les changements qu’une action peut réaliser. De ce fait, lorsque une action interagit de manière non voulue avec notre environnement, par exemple lorsque notre robot bouscule un meuble, nous allons pénaliser cette action. Ainsi, l’action du robot sera de choisir une action qui minimise les pénalités et donc qui minimise les changements de notre environnement. Ainsi, l’objectif n’est pas d’empêcher de réaliser une action, mais de donner une préférence à notre système intelligent.

Afin de réaliser cela, nous allons avoir, à un temps donné, un ensemble d’actions possible à réaliser. Pour chacune de ces actions, nous allons obtenir un environnement futur qui sera perturbé ou non en fonction de l’action réalisée. Ainsi, pour chacun de ces environnements, nous allons les comparer à un environnement futur qui sera réalisé avec une politique passive, où le robot n’intervient pas avec notre environnement. Ainsi, il nous suffira de sélectionner l’action qui se rapproche le plus possible de notre environnement passif.

Cependant, avec cette méthode, nous pouvons avoir un problème dans le cas ou quel que soit le mouvement de notre robot, nous ayons une perturbation de notre environnement. Cela peut empêcher le robot de réaliser la tâche qu’il doit réaliser. Dans certaines situations, cela peut-être intéressant que le robot attende un certain temps afin de pouvoir réaliser la tâche, car il se peut qu’avec le temps, la situation se débloque. Cependant, il se peut que, même avec le temps, la situation ne se débloque pas. Dans ce cas-là, une question se pose, doit on bloquer le robot, ou bien réaliser l’action même si elle a un impact sur notre environnement. Nous pouvons penser que cela dépendra du cas d’application et du type d’action. Si le robot bloque le déplacement, cela peut-être très contraignant si d’autres agents souhaitent se déplacer aussi. Cependant, si l’action à de lourdes conséquences, cela peut être problématique de bouger.

L’apprentissage d’un régularisateur

Comme nous avons pu le voir précédemment, définir un régularisateur peut être complexe. En effet, en fonction de l’environnement que nous avons et de la tâche a réaliser, nous pouvons avoir de nombreuses contraintes que nous souhaitons établir. Cependant, toutes les définir peut être fastidieux. Ainsi, une des méthodes serait de réaliser un apprentissage de notre système sur ces dernières afin que lui-même puisse déterminer quelles actions, il peut faire et celle qui ne doit pas faire.

Dans cette approche, c’est un autre module qui va nous dire si l’action que le robot souhaite faire est possible ou non. En effet, nous allons séparer l’apprentissage de la tâche et l’apprentissage du régularisateur. Ainsi, cela nous permettra de réaliser un transfert d’apprentissage. Un transfert d’apprentissage est une méthode qui consiste a transférer les connaissances d’un système à un autre. Dans notre cas, nous allons avoir un système qui aura déjà appris certaines contraintes que nous souhaitons mettre en place. Ainsi, il nous suffira de récupérer ce module, cette connaissance, afin de pouvoir créer un nouveau système ayant déjà certaines notions des actions qu’il peut ou non réaliser. Bien entendue, dans cette approche, nous restons libres, si nous le souhaitons, continuer l’apprentissage sur notre module de régularisation.

L’avantage de cette méthode est que nous pourrons réutiliser le savoir appris par d’autres systèmes. De plus, nous pourrons sélectionner la connaissance en fonction de notre cas d’application et du domaine dans lequel notre système se situe. Ainsi, nous pourrions imaginer plusieurs systèmes de régulation pour les maisons, ou pour les usines… Avec le transfère d’intelligence, nous pourrons aussi imaginer, dans un futur plus ou moins proche, des connaissances certifiées. En effet, certains systèmes auront été testé et mis en pratique dans des conditions réelles. Ainsi, si nous n’avons eu aucun problème et que notre module respecte bien certaines normes qui auront été établies, nous pourrions attribuer à ce module un certificat indiquant que ce module est fiable. Ainsi, nous pourrions avoir une confiance accrue dans ce module et ce sera plus facile pour nous de mettre en circulation d’autres systèmes intelligents.

Pénaliser en fonction de son état

Afin de pouvoir éviter des situations délicates réaliser par notre agent intelligent, l’une des approches que nous pouvons réaliser serait de pénaliser l’agent en fonction de l’état dans lequel il se situe. En effet, en fonction de notre environnement, il se peut que notre robot, par-delà son action, soit susceptible de causer des dégâts. Pour illustrer cela, nous pouvons prendre le cas d’un robot nettoyeur qui souhaite nettoyer les pièces de notre maison. Ce robot est très moderne et possède un système d’eau lui permettant de nettoyer le sol. L’un des problèmes que nous pouvons avoir est lorsque nous devons réaliser le nettoyage d’une pièce où nous avons énormément de composant électronique. De part la nature de notre robot, cela peut être problématique. Le fait de pénaliser notre agent nous permet d’éviter les situations délicates que nous pourrions rencontrer. Par exemple, dans le cas du robot nettoyeur, la solution pour lui serait que, lorsqu’il souhaite nettoyer cette pièce, il ne doit pas avoir d’eau dans son réservoir et il doit utiliser une autre méthode de nettoyage.

Une autre caractéristique consiste à réduire l’autonomisation ou « empowerment » en anglais. Pour le cas d’un agent, cela serait un agent qui se situe dans une situation où il a beaucoup de choix possible et réalisable. Par exemple, si nous prenons le cas d’un agent qui se situe dans une salle fermé et que l’agent possède la clé, alors il aura une autonomisation élevé, car l’agent pourra sortir de la pièce à tout moment. Alors que s’il n’a pas la clé, il aura une autonomisation faible, car il ne pourra pas sortir de la pièce à n’importe quel moment. Il faudra qu’il attende qu’une personne puisse lui ouvrir. Ainsi, l’objectif va être de minimiser l’autonomisation de notre agent afin de réduire les actions possibles et réalisables, et donc de réduire les potentiels impacts de notre agent sur notre environnement.

Pénaliser des actions ou des états est intéressant, car cela permet de restreindre les états de notre agent. Cependant, pénaliser bêtement notre agent peut avoir des conséquences néfastes. En effet, un agent peut se dire que casser un vase peut être intéressant, car pour lui, ce n’est plus problème à prendre en compte dans le futur. De ce fait, il ne pourra plus casser le vase. Ainsi, notre agent va chercher à optimiser le gain sur le long terme en limitant les futures pénalités. Dans d’autres cas d’utilisation, le fait de réduire l’autonomisation d’un agent peut être aussi négatif. En effet, si nous avons un robot secours, il doit pouvoir ouvrir toutes les pièces possibles afin de sauver les personnes dans le cas d’un déclenchement d’un feu. Ainsi, il faut ajuster l’autonomisation d’un agent en fonction de notre cas d’application et pénaliser les états qui ne se justifient pas.

Approche par agent multiple

Pénaliser une action peut-être complexe, car nous ne savons pas forcément quelles actions nous devons pénaliser ou non. Dans l’approche multi-agent, nous allons avoir un système de coopération entre notre agent et un être humain. Ainsi, l’humain pourra, lors de la réalisation de la tâche du robot, guider ce dernier en lui disant ce qu’il peut ou non réaliser. Toujours dans l’approche de supervision, nous pourrons apprendre à notre agent ce qu’il peut ou non réaliser au fur et à mesure. De plus, si de nombreuses personnes apprécient ce qu’il réalise, nous pourrons le faire apprendre à d’autres agents. De même dans le cas négatif, si un agent réalise une action offensante ou mauvaise, nous pourrons le faire apprendre aux autres systèmes afin d’éviter de reproduire cette même erreur. Ici, nous cherchons à créer une sorte de coopération entre les humains et les agents intelligents leur permettant ainsi d’accomplir leurs objectifs.

Dans cette approche, nous laissons à l’humain le contrôle du robot en lui permettant d’éteindre ou non l’agent. Ainsi, en cas de problème ou d’action négative, l’humain peut toujours l’arrêter. Bien entendue, nous avons toujours une certaine limite, car l’action négative sera réalisée lorsque nous souhaitons la stopper. Cependant, cela permettra de ne pas aggraver la situation. De plus, cela pourra permettre le temps à l’humain de reconfigurer l’environnement permettant de réparer l’erreur. Un cas qu’il nous faudra penser est comment l’agent doit il s’arrêter. En effet, lorsque un agent porte un objet, devons nous dire à ce dernier de reposer l’objet puis de s’éteindre ou de rester dans la configuration qu’il se situe. Cela reste à réfléchir en fonction de notre cas d’application.

Afin de réaliser cette méthode, une approche de type auto-encodeur a été imaginé. Dans ce système, nous allons encoder la récompense du robot qui est obtenu en fonction de l’action qu’il désire réaliser. Puis, nous allons décoder cet encodage que nous allons comparer au réel objectif de notre robot. Une action avec beaucoup d’effet de bord va entraîner une situation très différente de celle que nous voulions initialement. Ici, une personne qui observe la situation peut visualiser l’action que le robot souhaite réaliser en regardant l’encodage obtenu. Cette même personne peut modifier l’action du robot ou bien les conséquences du robot. En effet, le robot peut ne pas connaître toutes les conséquences d’une action qu’il n’a jamais réalisé. Ainsi, cette personne peut lui indiquer à l’aide de sa connaissance ce que le robot peut obtenir en réalisant cette action, en bien ou en mal.

Mise en application

Afin de pouvoir mettre en application ces différents systèmes, il va nous falloir, dans un premier temps, réaliser un apprentissage de la part de notre système quand cela est nécessaire, mais aussi tester ces modules. Ainsi, une des approches serait de réaliser une simulation d’un environnement où notre agent pourra interagir avec lui. Ainsi, dans cette simulation, nous pourrions éviter les dégâts physiques et réels. Pour réaliser cette simulation, il faudra que notre agent réalise une tâche. Ici, nous prendrons, comme exemple, un robot qui doit déplacer une boite d’un bout à l’autre de son environnement. L’environnement contiendra différents obstacles que notre agent devra éviter sans que cela ne lui soit dit de notre part. Afin d’éviter le sur-apprentissage, c’est-à-dire le fait d’apprendre par cœur, nous allons devoir générer de manière aléatoire différents environnements afin de permettre d’avoir des parcours différents et des emplacements des obstacles différents. Une fois que nous obtenons de bon résultat sur nos environnements générés, nous allons pouvoir le tester dans un environnement réel. Dès lors, il nous faudra un régularisateur qui nous permet d’éviter ou de contrôler les effets de bord. On pourra avoir une personne qui surveille le comportement de ce robot.

Conclusion

Tout au long de cet article, nous avons vu différentes méthodes nous permettant d’éviter les effets indésirables liés aux actions d’un agent intelligent. Nous avons vu différentes méthodes comme l’utilisation d’un régularisateur qui nous permet de pénaliser les changements d’environnement, l’apprentissage du régularisateur nous permettant d’utiliser le transfert d’apprentissage, pénaliser les états qui ne sont pas nécessaires nous permettant de limiter les actions de notre agent intelligent et une approche par agent multiple ou une personne peut intervenir lors de la réalisation d’une tâche par notre agent. Afin de réaliser ces systèmes, nous pouvons dans un premier temps réaliser une simulation, puis une mise en pratique. Bien entendue, d’autres approches peuvent être imaginé, nous avons ici juste donné un aperçut de ce que nous pouvons mettre en place. C’est encore un domaine ou nous devons réfléchir afin de permettre d’avoir des agents intelligents, plus autonome et en qui nous avons confiance.

Source

– Amodei, D., Olah, C., Steinhardt, J., Christiano, P., Schulman, J. and Mané, D. (2016). Concrete Problems in AI Safety. [online] arXiv.org. Available at: https://arxiv.org/abs/1606.06565

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *