Intelligence artificielle et stupidité biologique

“Computers are like Old Testament gods: lots of rules and no mercy.”–Joseph Campbell

Bonjour à tous !

Cet article fait partie d’une série sur l’informatique, vue sous l’angle des concepts. On a vu précédemment :

Il s’emboîte également dans notre participation à la Fête de la Science ! Pour rappel, vous pourrez nous retrouver samedi à partir de 10h à l’IUT pour voir ce qu’on a prévu.

Une bonne partie de cet article est inspiré de l’excellent article du Guardian « Franken-algorithms: the deadly consequences of unpredictable code », que je vous encourage à aller voir.

Introduction

Aujourd’hui, on va parler des conséquences de l’abstraction. C’est tellement beau comme suite, j’en vibre de joie ! Tiens non, c’est mon téléphone, fausse alerte.

Commençons donc par un petit comic de mon site préféré, xkcd :

On l’avait déjà posté à l’occasion de la Fête de la Science, mais il est temps de s’y intéresser plus en détail. Ce qu’il dit est extrêmement intéressant : il compare l’ADN, fruit du processus le plus basique qui soit (modifier au hasard ; en résumé : si ça marche, on continue, sinon, on jette) au code du moteur de recherche le plus célèbre du monde, fruit d’un effort concerté d’optimisation sur plusieurs années. Pour votre information, voici à quoi ça ressemble chez Bing :

Ce n’est qu’une partie de la page : sur le côté, vous voyez sa longueur entière, avec la zone sélectionnée en gris sur la barre. Il y a ici 1,1×105 caractères au total.

Le code résultant est pour le moins hideux, mais il est (espérons-le) toujours lisible pour les développeurs, qui disposent d’outils pour naviguer dans ce fouillis et en tirer les parties importantes, un des plus indispensables étant votre navigateur.

L’ADN, a contrario, n’ayant pas de logique précise ni d’outil de développement, et devant de plus produire quelque chose d’autrement plus gros qu’une simple sélection dans une base de données, est donc fatalement immensément plus complexe.

Penchons-nous sur le mimivirus. Déjà, 20/20 pour le nom, c’est carrément choupi, cependant au niveau tête on repassera (voir ci-contre). Cette petite bestiole infecte les amibes, des microorganismes de taille moyenne proche de celle des bactéries, et possède un génome d’1,2 × 105 paires de bases (pb). Légèrement plus de pb que de caractères dans le code source de Bing !

Cependant, la comparaison s’arrête là. La structure des « phrases » n’ayant aucun rapport, il est dur de faire une comparaison, d’estimer la densité d’information dans un code source et dans l’ADN. D’autant qu’il y manquerait quelque chose : les interactions.

En effet, l’ADN ne contient que l’information nécessaire à la formation des protéines. Ces protéines interagissent ensuite en suivant des lois physiques, que ce soit entre elles ou avec d’autres molécules diverses et variées, introduites volontairement ou non dans l’organisme. Il manque donc beaucoup au seul ADN pour décrire un organisme complet !

Heureusement, ce n’est pas le cas dans les programmes informatiques… n’est-ce pas ? Si vous avez lu l’article sur l’abstraction, vous connaissez la réponse (et si ce n’est pas le cas, il serait peut-être temps, non ?).

Fatale partouze algorithmique

On avait vu dans l’article précédent l’abstraction, à savoir la structure en couche qui sous-tend le fonctionnement des programmes. Cependant, on avait abordé un cas assez simple, à savoir un navigateur affichant une vidéo Flash, un peu, dans le cadre biologique, comme on peut parler de l’insuline qui régule la glycémie : c’est vrai, mais c’est oublier toute la complexité autour. Complexité qui peut s’avérer essentielle quand les résultats ne correspondent pas aux prévisions : par exemple, pourquoi l’insuline est-elle légèrement sécrétée en hypoglycémie ? Pourquoi Firefox vient de planter alors que son code n’a rencontré aucune erreur ?

