Allez petite digression concernant le contrôle d'algorithmes. Je vais commencer doucement, mais l'objectif est d'expliquer pourquoi "contrôler" un algorithme (sans précision) ne veut rien dire.
Un algorithme, dans un sens un peu technique, ça désigne n'importe quel traitement d'une information. Ranger les couverts dans un tiroir, c'est un algorithme et la plupart des algorithmes utilisés autour de vous sont assez indolores. Ici on va parler spécifiquement des algorithmes qui déterminent quel contenu s'affiche sur le feed d'un réseau social. On va supposer qu'un tel algorithme est codé dans un langage de programmation et exécuté sur un ordinateur, même si c'est une grossière simplification pour ne pas rentrer dans les détails d'architecture (qui sortiraient de mon champ d'expertise de toute façon).
1/ Qu'est-ce que peut faire un algorithme
Il y a toute une branche de l'informatique théorique qui s'attache à déterminer ce que peut ou ne peut pas faire un algorithme. Par exemple, on peut montrer qu'
il existe un algorithme qui trie des nombres par ordre croissant, ou qu'il est
impossible de faire un algorithme qui analyse un autre algorithme et détermine des propriétés intéressantes dessus. Et avec l'habitude, on finit par avoir une certaine intuition de ce que ça recouvre, donc si la question est de savoir s'il est théoriquement possible d'avoir un algorithme bienveillant, la réponse est clairement que oui c'est possible (pour autant qu'on puisse déterminer dans les grandes lignes ce qu'on veut dire par là , mais typiquement il est algorithmiquement faisable de filtrer les encouragements au suicide).
2/ Qu'est-ce qu'on voit de l'algorithme
Quand un algorithme produit des résultats, l'analyse peut se faire à plusieurs niveaux : on peut lire la spécification prévues pour ce code, on peut regarder le code source (écrit par des humains), on peut regarder le code compilé (transformé par des machines, et lu par l'ordinateur), on peut aller regarder au microscope électronique l'état des cellules mémoire pour surveiller l'exécution de l'algorithme, ou on peut regarder quels effets l'algorithme produit. Mais en fait tout dépend du contexte : si on ne peut pas faire confiance à la personne qu'on contrôle, alors seule les deux dernières méthodes donnent des résultats fiables.
Prenons d'abord une hypothèse favorable : je fais un audit interne pour une société, celle-ci a intérêt à ce que je puisse travailler efficacement, donc elle me fournit tous les éléments dont j'ai besoin. Dans ce cas, je vais vérifier la spécification, et vérifier que celle-ci est traduite correctement en code. Si l'algorithme dispose de paramètres, je vais aller regarder comment ils ont été déterminés. À la fin, je pourrai déterminer ce que fait l'algorithme.
Dans un cas défavorable, maintenant : la société peut très bien produire une spécification mais avoir du code qui ne correspond pas à cette spécification. Ou alors le code peut être correct mais le compilateur le compile exprès en
quelque chose d'autre. Ou alors le code compilé peut être correct mais l'ordinateur qui l'exécute manipule le résultat. De même, dans le cas d'un algorithme à paramètres, on peut te mentir sur la manière d'obtenir les paramètres, ou sur leurs valeurs. Seul moyen de détecter des mensonges : le microscope électronique. Autant dire que cette dernière solution est déjà peu envisageable pour une machine à voter (système simple, qui tourne sur une machine dédiée sans OS, qui effectue une tâche simple en synchrone, etc.). C'est totalement hors de propos pour regarder un algo de recommandations de contenus sur un RS.
Or nous sommes clairement dans un cas défavorable : quelle que soit le principe que tu mets en place, un RS aura intérêt à te mentir, sachant qu'il est impossible de prouver qu'ils mentent. Il peut d'ailleurs te mentir sur le fait qu'il coopère (
Ce ne serait pas une première).
3/ Pourquoi les algorithmes recommandent des contenus incitant des jeunes au suicide
Ce n'est pas parce qu'il existe un algorithme qui fait quelque chose que c'est forcément simple de le faire. Reprenons l'exemple des incitations au suicide données aux jeunes sur des RS. Un algorithme qui détermine qu'un contenu suscite de l'engagement ("je le montre à 100 utilisateurs, je regarde le pourcentage qui zappe avant la fin de la vidéo et si ce pourcentage est supérieur à X, je le montre à d'autres personnes") est super facile à écrire, et optimise assez bien la métrique intéressante pour les réseaux sociaux : les gens vont se retrouver exposés à des contenus cools, qui font qu'il restent sur l'appli, où ils sont exposés à de la publicité, et c'est ça qui rapporte de l'argent à la maison mère. Dans ce cas, l'exposition des jeunes à des contenus délétères est un effet secondaire de l'algorithme, il ne nécessite aucune intention malveillante particulière (c'était l'objet de la première réponse de K' d'ailleurs). Intention malveillante qui serait d'ailleurs parfaitement complotiste en l'espèce : qui suggèrerait que le modèle économique d'un RS consiste à pousser 10 client.e.s par an au suicide ? Pour déstabiliser l'occident rien de moins ?
À l'inverse, écrire un algorithme "bienveillant" nécessite plein de choses :
- analyser les contenus pour les classer
- ĂŞtre capable de le faire dans toutes les langues
- contourner les contournements qui existeront (bah oui quand les gens se rendent compte que parler de "mourir" donne droit Ă un
shadowban, ils utilisent
"unalive" Ă la place)
- mettre à jour tout ça en temps réel.
Et avant qu'on parle de l'IA qui va régler ce problème (technosolutionnisme de merde), je rappelle que la modération de contenus sur les RS est aujourd'hui effectuée par des travailleurs du clics, payés au lance-pierre pour récupérer des PTSD en devant observer manuellement des contenus (cf le travail d'Antonio Casilli).
Bref : ce n'est pas parce que quelque chose est techniquement possible que c'est forcément une bonne solution au problème posé.
4/ Vous reprendrez bien une couche de complexité ?
Ça date de bien avant les LLM, mais disons que ça a un peu explosé avec eux : il existe désormais tout un tas d'algorithmes dont le fonctionnement est parfaitement clair (tu prends l'entrée, tu la transformes en un vecteur de nombres, tu multiplies ça par une matrice et tu transformes la sortie en un texte / une image / whatever), mais dans lequel toute la complexité est en fait située dans les paramètres (ici, les valeurs de la matrice). Je vais pas me lancer dans un cours sur les réseaux de neurones, mais pour la conversation, il suffit de dire qu'avec un même code, on peut faire tout et son contraire juste en changeant les paramètres.
De tels algorithmes sont considérés comme des boites noires à la fois par les gens qui s'en servent, mais aussi par des gens qui les conçoivent : s'il existe bien des recherches pour donner du sens à ces paramètres et à leurs fonctions, la complexité des modèles a progressé bien plus vite que ces recherches. L'obtention de ces paramètres est donc en général le fruit d'un autre algorithme (appelé "apprentissage"), et pour dire les choses simplement, la plupart des apprentissages ne sont pas déterministes, certains sont très coûteux (mais on ne les réalise qu'une seule fois pour un grand nombre d'utilisation de ces paramètres ensuite).
La question est donc : s'il se trouve qu'un algorithme de recommandation de contenu est basé sur une boite noire, dont les paramètres sont issus d'un apprentissage non déterministe, que cette boite noire utilise des TAS d'entrées (genre l'actualité) et sachant qu'il n'est pas possible de faire vérifier un algorithme par un autre algorithme, on fait quoi ?
5/ Conclusion
Avec tous ces éléments, j'espère qu'il est désormais compréhensible par tout le monde pourquoi je tique très fort quand j'entends qu'il faut "contrôler" les algorithmes ou les "reprendre en main" : ça n'a scientifiquement aucun sens, ça ne peut venir que d'une personne qui ne comprend rien à ce dont elle parle. La seule chose fiable qui existe, c'est de regarder les sorties de l'algorithme et de décider si cela convient ou non (éventuellement en utilisant des statistiques), ce qui est déjà faisable par n'importe qui.