Une "intelligence artificielle open source" est-elle "libre" (et pourquoi il faut s’en soucier) ?

Bonjour à tous et à toutes.
La question dont je voudrais discuter un peu avec vous aujourd’hui c’est est-ce qu’une intelligence artificielle open source c’est pareil qu’une intelligence artificielle libre et pourquoi est-ce que ça a une importance de se poser cette question ?

Il y a quatre points que je vais essayer d’aborder avec vous :
le premier ce sont les libertés, le code source, ce n’est pas une question nouvelle, c’est ce que j’appelle les good old stuff ;
ensuite la question c’est qu’est-ce qui arrive aux libertés quand des intelligences artificielles viennent se mêler du code en quelque sorte ;
est-ce que ça présente des risques et, si oui, que fait-on pour les réduire ;
et puis est-ce que ça un sens de parler d’intelligence artificielle libre, open source, qu’est-ce que ça veut dire exactement, pourquoi est-ce que je vous embête avec ça ?

Première chose : est-ce que finalement libre et open source ne sont jamais que les deux versants d’une même pièce ? J’ai mis un point d’interrogation, c’est une question récurrente, il y a des gens qui disent que oui, des gens qui disent que non, mais disons, essentiellement, que ça ne fait plus autant polémique qu’à une époque, même la Free Software Foundation [1] dit qu’il y a des différences qui sont relativement faibles, même si elle affirme qu’elle préfère parler de libertés. Et puis, par ailleurs, vous avez aussi l’Open Knowledge Foundation [2] qui dit que open, free, « libre », tout ça c’est un peu la même chose.

Si on revient un petit peu aux définitions, qu’est-ce que c’est qu’un logiciel libre ? La philosophie GNU nous dit qu’un programme est un logiciel libre [3] si l’utilisateur a quatre libertés que je résume de la manière suivante : exécuter, étudier/modifier, partager des copies, éventuellement partager des copies modifiées.
J’ai commencé par faire un exposé sur beaucoup de choses et j’ai supprimé une grande partie de mes 130 slides initiaux, je vais juste me concentrer sur la première liberté qui se traduit d’une autre manière dans la définition de ce qu’est qu’un programme open source selon l’Open Source Initiative [4], qui nous parle, au point numéro 2, de la disponibilité du code source, du fait qu’on n’a pas le droit de faire du code offusqué volontairement et que le code intermédiaire ne suffit pas. Et puis le point 3 qui est un petit peu en lien également.

Plus précisément si on lit exactement ce que dit la liberté GNU numéro 1, elle nous dit qu’on a le droit, qu’on a la liberté d’étudier comment le programme fonctionne, de le modifier et de le modifier de telle sorte qu’il fasse ce qu’on veut. Il y a aussi ce point qui a été ajouté en 2010 sur le code faisant l’objet d’une offuscation.
Si on regarde encore plus en détail dans la GPLv3 [5], c’est plus ou moins pareil dans la v2, il y a une notion qui est la notion de forme préférée du code qui est importante. Il y a une deuxième et troisième notions qui sont autour de ce qu’on met à disposition de quelqu’un pour qu’il puisse régénérer, en quelque sorte, les exécutables à partir d’un certain nombre de choses.

Qu’est-ce qui se passe quand on a des intelligences artificielles qui s’en mêlent ?
Déjà qu’est-ce que c’est qu’une intelligence artificielle ? Je vais prendre une définition relativement basique et historique, c’est une machine qui calcule de manière symbolique et/ou numérique et qui interagit avec son environnement d’une manière qui a l’air d’être intelligente. Ce sont de très vieilles questions que se sont posées les pionniers comme Alan Turing, comme John Von Neuman, très tôt.
Je vous donne un exemple d’intelligence artificielle avec cette définition-là, c’est le programme M-x doctor que vous trouvez dans un Emacs, qui est un simulateur de psychothérapeute. C’est un tout petit programme qui correspond à 1626 lignes d’Emacs Lisp, donc ce n’est pas grand-chose et, effectivement, ça a l’air intelligent. Si vous regardez l’exécution du programme sur la partie gauche, vous voyez :
« Je suis votre psychothérapeute, qu’est-ce qui vous arrive ?
— Ça ne va pas.
— Qu’est-ce qui vous amène ?
— Je ne me sens pas bien.
— Pourquoi ne vous sentez-vous pas bien ?
— Parce que ma petite amie voulait faire un break.
— Ah bon ! Est-ce que c’est parce que votre petite amie voulait faire un break que vous êtes venu me voir ?
— Est-ce que vous pensez que j’ai fait quelque chose qui n’allait pas bien ?
— Qu’est-ce que VOUS vous pensez ?
— Etc. »
C’est assez bien simulé.

