C'est lors du débat de la loi numérique à l'assemblée qu'Axelle Lemaire a eu la formule suivante :
"Un algorithme n'est pas un document communicable".
Un verbatim récupéré via le fil Twitter d'Hélène Chevalier, journaliste à France Inter.
"Un algorithme n'est pas 1 document communicable" pr @axellelemaire "Une ambition trop forte pt avoir 1 effet contreproductif" #PJLNumerique
— Hélène Chevallier (@lnche) January 20, 2016
Le lendemain de cette déclaration, et malgré donc l'opposition de la secrétaire d'Etat et du gouvernement, on pouvait lire dans Le Monde que "Les députés veulent rendre publics les algorithmes des administrations" :
"Les députés ont adopté, mercredi 20 janvier, un amendement PS au projet de loi « pour une république numérique », destiné à rendre publiques les règles des principaux algorithmes utilisés par l’administration pour les impôts, les allocations familiales ou encore l’affectation des enfants dans les collèges. « Les administrations (…) rendent publiques en ligne, dans un standard ouvert et aisément réutilisable, les règles définissant les principaux traitements algorithmiques utilisés dans l’accomplissement de leurs missions lorsqu’ils fondent des décisions individuelles », prévoit le texte. Christian Paul (PS, Nièvre), qui défendait cet amendement, a salué une « avancée démocratique incontestable » qui permettra une « expertise citoyenne ». « Les logiciels, les algorithmes, structurent aujourd’hui de fait l’action des administrations (…) Il semble donc utile que le fonctionnement des principaux d’entre eux soit détaillé par défaut afin d’accroître la confiance du public en ces administrations », a justifié M. Paul."
Il y a quelque temps je m'étais exprimé sur le sujet, et j'avais plaidé pour une ouverture, un "rendu public" des algorithmes, ou plus exactement de la partie des algorithmes relevant d'un processus d'éditorialisation. Extrait :
"Il est vain de réclamer la dissolution de Google ou d’un autre acteur majeur comme il est vain d’espérer un jour voir ces acteurs «ouvrir» complètement leurs algorithmes. Mais il devient essentiel d’inscrire enfin clairement, dans l’agenda politique, la question du rendu public de fonctionnements algorithmiques directement assimilables à des formes classiques d’éditorialisation."
Rappel : l'enjeu était – et est toujours … – de clarifier une bonne foi pour toutes les raisons qui font que, en vrac et de manière non-exhaustive, "les vidéos de décapitation, les propos nazis ou antisémites, les photos de sein, etc." parfois ça passe, parfois ça passe pas, parfois ça passe mais c'est retiré rapidement, parfois ça passe mais ce n'est pas retiré rapidement, etc.
Et dans un autre article, j'ajoutais qu'en plus de cette ouverture nous avions aussi – et surtout – besoin d'un index indépendant du web :
"Nous avons besoin d’un index indépendant du web. A la fois pour permettre à de nouveaux acteurs de s’installer en concurrence avec les actuels oligopoles, mais également pour offrir aux citoyens et aux gouvernements démocratiques la possibilité de briser l’aliénation que leur font subir de facto les grandes puissances du numérique, les oligarchies du code. Si nous n’y parvenons pas rapidement, nous devrons alors faire face à une autre figure de l’index : celle qui désigne, qui pointe du doigt et est source de toujours davantage de discriminations. Celle d’une mise à l’index de nos espérances démocratiques."
Dommage au passage que cette idée (qui n'est pas de moi mais de Dirk Lewandowski) et qui est (je l'avais démontré) parfaitement réaliste à court terme, n'ait à aucun moment émergé dans le débat sur la loi numérique, laissant la place à la pathétique pantalonnade d'un "OS souverain" (hélas visiblement adoptée, paraît que le ridicule ne tue pas mais là ça va quand même être dur de survivre …).
Algo qui communique, a fait un beau voyage.
Reprenons maintenant la phrase d'Axelle Lemaire : "Un algorithme n'est pas un document communicable". Bon. Un "document", on sait ce que c'est. Forme, contenu, medium. Explications par le grand chef à partir de 45 secondes.
Je vous fais un petit résumé de la vidéo ci-dessus mais vous pouvez aussi acheter ce livre ou lire cet article. Donc un document c'est trois trucs :
- 1 forme : "un document doit pouvoir être repéré, il doit pouvoir être vu."
- 1 contenu : "nous sommes capables de décrypter ce qui est inscrit dans le livre, le livre doit pouvoir être compris."
- 1 medium : "rapport du document à notre humanité, à notre société, quelle que soit sa forme et son contenu. On insiste ici sur la fonction sociale du document."
Donc un document est nécessairement "communicable", il peut être "transmis à quelqu'un". Sinon ce n'est pas un document. Bien sûr tous les documents ne sont pas "communiqués", ils ne sont pas tous "rendus publics" puisque certains, pour diverses raisons, sont couverts par différents niveaux de confidentialité ou de restriction dans leur diffusion pour des raisons commerciales (secret des affaires, secret industriel) ou politiques (secret d'état). Mais qu'il s'agisse de les rendre publics ou de ne les diffuser qu'auprès d'un petit groupe de personnes autorisées, un document est toujours "communicable". Enlevons donc le mot "communicable" du verbatim d'Axelle Lemaire et nous voilà devant la déclaration suivante :
"Un algorithme n'est pas un document."
Or au vu des trois critères ci-dessus, un algorithme est bien un document même si quelques nuances peuvent être apportées :
- un algorithme peut être repéré, il peut-être "vu", au moins dans l'une de ses formes primitives, c'est à dire par exemple la "formule" du Pagerank ou par la lecture du code informatique qui sert à sa programmation. Si on pousse un peu on m'objectera que lorsque l'on est "sur" Google ou "sur" Facebook on ne "voit" pas l'algorithme. Oui mais on "voit" le résultat du travail de l'algorithme, lequel existe aussi indépendamment (via sa "formule" et son "code") des résultats ou de la hiérarchie de l'info qu'il produit.
- un algorithme, c'est également un contenu que nous devrions être capables de décrypter. Et là en effet ça coince un peu. Parce qu'en effet seuls quelques ingénieurs ou programmeurs ou mathématiciens sont véritablement capables de "comprendre" ce qui est écrit dans le code ou dans les formules mathématiques. Mais cela ne veut pas dire que c'est incompréhensible, cela veut juste dire que pour "lire" un algorithme il faut avoir appris le code informatique, de la même manière que pour lire un livre il faut avoir appris … à lire.
- un algorithme a, bien sûr, une fonction sociale. C'est même pour ça que c'est un sujet de débat : est-ce que c'est l'algorithme qui décide ? pourquoi ? comment ? Il a même "des" fonctions sociales : trouver l'amour, trouver le bon morceau de musique à écouter, etc …
Moralité ? De la formule d'Axelle Lemaire "un algorithme n'est pas un document communicable" nous retiendrons au contraire que :
- un algorithme est bien un document (je peux le repérer, le "voir", je peux aussi le décrypter et il assure plusieurs fonctions sociales)
- un document (sauf secret des affaires ou secret défense) est toujours communicable (sinon publiquement, au moins à quelques personnes)
- un algorithme est donc … un document communicable.
CQFD
Passionnant non ?
Pour bien comprendre l'enjeu de ce débat il faut tenter de se représenter ce qu'est un algorithme. Au besoin vous pouvez faire un petit passage par ces deux articles :
- les 10 algorithmes qui dirigent notre vie (pas technique)
- les 10 algorithmes qui dirigent vraiment notre vie (beaucoup plus technique mais avec un vrai gros effort de pédagogie)`
Le second de ces articles nous permet d'approcher de manière plus "technique" la définition d'un algorithme :
"Informally, an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. An algorithm is thus a sequence of computational steps that transform the input into the output. Source: Thomas H. Cormen, Chales E. Leiserson (2009), Introduction to Algorithms 3rd edition.
Et revient plus loin sur les 3 caractéristiques qui permettent de considérer qu'un algorithme est "valide" :
- It should be finite: If your algorithm never ends trying to solve the problem it was designed to solve then it is useless
- It should have well defined instructions: Each step of the algorithm has to be precisely defined; the instructions should be unambiguously specified for each case.
- It should be effective: The algorithm should solve the problem it was designed to solve. And it should be possible to demonstrate that the algorithm converges with just a paper and pencil.
Précisions utiles mais là encore, rien qui ne permette d'affirmer "qu'un algorithme n'est pas un document communicable". Bien au contraire cela confirme le statut "documentaire" d'un algorithme : sa "finitude" (un document a un début et une fin), ses "instructions bien définies" (un polar ou une poésie disposent de leurs propres "règles", de leurs propres "contraintes"), son "efficacité" (un document répond la plupart du temps à un problème, il "argumente" autour d'un ou plusieurs points de vue, avec une efficacité certes toujours relative mais "l'efficacité" algorithmique l'est aussi – relative).
Un algorithme c'est donc une série de "règles" d'entrée et de règles de sortie. Exemple : pour 2 pages par ailleurs équivalentes, sur une requête sur le mot clé "loi numérique", si la page A comporte ce mot clé dans la balise de titre (<TITLE>) et que la page B n'a pas de balise de titre (règle d'entrée) alors la page A sera classée devant la page B dans les résultats de recherche (règle de sortie).
Un algorithme c'est également une série de règles et d'itérations qui constituent la "formule" algorithmique, chacune de ces règles et itérations étant assortie d'une série plus ou moins variable et étendue de pondérations. Pour le dire plus simplement la règle "un mot clé doit être présent dans la balise <title>" peut avoir une importance plus ou moins grande sur le classement de la page, et cette règle peut elle-même être pondérée par d'autres règles (si le mot clé est présent dans la balise <Title> alors on vérifie aussi qu'il soit présent dans la balise <H1>, et ainsi de suite).
Dès lors sur quoi peut ou doit porter la "communicabilité", le "rendu public" algorithmique ?
A mon avis sur l'essentiel des règles d'entrée et de sortie (dont la plupart sont par ailleurs déjà connues dans le cas du PageRank de Google ou de l'Edgerank de Facebook) et leur rapport initial de pondération. Parce que de ces règles dépendent l'essentiel des processus d'éditorialisation algorithmique qui façonnent notre vision du monde (pourquoi tel contenu apparaît sur notre mur plutôt que tel autre par exemple). Car il est aberrant que la majorité d'entre nous ne sache pas répondre aux questions suivantes :
- quels sont les critères en fonction desquels Facebook me propose d'être ami avec telle personne plutôt qu'avec telle autre ?
- quels sont les critères en fonction desquels Facebook choisit des contenus souvent similaires et les place systématiquement en avant sur mon mur ?
- quels sont les critères en fonction desquels la même requête au même moment sur le même moteur de recherche ramène des résultats différents selon les utilisateurs ? Pourquoi parfois "légèrement" différents et pourquoi parfois "complètement" différents ?
- quels sont les critères en fonction desquels ces vidéos YouTube me sont proposées à la fin du visionnage d'une autre vidéo ?
- etc …
Pour prendre une analogie, accepteriez-vous de conduire une voiture sans être capable de répondre aux questions suivantes :
- quels sont les critères en fonction desquels ma voiture tournera à gauche ou à droite ?
- quels sont les critères en fonction desquels ma voiture me permettra de freiner et de m'arrêter complètement ?
- quels sont les critères en fonction desquels sont attribués les fonctions aux 3 pédales se trouvant sous le volant ?
- quels sont les critères en fonction desquels je sais si j'ai ou non la permission de doubler un autre véhicule ?
En d'autres termes et même si la métaphore a ses limites (d'autres préfèrent la métaphore du moteur et du Starter pour expliquer la notion de "coeur d'algorithmie), la conduite algorithmique n'est d'aucune manière "accompagnée", nous sommes loin d'être toujours maître de nos itinéraires, et la plupart des éléments relevant d'une code de la navigation nous sont inconnus ou demeurent masqués.
(Source : The New-Yorker)
Pour ce qui est des logiques de pondération internes à l'algorithme, on touche en effet cette fois au secret industriel / commercial : si ces règles de pondération ne sont pas communicables c'est pour deux raisons : d'abord pour "éviter" que n'importe qui puisse "copier" tel ou tel algorithme et se l'approprier, mais aussi et surtout pour éviter que tout le monde n'ait la tentation et la possibilité de "tricher" avec ledit algorithme (même si le coeur de compétences de nombre de métiers liés, par exemple, au référencement, consiste à comprendre, à utiliser et parfois à tricher avec ces règles de pondération, et même si l'histoire de l'informatique est – heureusement – jalonnée d'innombrables "tricheries" algorithmiques individuelles – hacking – ou collectives – Google Bombing).
Or pour l'instant, la non-communicabilité des algorithmes donne lieu à toutes un tas de pratiques illicites traquées par l'autorité de la concurrence (cf l'affaire de la régie publicitaire de Google, accusée – mais il a été compliqué de le démontrer empiriquement – de favoriser ses propres sites)
L'allégorie du moteur et du garagiste.
La vraie question qu'il faut se poser est en fait celle-ci, celle que nos députés auraient pu ou dû se poser :
Quel est l'intérêt de rendre public tout ou partie d'un algorithme ? Quel est l'intérêt de rendre communicable un algorithme ?
Il y en a au moins deux. Le premier c'est de permettre de détecter des dysfonctionnements (pratiques, techniques, commerciaux ou éthiques). Le second c'est d'éviter les abus d'autorité. Je reprends l'exemple du moteur et du garagiste : si vous ne savez pas comment fonctionne un moteur, si le fonctionnement d'un moteur n'est pas "communicable", alors, premier problème, vous êtes obligé de passer par votre garagiste pour la moindre "panne", le moindre dysfonctionnement le plus anodin soit-il, et, deuxième problème, le garagiste peut totalement vous enfumer en vous facturant une intervention à 2000 euros alors que le changement d'une pièce de 20 euros aurait suffi : vous ne pouvez vous reposer que sur sa "bonne foi".
Etant donné la pregnance actuelle des algorithmes, de certains algorithmes de certaines plateformes, étant donné l'étendue de cette pregnance à des secteurs régaliens (transport, santé, éducation) et probablement hélas bientôt au processus de vote, il apparaît assez fou de ne pouvoir se reposer que sur une supposée "bonne foi" algorithmique.
Certains députés ont alors mis en avant l'argument selon lequel, même en cas de rendu public, "peu de gens savent décrypter un algorithme" : c'est naturellement faux et intellectuellement très malhonnête. Car l'enjeu n'est pas que chaque citoyen lambda de 7 à 77 ans soit capable de décrypter un algorithme : quel citoyen lambda est capable de "décrypter" le code civil ? le code pénal ? Et pourtant "nul n'est censé ignorer la loi", d'où l'intérêt des professions intermédiaires comme les avocats, les notaires, journalistes, etc. qui sont là pour "accompagner" le décryptage citoyen. L'enjeu c'est que la communicabilité des algorithmes permette à une société de faire émerger des professions intermédiaires capables d'accompagner les citoyens dans ce décryptage algorithmique, et ce faisant, d'instituer une régulation qui s'inscrive réellement dans l'espace public de la démocratie.
Et donc, <moment gros malin> on fait quoi ?? </gros malin>
Ben … ce que je viens de vous expliquer. Oui un algorithme est un document communicable. Donc on peut, ou on devrait pouvoir, par voie législative et sans entraver ni le droit de la concurrence ni le secret commercial, légiférer sur le rendu public de certaines parties de n'importe quel algorithme (je précise bien sûr qu'il est tout à fait illusoire de s'engager dans ce genre de démarche à l'échelle d'un seul pays … la bonne échelle est a minima l'échelle européenne). Et ce faisant permettre en parallèle l'émergence de tiers de confiance "capables" de lire, d'auditer et de décrypter les parties ainsi rendues publiques. Accessoirement cela permettrait aussi de donner du sens à cette idée (ni bonne ni mauvaise même si je continue de penser que l'essentiel est ailleurs) d'enseigner le code informatique à l'école : enseigner le code, ok, mais pour faire quoi ? Et quel code ? Apprendre à coder en HTML vous permettra de faire des jolis sites web mais pas de comprendre comment fonctionne un algorithme (par exemple), enseigner "la programmation" n'a de sens qu'en fonction du projet dans lequel cet apprentissage s'inscrit (est-ce pour développer une application ? pour apprendre les principales routines et/ou fonctions algorithmiques ?). Mais en faisant cela on n'aurait résolu qu'une partie du problème. Pour résoudre l'autre partie, il fau(drai)t également mettre en place cet index indépendant du web.
Article très intéressant à lire, merci. Une remarque toutefois:
Si certains algorithmes sont limpides (exemple de la formule du page rank), qu’en est il des algorithmes d’apprentissage dont l’utilisation va croissante ? Je pense particulièrement au « deep learning » : il est facile de décrire comment chaque unité du réseau de neurones artificiels se comporte, mais cela ne permet pas du tout de comprendre les relations entre entrées et sorties du réseau en fonctionnement. Dans vos exemples « quels sont les critères en fonction desquels […] », la réponse dans le cas de l’utilisation d’un tel algorithme serait probablement « tous les critères »… pas très informatif ! Il en va de même bien sûr lorsqu’un réseau de neurones non artificiel est en jeu: une intervention humaine pour corriger « à la main » quelque chose, par exemple.
C’est comme demander le droit à l’oubli. Il n’y a rien de pire que souhaiter le droit à l’oubli. En effet, grâce à vos données, google a appris. Effacer vos données n’effacera pas ce qu’il a appris. Par contre ce qui est sur, c’est que vous, vous n’aurez plus accès à vos informations. Autrement dit, demander à supprimer son compte d’un cloud, cela revient juste à demander au cloud de changer son mot de passe pour le plus y avoir accès (et anecdotiquement à cacher un peu son compte). Exemple, une page indique que mohamed a fait 2 ans de prisons. l’algorithme est passé par là et il a appris que les mohamed ont 10 fois plus de chance d’être coupable que les Pierre, sur un échantillon de 20 personnes. L’algorithme continuera éternellement à vivre avec cette connaissance. Communiquer un algorithme sans tous ses paramètres, ses données d’apprentissage, et ses données d’usage, cela ne sert à rien, on peut transférer l’un dans l’autre volontairement aussi. Les algorithmes simples avec quelques règles sont communicables, mais un bon nombre n’apprendront pas grand chose. Ces algorithmes ont leur propres vie. C’est statistique, en fonction de leur parcours de vie, tel algorithme ou tel autre aura tel sortie. Impossible de pointer la cause de telle sortie… comme il est impossible de savoir systématiquement pourquoi telle personne a commis ce jour là un crime. Alors on donnera des droits et des devoirs aux programmes. Pour cela on a déjà les bases, en parlant de personne morale. Il suffirait de confondre personne morale et non morale. Je pense que la voie des devoirs est bien plus interessante. Par exemple imposer à tel ou tel algorithme des devoirs. Par exemple, imposer (par la loi) à google de fournir telle ou telle information. Personne ne sait, ni ne peut savoir, ce qui ‘est’ dans les algorithmes de google, au sens ou on l’entendrait communément, pas même ceux qui l’ont programmé. On peut intervenir, ici ou là, comme un médecin essaye d’intervenir sur une partie malade d’un corps, mais les effets secondaires ailleurs sont toujours possible. Le législateur devrait demander des résultats (des devoirs) à ceux (les personnes morales), qui ont les capacités à les fournir.
Bonjour,
Je suis assidu de votre blog passionnant. Mais ne pourriez-vous pas l’éditer dans un format physique moins »colonnes ». Format étroit, difficile à lire . . .
Merci
Hello,
La plupart du temps ce n’est pas un algorithme avec une formulation mathématique ; mais plutôt un ensemble de règles et de procédures qui s’empilent, avec des cas particuliers et des exceptions qui peuvent être très nombreux, etc.
Ce n’est pas tant que l’algo n’est pas publiable, c’est que personne n’en a une représentation complète et exhaustive. Même la formule du page rank n’a plus qu’une lointaine ressemblance avec celui qui fait actuellement fonctionner le moteur de recherche.
Ce n’est peut-être pas tant l’algorithme qu’il faut publier que le code souvent kaleideoscopique dans lequel la formule mathématique s’éparpille.
Bonjour,
« nul n’est censé ignorer la loi »
Contresens hélas récurrent au sujet de cette phrase. Ce principe hérité du droit romain (« nemo legem ignorare censetur ») ne signifie pas « tout le monde est censé connaître la loi », mais « personne n’est censé agir comme si la loi ne s’appliquait pas à lui ». Dans cette phrase, le mot « ignorer » est pris dans le sens de « feindre de ne pas connaître ». Autrement dit, ce principe veut dire : la loi s’applique à tout le monde, sans exception, qu’on le veuille ou non (et peu importe qu’on connaisse ou non le contenu de la loi). Demandez à n’importe quel professionnel du droit (avocat, huissier, notaire…), il vous le confirmera.
Pour le reste, je suis d’accord avec vous sur le fait que la formule d’Axelle Lemaire était une idiotie, et qu’elle montre surtout l’ignorance de la Ministre en matière d’informatique et de traitements automatisés (et de documentation des logiciels par les programmeurs eux-mêmes !)
—
@ Pierre
Si je ne me trompe pas, le texte adopté par les députés est celui-ci : « lorsqu’une décision individuelle est prise sur le fondement d’un traitement algorithmique, les règles définissant ce traitement ainsi que les principales caractéristiques de sa mise en œuvre sont communiquées par l’administration à l’intéressé s’il en fait la demande. » (article 2 de la loi qui doit encore faire l’objet d’un vote sur l’intégralité du texte mardi qui vient, 26 janvier ; cet article 2 est destiné à devenir l’article L.311-3-1 du code des relations entre le public et l’administration, cf. http://www.assemblee-nationale.fr/14/dossiers/republique_numerique.asp ).
Cet article 2 signifie que, contrairement à ce que la presse grand public affirme (cf. par exemple l’article du Monde dont notre hôte a fourni le lien en début de billet), l’amendement, non seulement, ne concerne pas que les algorithmes (si elles sont importantes, les données doivent aussi faire partie de ce qui est communiqué), mais surtout, il ne concerne _pas vraiment_ les algorithmes. En fait, c’est plutôt le « plan d’exécution » particulier qui a conduit à la décision concernant celui qui a fait la demande, qui doit être fourni à l’intéressé (et à lui seul, notez bien, d’après le texte de l’article).
Certains vont sans doute demander : quelle différence cela fait-il ? Là encore, je peux me tromper, mais à mon avis, elle est fondamentale : c’est exactement la même différence que celle, pour prendre un exemple informatique, entre publier l’algorithme intégral du compilateur/exécuteur de requêtes d’un système de gestion de base de données, et publier un plan d’exécution pour *une* requête particulière sur *la* base de données utilisée sur ce système. Ou, pour prendre un exemple plus grand public, la différence entre publier tout l’algorithme d’un GPS (plus exactement, l’algorithme de recherche de positionnement par satellite, plus l’algorithme de recherche d’itinéraire, plus l’ensemble des données cartographiques du GPS, plus les données de positionnement du GPS), et publier le détail *d’un* itinéraire particulier.
Question subsidiaire que je me pose : quid de la confidentialité de ce qui est fourni à la personne qui a fait la demande à l’administration ? A-t-elle l’obligation de garder pour elle ce qu’elle a reçu, ou a-t-elle le droit de le rendre public via un quelconque média de masse ? Si vous avez une réponse, je suis preneur.