Vous me direz : bah, ce n’est pas très grave, ce n’est pas comme si cette complexité pouvait tuer, n’est-ce pas ? Et puis, même si c’est compliqué, les informaticiens savent ce qu’ils font, puisqu’ils l’ont créé ! Les ordinateurs ne sont pas stupides.

L’intégralité de ces phrases sont fausses, mais on va les prendre doucement et une par une.

Les ordinateurs sont rapides, mais stupides

Ok, le titre vend un peu la mèche. En effet : comme on l’a vu dans l’article sur Turing, votre ordinateur est une simple machine à calculer. Très rapide, la machine à calculer. Mais elle calcule. Vous lui demandez 15055311165+141548456120154531202.1544351021454 et elle vous sort la réponse correcte en quelques millisecondes.

C’est ce qui explique qu’on puisse faire tant de trucs cools avec : il suffit de trouver un moyen de représenter l’information souhaitée en binaire, et hop, le proco fait ses petits calculs et vous crache le résultat.

Le problème arrive au moment où on ne sait plus comment représenter l’action souhaitée par des opérations logiques. Par exemple, comment identifier un panneau Stop dans l’infinité de conditions d’éclairage à laquelle ce dit panneau peut être soumis.

Là où nous perdons le contrôle

Comment fait-on, donc, pour faire en sorte que le programme repère un panneau Stop ? En créant un algorithme qui va fouiller une énorme base de données de photos de panneaux Stop sous tous les angles, conditions d’éclairage, et formes possibles, et en lui demandant de repérer les similarités.

Vous devriez remarquer que j’ai écrit une stupidité : après avoir écrit « infinité », j’ai dit « une […] base de données de photos de panneaux Stop sous tous les angles, conditions d’éclairage, et formes possibles ». En effet, la base de données, aussi grosse soit-elle, oubliera forcément quelques cas.

Ces oublis ont-ils des conséquences ? Eh bien… Imaginez un algorithme qui ne serait entraîné qu’avec des photos d’humains blancs. Montrez-lui par la suite une photo d’humain noir. Que se passe-t-il ? Il peut le confondre avec un gorille. Pas parce qu’il est raciste. Parce qu’il est « stupide » : il réalise une simple opération logique et il applique le résultat.

Il est ici utile de remarquer que parce qu’un système fonctionne selon des règles logiques, cela ne signifie pas que tous ses développements soient prévisibles. Ce devrait être assez évident pour les bio : en effet, si nos organismes sont issus d’un ensemble de règles définies, les interactions complexifient tellement les phénomènes qu’il devient nécessaire d’employer massivement les statistiques pour estimer la probabilité d’obtenir une réaction « au hasard », venue d’un élément externe et non dû à ce qu’on cherche à montrer.

Ce qui est à la base relativement simple – un algorithme – se complexifie de plus en plus avec l’ajout d’interactions, et encore davantage quand ces derniers peuvent se reprogrammer en partie, aboutissant à des programmes qui peuvent marcher en apparence… jusqu’au moment où l’inattendu frappera.

La complexité, ça tue

Connaissez-vous Elaine Herzberg ? Elle était sur la trajectoire d’une voiture conduite par un algorithme. Ce dernier l’avait très bien repérée grâce à sa batterie de radars et de lidars (comme un radar mais qui marche à la lumière, infrarouge en général). Enfin, « elle », il a un peu hésité. Ce n’est qu’à la dernière seconde, après l’avoir classé comme « voiture » et espérant qu’elle s’écarterait de la trajectoire, qu’il a réussi à comprendre ce qu’il avait en face de lui : une femme avec un vélo. Incapable de faire une embardée, il a donc rendu le contrôle au pilote, qui n’a pas réagi dans la seconde qu’il lui restait. Elaine mourut.i

Le plus cruel, dans cette histoire, est peut-être que le véhicule utilisé, une Volvo, est équipé en série de fonctions d’aide au pilotage comprenant entre autres le freinage d’urgence. Ces fonctions sont cependant désactivées quand le système de pilotage autonome conçu par Uber est activé, pour éviter des incidents… dus à des interactions indésirables.