Aujourd’hui, quand on dit intelligence artificielle, en réalité on parle plutôt de machine learning. Pourquoi y a-t-il ces espèces de synonymes abusifs ? Parce que de gros progrès ont été faits sur le machine learning notamment sur la vision, donc on peut avoir, comme on l’a vu dans l’exposé précédent, des visages reconnus automatiquement, des véhicules reconnus automatiquement, etc.
Donc typiquement, un système de vision par ordinateur ou les systèmes de machine learning sont représentés par des réseaux de neurones, profonds éventuellement, qui ont été entraînés pour réaliser leur tâche.

En gros, quelle est la différence entre un programme traditionnel qui fait l’objet d’une implémentation algorithmique et un programme qui est du statistical machine learning ?
Dans le premier cas c’est fait par un programmeur, dans l’autre cas c’est fait par un générateur automatique.
C’est conçu par un programmeur qui comprend ce que le programme est censé faire dans le premier cas et ça provient d’un échantillon de données qui est censé véhiculer un certain nombre d’informations pertinentes dans le deuxième cas.
C’est représenté par un modèle symbolique, typiquement un code source dans le premier cas, et c’est représenté par un modèle complexe, numérique en général, dans le deuxième cas.
Le code source c’est souvent plus petit que les réseaux de neurones, c’est généralement, surtout quand c’est bien commenté, plus intelligible, sachant que le réseau de neurones est une espèce de gros bloc dont il n’est pas évident de tirer quelque chose quand on le regarde dans le blanc des yeux.
Et puis c’est plutôt plus reproductible, même si ça se discute, quand il s’agit d’un programme fait par l’implémentation d’un algorithme plutôt que quand il s’agit d’une IA.

Donc qu’est-ce qui se passe ? Qu’est-ce qui change dans le good old stuff quand on a ce genre de chose ?
C’est une blague d’étudiant en informatique que je vous ressors, qu’est-ce qui se passe quand on est un High Scool Student ? On écrit « print("Hello World") » en Python, ça fait une ligne et tout le monde comprend.
Quand on est un jeune professionnel qui a fait du C, on essaye de montrer qu’on sait faire des choses.
Quand on est un professionnel très expérimenté, qu’on fait du C++ et qu’on a envie de faire des choses très proprement, on écrit des tas de classes, etc.
Après on se dit qu’on va faire des hacks parce que c’est plus fun.
Quand on est vraiment un gourou on ne s’embête plus.
J’ai commencé à rajouter d’autres manières de faire.
Aujourd’hui on utilise du Node.js [6], maintenant on fait des serveurs web pour faire Hello World.
Et quand on est vraiment très à la mode on fait du AWS Lambda [7]. On peut faire Hello World dans AWS Lambda, il se passe des tas de choses dans le cloud et c’est magnifique !
Toujours le même exemple, un petit peu revisité, on peut demander à Jim de nous écrire un programme. Le senior manager peut demander à Jim de demander à Accenture de faire un programme. Et puis, quand c’est le CIO [Chief Information Officer], maintenant il peut dire directement « OK Google, Print Hello world ». C’est génial parce que ça impressionne tout le monde !
Mais, quand on est sur OK Google, Alexa et autres assistants vocaux en réalité qu’a-t-on fait ? On a externalisé son stockage, on a externalisé son calcul et on a externalisé aussi sa compréhension à une espèce de gros système dont on comprend peut-être moins les tenants et aboutissants. Et même quand on a des développeurs très brillants comme ceux qui ont eu le prix de l’Académie des sciences il y a quelques jours pour le Scikit-learn [8] qui est une bibliothèque d’intelligence artificielle open source, même quand on a le code source de ça, même quand c’est très bien fait, même quand on a les data sets d’entraînement, on ne peut pas forcément bien comprendre ce qui s’est passé.
Pourquoi est-ce qu’on ne peut pas bien comprendre ce qui s’est passé ? Parce que, avec la définition du début, même si les intelligences artificielles ont l’air intelligente, en fait elles ne sont peut-être pas intelligentes.

