L’apprentissage automatique
Dans le domaine de l’intelligence artificielle (IA), on parle d’apprentissage automatique lorsqu’un programme « apprend » à résoudre un type de problèmes : par exemple traduire un texte, reconnaître des objets dans une image, choisir une stratégie dans un jeu de société…
Pour comprendre la spécificité de l’apprentissage automatique en IA, regardons d’abord un programme « classique » de jeu d’échecs : à partir d’une situation de jeu donnée, il simule les nombreuses suites de coups possibles, évalue la qualité des situations futures, et choisit de jouer le coup qui maximise ses chances de gagner. En apprentissage automatique, on ne fixe pas la stratégie une bonne fois pour toutes : le programme joue un grand nombre de parties et « apprend » à reconnaître les bons coups et les jouer. On peut espérer qu’après une longue suite de parties, d’essais et d’erreurs, il adopte une stratégie raisonnablement efficace.
Ces deux méthodes sont très différentes. Dans le cas classique, le comportement du programme est identique pour toutes les parties : la stratégie qu’il utilise a été préalablement codée par l’humain. Dans le cas de l’apprentissage automatique, la stratégie n’est pas fixée : elle évolue au fil des parties selon une règle codée par l’humain.
La situation est alors paradoxale pour le concepteur : d’un côté, il est capable de comprendre le processus d’apprentissage, puisque c’est lui qui l’a codé, et d’un autre côté, la stratégie effectivement utilisée par le programme peut lui être totalement inintelligible.
Un programme qui « apprend » peut nous paraître nettement plus intelligent qu’un programme qui se contente d’appliquer la même stratégie dans toutes les situations. Cependant, pour qu’un programme apprenne efficacement, il est nécessaire de l’entraîner, parfois sur un très grand nombre d’exemples (ou de parties, dans le cas des échecs).
Supposons que l’on veuille utiliser l’apprentissage automatique pour concevoir un logiciel de traduction entre le français et l’anglais. Il est absolument nécessaire de disposer d’un grand corpus de textes écrits en français et en anglais pour que le programme puisse s’entraîner. Par exemple, en comparant la version française de la version anglaise d’un même texte, il constate qu’à chaque fois que le mot « hallebarde » apparaît dans la version française, le mot « halberd » apparaît dans la version anglaise. Il apprendra donc à traduire « hallebarde » par « halberd ».
Dans l’exemple précédent, on peut facilement deviner une limite majeure de cette technique. Supposons qu’après l’apprentissage de ce traducteur automatique, on veuille traduire la phrase « il pleut des hallebardes ». Si cette expression n’est pas apparue telle quelle dans le corpus, elle sera inévitablement traduite par… « it rains halberds », qui n’est pas une expression anglaise idiomatique. On lui aurait sans doute préféré « it rains cats and dogs ».
Pour faire une analogie scolaire, tout se passe comme si un élève (le programme informatique) apprenait à résoudre un type d’exercices en ne lisant que les annales et les corrigés (les textes du corpus). Après un tel entraînement, le programme est généralement capable de traduire correctement les textes proches de ceux du corpus, mais risque de donner des traductions absurdes face à des textes radicalement différents… tout comme l’élève qui bachote les annales risque d’être perdu devant un exercice totalement nouveau.
Les réseaux de neurones artificiels
Les réseaux de neurones artificiels sont une technique d’apprentissage automatique, dont la conception s’inspire des réseaux de neurones biologiques : de petites unités de calcul, les neurones, traitent les signaux qu’ils reçoivent, puis envoient le résultat de leur calcul à d’autres neurones.
Dans leur version artificielle, les neurones ont été considérablement simplifiés pour être facilement codés et intégrés dans un programme informatique. Bien qu’ils existent depuis les années 1950, les réseaux de neurones étaient peu connus avant les années 2010. Cette époque correspond à la fois à des avancées dans les réseaux de neurones spécialisés dans le traitement d’images, et à la mise à disposition de très grands jeux de données d’entraînement.
Pour comprendre ce que fait un réseau de neurones, utilisons-en un pour résoudre un problème de classification d’images. On veut un programme capable de classer chaque image selon son contenu : si une image contient un vélo, on la classe de type ‘A’, sinon, on la met en type ‘B’. Pour entraîner correctement ce réseau de neurones, il faut un ensemble d’entraînement, c’est-à-dire un échantillonnage d’images où chaque image est accompagnée de sa catégorie.
Le comportement typique d’un réseau de neurones consiste à calculer des corrélations1 de formes entre les images de type ‘A’, les distinguant des images de type ‘B’.
1 Techniquement, un réseau de neurones ne « cherche » pas de corrélations, mais un algorithme complémentaire modifie le réseau petit à petit pour en améliorer les performances. Toutefois, au cours de l’apprentissage sur un grand nombre d’exemples, tout se passe comme si le réseau établissait effectivement des corrélations.
Par exemple, des pixels sombres formant à peu près un cercle apparaissent fréquemment dans les images de type ‘A’. On peut l’associer à la “catégorie objectivée comme” pneu. Cette donnée est encore insuffisante pour “induire” la présence d’un vélo (ce peut être un pneu de voiture… ou un cerceau noir), mais combinée à d’autres corrélations associables à des catégories (identification d’une chaîne, d’un guidon, etc.), elle rapproche le programme de la bonne réponse.
Ces exemples de corrélations sont simplistes : en pratique, il est difficile, voire quasiment impossible, de reconstituer toutes les corrélations identifiables. De plus, celles-ci ne sont pas forcément « sensées » : par exemple, si toutes les images de l’échantillon qui contiennent un vélo ont été prises de nuit, le réseau de neurones associera une image sombre à la présence d’un vélo sur l’image.
Outre la performance des réseaux de neurones pour le traitement d’image, ceux-ci ont deux qualités qui ont largement contribué à leur succès. Tout d’abord, l’utilisation de réseaux de neurones est aujourd’hui à la portée de toute personne qui sait programmer. Ensuite, leur fonction de repérage de corrélations entre les données peut être appliquée à de nombreux problèmes très éloignés du traitement d’image, comme la traduction ou le jeu de go. En plus de cela, les masses de données nécessaires à l’entraînement des réseaux de neurones sont aujourd’hui disponibles (notamment les données récoltées par google, facebook, twitter, etc.).
Pour résumer, l’engouement massif pour les réseaux de neurones provient de leur facilité technique de mise en oeuvre et leur capacité dédiée à établir des corrélations entre les éléments de n’importe quel ensemble de données, ce qui est très efficace pour certaines tâches. Cependant, on est bien loin d’une quelconque intelligence autonome capable d’imagination ou d’initiative propre.
En outre son adaptabilité fonctionnelle est rudimentaire, limitée et surdéterminée.
Un réseau de neurones est une suite de lignes de codeécrite en langage informatique, conçue par un humain, programmée pour effectuer une tâche déterminée par un humain, enchainant des opérations conçues par un humain, à partir de données sélectionnées par un humain, implantée sur des machines capables de traiter ces données en masse et dotées des (considérables) performances de calcul nécessaires à ce traitement massif.
C’est le caractère empirique et sommaire de la logique requise pour ce type de programmation qui permet de l’affranchir des préalables d’analyse et d’optimisation complexe requis dans les dispositifs algorithmiques traditionnels. Cet avantage pratique a cependant pour effet de rendre très difficile, pour l’humain qui a pourtant conçus de tels programmes, l’analyse récurrente du résultat qu’ils produisent. En effet les résultats de sont pas obtenus par une opération de “raisonnement” modélisée en calcul – donc susceptible d’une vérification “humaine”, mais par un traitement statistique “brut” empirique et réitéré. La difficulté est donc à la mesure de la puissance de calcul répétitif mobilisée, pour analyser un ensemble d’éléments « discrets » et hétérogènes… donc du temps et de la mémoire simultanément requis pour scruter et opérer mentalement ces masses énormes de données et en synthétiser le résultat statistique.
Des choix cachés
Pour donner une idée de la responsabilité de l’humain en apprentissage automatique en général, et des réseaux de neurones en particulier, prenons un exemple.
En juillet 2015, google a dû s’excuser pour le comportement raciste de leur mécanisme de reconnaissance d’images2 : il avait identifié comme « gorilles » des personnes noires. Il est difficile de connaître l’origine exacte de l’erreur, mais on peut raisonnablement proposer deux pistes. Premièrement, l’ensemble des images composant l’échantillon d’entraînement pouvait contenir trop peu de personnes noires. Dans ce cas, le réseau de neurones dispose de trop peu d’exemples pour apprendre à les identifier correctement. Deuxièmement, il est habituellement bien plus facile pour un réseau de neurones de trouver des corrélations de couleur entre les images que des corrélations de formes ou de traits. D’où la difficulté pour eux de placer dans la même catégorie les humains blancs et les humains noirs, au point d’assimiler ces derniers aux gorilles.
Le problème a été résolu de façon expéditive : google a retiré de son échantillonnage d’entraînement les images de gorilles, qui ne sont donc plus “reconnus”*. En janvier 2018, aucune autre solution n’avait été trouvée3.
3 https://www.theguardian.com/technology/2018/jan/12/google-racism-ban-gorilla-black-people.
* NdE : Google a probablement misé sur le fait que, en dépit de ce mépris flagrant des gorilles, ces derniers n’allaient pas engager d’action contre leur produit. Il demeure pourtant possible que, dans le contexte actuel, une ONG bienveillante à l’encontre de ces sympathiques primates menacés d’extinction contraignent les concepteurs à revoir leur copie au motif du caractère discriminatoire de leur “panel”.
Cette histoire souligne la responsabilité des concepteurs dans le comportement de leurs programmes. Même s’ils sont incapables de comprendre la stratégie finale adoptée par le réseau de neurones, ils la maîtrisent de A à Z : ils ont choisi les données d’entraînement, le type de réseau de neurones, les données de test (pour vérifier que le programme fonctionne correctement avant de le diffuser) et l’objectif à atteindre. Toutes ces étapes sont sujettes à discussion : les concepteurs ont-ils introduit leurs propres biais dans les données d’entraînement ? a-t-on vérifié que le type de réseau de neurones choisi n’était pas sensible à certaines erreurs ? l’a-t-on testé sur des données suffisamment diverses avant de le distribuer ? etc.
Dans une période où il est de plus en plus simple d’utiliser des réseaux de neurones et où les données d’entraînement n’ont jamais été aussi accessibles, il peut être tentant pour des particuliers ou des entreprises d’appliquer cette technique dans tous les domaines4 et sans aucun scrupules5, tant que « ça marche » (i. e. tant qu’il y a profit ou promesse de profit)…
Pierre Wolinski
4 À ce titre, les réseaux de neurones alimentent la bulle spéculative du transhumanisme, phénomène très bien décrit par C. Perragin et G. Renouard : https://www.monde-diplomatique.fr/2018/08/PERRAGIN/58988.
5 On se rappellera l’étude de EU Disinfo Lab, parue durant l’affaire Benalla, qui classifiait les utilisateurs de twitter en fonction de leur « russophilie » et de leur couleur politique supposée : https://spark.adobe.com/page/Sa85zpU5Chi1a/. Bien qu’aucun réseau de neurones ne semble avoir été utilisé, les auteurs se sont abondamment servi des données « publiques » disponibles sur chaque utilisateur de twitter pour faire des corrélations en fonction des critères qui les arrangeaient.
Postface
Finalement on s’aperçoit que la difficulté pratique qu’il y a à contrôler le modus opérandi des réseaux de neurones artificiels est en rapport direct mais inverse avec l’atomisation des opérations “machine” ainsi “optimisées”, et directement proportionnelle à la croissance exponentielle des opérations rudimentaires qui en résultent sans ordonnancement déterminé.
C’est la contrepartie de l’économie réalisée au stade préalable de la conceptualisation et de l’analyse d’un éventuel “programme expert” équivalent.
Ce type d’intelligence de synthèse présente donc le tour paradoxal d’être particulièrement “bourrin” mais rendu efficace par l’investissement préalablement accumulé par l’humain en matière de créativité de conception des calculateurs qui “boostent” ces “neurones” rudimentaires, et en font des outils bien adaptés à leur usage statistique appliqué à de très grosses masses de données.
Viktor Yugov