Tout le problème est alors de déterminer la responsabilité : si ici on peut éventuellement l’attribuer au pilote, qui aurait dû être plus attentif, que faire lorsque le cas est plus complexe ? Par exemple, lorsqu’une Toyota se retrouve à accélérer brutalement sans raisons apparentes, et ce à cause de bugs dans le code gérant l’accélération.ii Le pilote n’a pas commis de fautes.

On voit ici un premier problème, lié à la justice : bien sûr, les ingénieurs cherchant à développer un logiciel ne peuvent pas prévoir l’intégralité des cas qui se présentent à eux dans un système ouvert. Il faudrait des milliers d’heures de tests pour ça. Cependant, on ne peut laisser cette complexité devenir une excuse pour laisser passer n’importe quoi : imaginez si l’industrie pharmaceutique se cachait derrière la complexité des organismes pour éviter toute critique après la sortie d’un médicament raté ?

On peut voir en partie, bien que sur un plan très différent, le problème de responsabilité dans les diverses horreurs qu’ont rendues possibles les réseaux sociaux ; le problème d’interaction n’est cependant pas au même niveau (interaction des utilisateurs avec le logiciel VS interaction du logiciel avec d’autres logiciels).

Ordo ab chao

Du chaos naît l’ordre. Apparamment c’est vaguement maçonnique en plus (enfin selon la première page de résultats Bing) donc je ne peux résister à la tentation de m’en servir comme titre. Comme ça la pyramide qui parle pourra augmenter ma paie. YES.

Intéressons-nous maintenant à une seconde conséquence de l’abstraction. Vous le savez peut-être, un des modèles pour expliquer l’apparition de la vie est la « soupe primitive » : un modèle pour l’apparition de la vie, basé en partie sur les travaux de Stanley Milleriii : vous mélangez différents composés chimiques, vous chauffez un peu, et paf ! ça fait des chocapics acides aminés, base des protéines, qui sont indispensables au fonctionnement des cellules vivantes.

Maintenant, imaginez ça dans un autre contexte. Nous ne sommes plus sur Terre, mais dans un espace numérique où informations s’échangent, se croisent et se percutent. Au milieu de tout cela, des structures primitives tentent de réagir à ces échanges en suivant leurs règles fixes pendant que d’autres analysent à la volée ces variations pour essayer d’optimiser leurs réactions.

Accélérez le tout à vitesse de processeur : 10 opérations par picoseconde, par exemple, pour un processeur relativement communiv (si vous galérez à imaginer une picoseconde : dites-vous qu’en passant une nanoseconde – 1000 picosecondes – à la surface du soleil, vous ne seriez pas brûlés). Qu’obtient-on ? Beaucoup de choses imprévisibles, déjà. Et pourquoi pas, à force de remaniements de variables et de changement de comportement, une forme de conscience artificielle ?

Cet univers dont je parle, il ne s’agit pas de vos ordinateurs, mais bien de celui des places financières, là où la puissance des ordinateurs impliquées, la quantité d’informations et les logiciels les plus avancés – donc plus ou moins expérimentaux – sont déployés. Improbable ? Les bactéries ne se reproduisent qu’une fois par heure – soit 6×1012 cycles de processeurs – et leur évolution a bien permis de faire émerger des êtres vivants complexes…v

Et si les informaticiens devenaient biologistes ?

i : https://www.nextinpact.com/news/106256-accident-mortel-uber-rapport-preliminaire-ntsb-permet-dy-voir-un-peu-plus-clair.htm : en français, très intéressant

ii : http://users.ece.cmu.edu/~koopman/pubs/koopman14_toyota_ua_slides.pdf : en anglais, technique

iii : https://www.pourlascience.fr/sd/chimie/une-soupe-primordiale-numerique-11995.php un article récent à ce sujet

iv : Intel i5-6400 : 4 cœurs à 2,7 GHz, et une conversion

v : Notez d’ailleurs que le rédacteur du Guardian indique avoir interrogé plusieurs spécialistes en IA qui ne peuvent éliminer complètement l’hypothèse d’une singularité tirant sa source dans la Bourse.

1 Comments