Ici vous avez Geoffrey Hinton [9] qui est un spécialiste de l’intelligence artificielle, le parrain du deep learning, nous dit que quand un système d’intelligence, de machine learning, vous dit « sur la table c’est une pile de doughnuts » vous êtes très impressionné, mais quand ce même système voit l’image d’une fille qui se brosse les dents et vous dit que c’est un garçon qui tient une batte de base-ball, ça vous inquiète un peu et vous vous demandez s’il y a véritablement de l’intelligence dans un système comme celui-là.
Ça c’est un article de Wired d’il y a quelques jours. Vous avez des experts, le responsable de l’intelligence artificielle chez Facebook qui dit qu’en effet il n’y a pas sémantique robuste, on ne comprend pas vraiment ce qui se passe. L’article s’intitule [10] même « Est-ce qu’on ne va pas dans un mur ? »
Le problème c’est que le statistical machine learning, comme le dit justement le responsable de Facebook, Jérôme Pesanti, ça fait une espèce de pattern matching sur des données. On va nourrir les algorithmes avec des données et après qu’est-ce que ça donne ? Ça donne une espèce de plat de spaghetti, de commandes qui interagissent les unes avec les autres sans qu’on sache véritablement très bien pourquoi.
C’est une blague de xkcd [11] pour expliquer ce que c’est qu’un système de diagnostic ; j’adore ce site en fait. Ça utilise des corrélations, ce genre de choses dont on sait qu’elles ne sont pas forcément toujours très pertinentes. Par exemple vous savez que le nombre de doctorats en génie civil est corrélé à 95,86 % avec la consommation par personne de mozzarella. Vous pouvez faire ce type d’analyse et éventuellement construire un système de machine learning qui va utiliser ce genre de choses.
Il y a même des gens qui ont dit le mot « alchimie » pour en parler, c’était une provocation mais ça a fait réagir, en gros, le fait qu’on ne comprend pas forcément toujours très bien ce qui passe.

Qu’est-ce que ça a comme risques ? Ça a le risque d’introduire des biais, intentionnellement ou pas, avec des conséquences qui peuvent être graves comme l’amplification d’inégalités qui passent à l’échelle ; des discriminations vis-à-vis des femmes, des discriminations vis-à-vis de certaines populations comme cet article [12] récent dans Washington Post où, dans les deux cas, c’étaient des biais qui n’étaient pas intentionnels mais, comme ça s’inspire du passé, si on a mal modélisé, ça peut donner ce genre de choses.

Comment est-ce qu’on réduit ce type de risques sans forcément, dans un premier temps, aller vraiment à la source ?
On peut utiliser du testing comme dans les boîtes de nuit. Je suis content, j’ai découvert récemment cet article [13] du 2 décembre 2019, c’est quelque chose que je prône depuis des années : on fait des statistiques et on voit s’il y a des biais.
Il y a une autre manière de réduire le risque, c’est d’utiliser le RGPD [14]. Dans le RGPD on nous dit que « l’automatisation ne doit pas nuire aux droits des personnes et à leurs libertés et que, dans certains cas, on peut faire appel à un être humain pour expliquer ou contester une décision à laquelle on a été soumis ».
Il y a une version un peu plus poussée de ça, qui est une décision du Conseil constitutionnel qui date de 2018 et qui nous dit qu’on a « le droit de comprendre donc d’utiliser cette connaissance pour faire valoir ses droits et les défendre ». Il y a même un point, tout en bas, qui concerne exactement l’intelligence artificielle et qui dit que « la décision doit être fournie sous une forme intelligible — d’une part et que, d’autre part — ne peuvent être utilisés comme fondements exclusifs d’une décision administrative individuelle des algorithmes susceptibles de réviser eux-mêmes les règles qu’ils appliquent ». Là, en fait, on reconnaît de l’apprentissage par renforcement, on ne reconnaît pas forcément d’autres types d’apprentissage, mais c’est déjà un bel effort de la part du Conseil constitutionnel.
Deuxième risque, puisqu’on parle beaucoup de biais dans la presse, etc., je vous donne un deuxième exemple de risque, c’est qu’on ne comprend pas ce qu’on fait et qu’on fait des politiques publiques complètement débiles, par exemple on remarque qu’à 99,79 % les dépenses pour la science, l’espace et la technologie sont corrélées avec les suicides par pendaison, strangulation et suffocation et on dit pour faire baisser les suicides on va couper les budgets à la science, à la technologie et à l’espace !

