Le mot « algorithme », jadis inconnu du grand public, est maintenant à la mode. Moi qui suis professionnellement très familier des « algorithmes », je ne comprenais pas certains débats, certaines réactions. Il me semble, à la réflexion, que le sujet mérite clarification, ce que je vais tenter de faire ici.

Un algorithme c'est, rappelons-le, un procédé de calcul automatique et effectif. Il existe des algorithmes pour réaliser des tâches extrêmement variées ; citons par exemple, comme sujet classique étudié dans les premières années d'informatique, les algorithmes de tri (comment trier des millions de données par ordre alphabétique, par exemple). Un algorithme se distingue d'un logiciel au sens qu'il s'agit d'une description « théorique » d'un procédé de calcul, tandis qu'un logiciel est la mise en œuvre « pratique » de divers algorithmes sous une forme effectivement exécutable par une machine.

Deux conceptions

Dans l'approche classique, le ou les concepteurs d'un algorithme étudient le problème, au besoin le découpent en sous-tâches réalisées par des algorithmes déjà connus, et conçoivent l'algorithme avec des idées assez précises justifiant son bon fonctionnement. Souvent, ils produisent une preuve mathématique que l'algorithme fait effectivement ce qu'il est censé faire, par exemple trier des données. En tout cas, les concepteurs de l'algorithme comprennent pourquoi celui-ci fait ce qu'il est censé faire et ont fait des choix conscients en ce sens.

Dans les approches par apprentissage, l'algorithme (par exemple, un algorithme qui reconnaît des objets sur une photographie) n'est pas directement le résultat de la réflexion de concepteurs humains. Son fonctionnement découle du choix d'un très grand nombre de paramètres par un processus automatisé d'apprentissage (par exemple, en « montrant » des images et des listes d'objets y figurant). À l'issue de ce processus, le concepteur humain du système ne comprend pas forcément les critères qui ont été retenus par l'apprentissage, et n'est donc pas forcément en mesure d'expliquer l'action de l'algorithme dont il a dirigé la conception.

Nuançons

Bien sûr, les deux cas cités ci-dessus sont quelque peu caricaturaux. Même dans le cas où un humain a conçu toutes les étapes d'un algorithme et peut justifier mathématiquement qu'il donne un résultat acceptable, il ne comprend pas forcément d'autres aspects — par exemple, il peut ne pas savoir combien d'étapes de calcul l'algorithme nécessite dans le pire cas, ou pourquoi l'algorithme, sur les cas intéressants en pratique, nécessite moins de pas de calculs que ce qu'il nécessite dans le pire cas. Ou encore, il peut ne pas savoir justifier qu'un algorithme est plus précis « en pratique » que ce qu'il est capable de démontrer. Enfin, dans le cas de la conception de logiciels complexes, si l'on peut souvent justifier précisément du fonctionnement de tel ou tel algorithme, on sait rarement démontrer le bon fonctionnement de l'ensemble.

Quant à l'apprentissage automatique, il nécessite souvent des ajustements et réglages conscients par des personnels spécialisés. L'étendue des choix et des ajustements humains dépend de la méthode d'apprentissage utilisée. Notamment, certaines nécessitent que le concepteur du système prévoie un important recodage et sélection des données d'entrée pour les rendre acceptables par l'apprentissage automatique proprement dit. Par ailleurs, même dans le cas de techniques d'apprentissage profond, où le résultat de l'apprentissage est un immense volume de paramètres, on peut parfois identifier que certaines couches du système de traitement de données identifient telle ou telle particularité des données en entrée.

Avertissement : si l'on peut dire que je m'y connais en algorithmes, je n'ai sur l'apprentissage d'autre expérience que des lectures, l'écoute de conférences et des jurys de stages utilisant ce genre d'approches. En aucun cas il ne s'agit donc de l'avis d'un spécialiste.

Sur les usages sociaux

Les débats sur « les algorithmes » portent en fait sur leur utilisation à des fins « culturelles » (tri d'information par les moteurs de recherche) et « sociales » (profilage des individus à des fins de recrutement, de prêts bancaires… ou d'estimation du risque de délinquance). Il n'y a pas, ou du moins très peu, de débat public sur des sujets comme la conduite, en bonne partie automatisée, des avions de ligne.

Pour ma part, je vois quatre sujets importants :

  1. Les algorithmes « classiques » et la sélection des données et autres réglages des algorithmes d'apprentissage reflètent des choix humains : ce que l'on considère ou non comme pertinent comme critère de choix. La sortie de l'algorithme n'est donc pas un résultat « scientifiquement objectif ». Or, on utilise souvent « c'est ce que dit la machine » comme argument d'autorité interdisant la discussion.

  2. Les critères, les choix définis humainement sont généralement gardés secrets, ce qui interdit tout débat public à leur sujets.

  3. Les choix produits automatiquement par l'apprentissage peuvent ne pas répondre à certains objectifs de société. Par exemple, il est possible qu'un algorithme issu d'apprentissage qui devrait prédire la probabilité de « petite délinquance » d'un jeune au vu de ses données personnelles (lieu de naissance, de résidence, catégorie socioprofessionnelle des parents…) à des fins de recrutement ou non recrutement conclurait, au fond (et sans que cela ne soit explicité), qu'un jeune d'une famille pauvre de Stains a moins de probabilité de commettre des vols à la tire qu'un jeune d'une famille riche de Passy. Certes, mais est-ce bien raisonnable ou sain d'utiliser cela comme critère ?

  4. L'utilisation de mécanismes politiques ou sociaux hors de la compréhension des citoyens pose un problème en démocratie. Déjà, une bonne partie des français ne comprennent pas le calcul de l'impôt sur le revenu (les « tranches ») et les ordres de grandeur du budget de l'État.