Qu’est-ce qu’on aurait envie de faire pour aller vers des intelligences artificielles qui seraient libres ?
Le premier challenge, si on reprend, dans la GPLv3, cette idée de code source qui doit être présenté de la meilleure manière pour permettre des modifications, eh bien on va clairement être dans l’interface avec l’humain. Pour que cette interface avec l’humain soit possible, il faut que les IA produisent quelque chose qui soit intelligible par les humains ce qui n’est pas forcément le cas aujourd’hui ou, en tout cas, pas dans les algorithmes de machine learning traditionnels ; il y a quand même quelques équipes qui travaillent sur l’articulation avec les concepts.
Et puis on a besoin de comprendre ce qu’on fait.
Ici vous avez Judea Pearl [15] qui a été prix Turing en 2011, qui est aussi un des pères de l’intelligence artificielle et du machine learning, qui a dit de manière assez provocante, qui d’ailleurs ne s’applique dans tous les cas, que, en gros, tout ce qu’on a fait de super en deep learning c’est juste du curve fitting, c’est-à-dire qu’on a des points, on fait passer une courbe à peu près par tous les points et on dit « ça y est, on a trouvé la généralisation de ce qu’on a observé ». Il propose d’autres méthodes, il n’est pas le seul, il y a d’autres méthodes qui permettent de faire de l’intelligence artificielle, il en décrit un certain nombre dans ce livre, Le livre du pourquoi [The Book of Why : The New Science of Cause and Effect]. Il y a plein de choses intéressantes à faire sur ces sujets-là.
La deuxième chose c’est la question de la reproductibilité ou de la régénération d’intelligence artificielle pour tester, modifier, décentraliser, distribuer le calcul, etc. Ça correspond à ce qui est un peu plus dans la GPL qui nous dit, en gros, quand un a un code source, quand on a la matière nécessaire et suffisante, on régénère le binaire à partir du code source. Le problème de ça c’est qu’il faut déjà pouvoir reproduire. Les problèmes de reproductibilité c’est un sujet chaud en ce moment en sciences. Il y a des études qui ont montré qu’on a beau dire qu’on est reproductible en réalité on ne l’est pas du tout autant qu’on le voudrait. En particulier, dans le cas du machine learning, un certain nombre d’experts estiment qu’il y a vraiment une crise de la reproductibilité. Joëlle Pineau, qui est une chercheuse de Facebook AI Research et aussi de l’université de MC Gill au Canada, nous cite Buckheit et Donoho qui, eux-mêmes, citent Claerbout – je ne sais pas comment on prononce – qui dit : « Un article de recherche c’est juste de la publicité. Ce dont on a besoin pour vraiment faire de la science et transmettre de la connaissance c’est d’avoir tout ce qui est nécessaire pour pouvoir bien comprendre », en l’occurrence, les données, les algorithmes, les programmes, les codes sources, etc. ».
Il y a un autre problème qui se pose, un problème assez spécifique à l’IA, c’est qu’entraîner une IA ça coûte extrêmement cher en temps de calcul, ça va de plus en plus vite, c’est-à-dire qu’aujourd’hui les entraînements des plus grosses IA ont une croissance exponentielle avec une période de doublement de l’ordre de 3,4 mois. On est à X 300 000 en puissance utilisée depuis 2012 pour les plus grosses IA et ça consomme énormément d’énergie puisque entraîner une seule IA, dans cet article mentionné à droite, va émettre autant de CO2 que cinq voitures sur toute la durée de leur vie, donc ça pose aussi un autre problème.

Pour conclure, la liberté numéro 1 c’est celle qui nous explique qu’on est libre quand on comprend ce qui se passe et qu’on peut utiliser cette connaissance pour en faire quelque chose.
Un code intelligible, qui est écrit par un humain, en principe ça permet d’expliquer le comportement d’une machine, à peu près.
Quand le comportement de la machine est le fruit d’un curl fitting, qu’on a pris des points et qu’on s’est dit la machine va apprendre toute seule, en gros, ce qu’est la vie simplement à travers cette expérimentation, il n’est pas clair qu’on comprenne véritablement pourquoi elle en arrive là. Et même quand le code source est disponible et même quand les data sets sont disponibles on n‘est pas forcément en mesure d’interpréter ça en termes humains.
Donc, pour que l’intelligence artificielle nous libère, une condition nécessaire, au moins, c’est qu’on comprenne ce qui se passe et qu’on résolve, pour répondre aux deux challenges que j’ai évoqués entre autres, il y a plein d’autres, c’est-à-dire, le premier, avoir des intelligences artificielles qui discutent de manière intelligible et qui présentent les choses de manière intelligible pour les humains et, d’autre part, qu’on puisse faire de la reproductibilité et de la régénération d’IA dans des conditions raisonnables.
J’ai terminé.

[Applaudissements]