0%
Éthique et avenir de l'IA

Éthique

Les questions qui se posent avant la mise en production.

10-15 min

Éthique et avenir de l’IA

L’éthique de l’IA souffre d’une réputation double et contradictoire : trop abstraite pour les équipes techniques, trop technique pour les décideurs. Les deux jugements se trompent pour la même raison. La plupart des questions dites éthiques se ramènent à des grandeurs mesurables, et les mesurer demande précisément les compétences acquises dans les cinq leçons précédentes.

Prenons un exemple qui va nous occuper un moment. Un modèle sélectionne des candidatures. On ne lui a jamais fourni le sexe, l’âge ou l’origine des candidats — la précaution paraît suffisante. Elle ne l’est pas, et nous allons le démontrer en une quinzaine de lignes : le modèle retrouvera l’information par une variable corrélée, et produira des taux de sélection nettement inégaux. Ce n’est pas une hypothèse d’école, c’est le mode d’échec le plus courant.

Vient ensuite une question plus dérangeante. Une fois l’inégalité constatée, comment décider si le modèle est équitable ? Nous verrons que plusieurs définitions raisonnables de l’équité existent, qu’elles se mesurent toutes, et qu’elles peuvent conduire à des verdicts opposés sur le même modèle. Il n’y a pas d’échappatoire technique : le choix de la définition est un choix politique, et il vaut mieux le faire explicitement.

Cette leçon aborde ensuite les données personnelles, l’explicabilité, le coût énergétique, le cadre réglementaire européen et les effets sur l’emploi. Sur chacun de ces sujets, l’exigence sera la même : distinguer ce qui est établi de ce qui est conjecturé, et ne citer aucun chiffre qui ne puisse être vérifié.

D’où viennent les biais

Un biais n’est presque jamais introduit par l’algorithme. Il vient des données, et par quatre voies distinctes.

SourceMécanismeExemple
Échantillonnagecertains groupes sont sous-représentésun corpus de visages majoritairement clairs
Étiquettesles décisions passées encodent des pratiques passéesdes recrutements historiquement inégaux
Variables relaisune variable neutre est corrélée à un attribut protégécode postal, type d’établissement, coupure de parcours
Boucle de rétroactionles prédictions influencent les données futurespatrouiller là où l’on a déjà constaté des infractions

La troisième ligne est celle que l’on sous-estime le plus. Démonstration :

import numpy as np
from sklearn.linear_model import LogisticRegression

rng = np.random.default_rng(0)
n = 2000

groupe = rng.integers(0, 2, n)          # attribut protégé, 0 ou 1
competence = rng.normal(0, 1, n)        # réelle, indépendante du groupe

# Variable relais : un signal de parcours corrélé au groupe,
# sans aucun lien avec la compétence.
relais = groupe * 1.5 + rng.normal(0, 0.5, n)

# Étiquettes historiques : les décisions passées ont favorisé le groupe 1.
score_historique = competence + 1.2 * groupe + rng.normal(0, 0.3, n)
retenu = (score_historique > 0.8).astype(int)

# Le groupe n'est PAS fourni au modèle.
X = np.column_stack([competence, relais])
modele = LogisticRegression().fit(X, retenu)
prediction = modele.predict(X)

print(modele.coef_.round(2))            # [[3.61 2.08]]
for g in (0, 1):
    m = groupe == g
    print(g, round(prediction[m].mean(), 3), round(retenu[m].mean(), 3))
# 0 0.266 0.22
# 1 0.56  0.631

Deux résultats à lire ensemble. Le coefficient de la variable relais vaut 2,08, contre 3,61 pour la compétence : le modèle s’appuie massivement sur une variable qui n’a aucun pouvoir prédictif propre, uniquement parce qu’elle est corrélée à l’attribut protégé, lui-même corrélé aux étiquettes historiques. Résultat, le taux de sélection est de 26,6 % pour le groupe 0 contre 56,0 % pour le groupe 1, alors que la compétence est distribuée identiquement dans les deux groupes par construction.

Le modèle a reconstruit l’attribut protégé sans l’avoir reçu. C’est pourquoi retirer une colonne sensible d’un jeu de données ne constitue pas une mesure d’équité : cela supprime la possibilité de mesurer la disparité, pas la disparité elle-même.

Vérifions le diagnostic en retirant la variable relais :

modele_sobre = LogisticRegression().fit(competence.reshape(-1, 1), retenu)
p = modele_sobre.predict(competence.reshape(-1, 1))
for g in (0, 1):
    m = groupe == g
    print(g, round(p[m].mean(), 3))
# 0 0.424
# 1 0.427

Les taux deviennent 42,4 % et 42,7 % : l’écart a disparu. La variable relais était bien la voie de transmission. Encore fallait-il conserver l’attribut protégé dans le jeu de données d’audit pour pouvoir faire ce calcul.

Sur des données réelles, l’ordre de grandeur de ces disparités est parfois considérable. L’étude Gender Shades de Joy Buolamwini et Timnit Gebru, publiée en 2018, a évalué des services commerciaux de classification du genre à partir de photographies : le taux d’erreur atteignait jusqu’à 34,7 % pour les femmes à peau foncée, contre 0,8 % pour les hommes à peau claire. Un même produit, annoncé avec un taux de réussite global élevé, se comportait donc très différemment selon la personne photographiée.

Mesurer l’équité plutôt que la jurer

Une disparité de taux de sélection est-elle en soi la preuve d’un modèle injuste ? Pas nécessairement, et c’est là que le sujet devient sérieux. Reprenons le modèle biaisé et mesurons-le autrement.

from sklearn.metrics import confusion_matrix

for g in (0, 1):
    m = groupe == g
    tn, fp, fn, tp = confusion_matrix(retenu[m], prediction[m]).ravel()
    print(g, "TPR", round(tp / (tp + fn), 3), "FPR", round(fp / (fp + tn), 3))
# 0 TPR 0.853 FPR 0.101
# 1 TPR 0.834 FPR 0.091

Le taux de vrais positifs vaut 85,3 % pour le groupe 0 et 83,4 % pour le groupe 1 ; les taux de faux positifs, 10,1 % et 9,1 %. Ces valeurs sont quasi identiques d’un groupe à l’autre.

Le même modèle est donc, simultanément :

  • très inéquitable au sens de la parité démographique — 26,6 % contre 56,0 % de taux de sélection ;
  • presque parfaitement équitable au sens de l’égalité des chances — mêmes taux d’erreur dans chaque groupe.

Il n’y a pas de contradiction, ni d’erreur de calcul. Les deux critères mesurent des choses différentes. Le second demande : « à situation égale par rapport à l’étiquette, le modèle traite-t-il les groupes pareillement ? » La réponse est oui. Mais l’étiquette elle-même — les décisions historiques — est inégale. Un modèle qui reproduit fidèlement une pratique inéquitable satisfait l’égalité des chances tout en perpétuant l’inégalité.

CritèreCe qu’il exigeVerdict ici
Parité démographiquemême taux de sélection par groupeéchec (0,266 / 0,560)
Égalité des chancesmême taux de vrais positifs par groupesatisfait (0,853 / 0,834)
Égalité des taux d’erreurmêmes vrais et faux positifssatisfait (0,101 / 0,091)

Des résultats d’impossibilité établis en informatique théorique montrent que ces critères ne peuvent en général pas être satisfaits tous ensemble, sauf dans des cas dégénérés. Il faut donc choisir. Ce choix dépend de la question qu’on estime pertinente — reproduire fidèlement le passé, ou corriger un déséquilibre — et cette question n’est pas technique. Le rôle de l’ingénieur est de rendre l’arbitrage visible et chiffré, pas de le trancher seul dans un notebook.

Données personnelles et réidentification

Retirer le nom et l’adresse d’un fichier ne l’anonymise pas. La combinaison de quelques attributs banals suffit souvent à isoler une personne.

from collections import Counter

# (année de naissance, sexe, code postal)
table = [
    ("1985", "H", "75011"), ("1985", "H", "75011"), ("1985", "F", "75011"),
    ("1990", "F", "69003"), ("1990", "F", "69003"), ("1962", "H", "33800"),
]

for combinaison, occurrences in sorted(Counter(table).items()):
    print(combinaison, occurrences, "UNIQUE" if occurrences == 1 else "")
# ('1962', 'H', '33800') 1 UNIQUE
# ('1985', 'F', '75011') 1 UNIQUE
# ('1985', 'H', '75011') 2
# ('1990', 'F', '69003') 2

Sur six lignes prétendument anonymes, deux personnes sont identifiables de façon unique par le seul croisement de trois attributs ordinaires. Le principe qui généralise ce contrôle s’appelle le k-anonymat : exiger que chaque combinaison d’attributs quasi-identifiants apparaisse au moins k fois. Ici, avec k = 2, deux lignes sont non conformes et devraient être généralisées — tranche d’âge plutôt qu’année, département plutôt que code postal — ou supprimées.

Le règlement général sur la protection des données, applicable depuis le 25 mai 2018, distingue nettement deux notions souvent confondues. La pseudonymisation remplace les identifiants directs par des codes : les données restent des données personnelles, avec toutes les obligations associées, car la réidentification reste possible. L’anonymisation au sens du règlement suppose que la réidentification soit devenue raisonnablement impossible — ce que l’exemple ci-dessus montre difficile à atteindre.

Deux principes ont des conséquences directes sur la conception d’un système d’IA :

  • Minimisation : ne collecter que ce qui est nécessaire à la finalité déclarée. « Cela pourrait servir au modèle plus tard » n’est pas une finalité.
  • Limitation des finalités : des données collectées pour un usage ne peuvent pas être réutilisées librement pour entraîner un modèle poursuivant un autre objectif.

Le texte de référence est le règlement (UE) 2016/679.

Expliquer une décision

Certains modèles sont lisibles par construction. Un arbre de faible profondeur s’imprime et se relit :

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_text

iris = load_iris()
arbre = DecisionTreeClassifier(max_depth=2, random_state=0).fit(iris.data, iris.target)
print(export_text(arbre, feature_names=list(iris.feature_names), decimals=1))
# |--- petal width (cm) <= 0.8
# |   |--- class: 0
# |--- petal width (cm) >  0.8
# |   |--- petal width (cm) <= 1.8
# |   |   |--- class: 1
# |   |--- petal width (cm) >  1.8
# |   |   |--- class: 2

Deux comparaisons sur une seule mesure suffisent à décrire entièrement ce classifieur. Une personne concernée par la décision peut la contester sur le fond : « la largeur de mon pétale a été mal mesurée ».

Pour un réseau à plusieurs millions de paramètres, cette lecture n’existe pas. On recourt alors à des explications a posteriori : mesurer la chute de performance quand on brouille une variable, produire une carte de saillance sur une image, attribuer un poids local à chaque variable pour une prédiction donnée. Ces outils sont utiles, et une précision d’honnêteté est indispensable : ils produisent une approximation du comportement du modèle, pas le raisonnement qu’il a effectivement suivi — lequel n’a pas la forme d’un raisonnement. Deux méthodes d’explication appliquées au même modèle peuvent d’ailleurs donner des importances différentes.

D’où une conséquence pratique : lorsqu’une décision doit être justifiée devant la personne concernée ou devant un régulateur, choisir d’emblée un modèle interprétable est souvent plus sûr qu’ajouter une couche d’explication sur un modèle opaque. L’écart de performance est parfois nul, et il se mesure.

L’enjeu est aussi juridique. L’article 22 du règlement précité encadre les décisions entièrement automatisées produisant des effets juridiques ou affectant significativement une personne, et prévoit notamment un droit d’obtenir une intervention humaine.

Le coût énergétique

Entraîner un modèle consomme de l’électricité. L’ordre de grandeur se calcule à partir de trois quantités : le nombre d’heures de calcul, la puissance des machines et l’intensité carbone du réseau électrique utilisé.

heures_gpu = 10_000        # hypothèse : 10 000 heures de carte graphique
puissance_kw = 0.4         # ordre de grandeur d'une carte de calcul
pue = 1.2                  # surcoût du centre de données (refroidissement, etc.)

energie_kwh = heures_gpu * puissance_kw * pue
print(energie_kwh)         # 4800.0

for nom, intensite_g_par_kwh in (("très carboné", 700), ("moyen", 250), ("décarboné", 50)):
    print(nom, round(energie_kwh * intensite_g_par_kwh / 1000, 1), "kg CO2e")
# très carboné 3360.0 kg CO2e
# moyen        1200.0 kg CO2e
# décarboné     240.0 kg CO2e

Ce calcul n’est pas une mesure : c’est une estimation construite sur des hypothèses explicites, et son intérêt est là. Pour la même quantité de calcul, l’empreinte varie d’un facteur 14 selon le mix électrique. Le levier principal n’est donc pas seulement l’optimisation du modèle : c’est le lieu et le moment où le calcul est effectué.

Deux nuances de méthode, souvent absentes des annonces :

  • Les chiffres publiés portent presque toujours sur l’entraînement d’un modèle final, en omettant les essais infructueux et les recherches d’hyperparamètres, qui peuvent représenter l’essentiel du coût réel.
  • Sur un modèle largement utilisé, le cumul des inférences finit par dépasser le coût de l’entraînement. Un entraînement unique est visible, des milliards de requêtes le sont moins.

Les estimations publiées dans la littérature varient fortement selon la méthodologie et le périmètre retenus. Citer un chiffre isolé sans ses hypothèses n’a pas de sens ; c’est pourquoi le calcul ci-dessus expose les siennes.

Le cadre réglementaire européen

L’Union européenne s’est dotée d’un règlement spécifique, le règlement (UE) 2024/1689, dit « règlement sur l’intelligence artificielle ». Sa logique est de graduer les obligations selon le risque de l’usage, et non selon la technique employée : le même algorithme peut être hors champ dans un jeu vidéo et à haut risque dans un processus de recrutement.

Niveau de risqueTraitementExemples de la catégorie
Inacceptableinterditnotation sociale par les autorités publiques
Élevéobligations renforcéesaccès à l’emploi, à l’éducation, au crédit ; certains usages en infrastructures critiques
Limitéobligations de transparencesignaler à l’utilisateur qu’il interagit avec une IA, marquer les contenus générés
Minimalpas d’obligation spécifiquefiltre anti-spam, recommandation de contenu ordinaire

Le règlement est entré en vigueur le 1er août 2024, avec une application échelonnée dans le temps : les interdictions s’appliquent les premières, les obligations relatives aux modèles à usage général ensuite, et le régime général des systèmes à haut risque plus tard. Les échéances précises et leur portée figurent dans le texte, seule source à consulter pour une question opérationnelle : règlement (UE) 2024/1689.

Pour un système classé à haut risque, les obligations tournent autour de quelques axes stables : qualité et gouvernance des données d’entraînement, documentation technique, journalisation, information des utilisateurs, surveillance humaine effective, robustesse et cybersécurité. Un praticien y reconnaîtra une bonne partie de ce qui constitue simplement un travail sérieux — et ce n’est pas un hasard : la traçabilité d’un jeu de données et la mesure de la performance par sous-groupe sont exigibles bien avant de l’être légalement.

Emploi : ce que l’on sait et ce que l’on ne sait pas

C’est le sujet sur lequel la tentation d’affirmer est la plus forte et la base empirique la plus faible. Deux repères permettent de mesurer l’écart entre les estimations disponibles.

En 2013, Carl Frey et Michael Osborne ont estimé qu’environ 47 % de l’emploi aux États-Unis relevait d’une catégorie à haut risque d’automatisation. Ce chiffre, très repris, a été critiqué sur sa méthode : il évalue des professions entières. En 2016, des travaux menés dans le cadre de l’OCDE par Melanie Arntz, Terry Gregory et Ulrich Zierahn ont refait l’exercice au niveau des tâches qui composent chaque emploi, et abouti à un ordre de grandeur d’environ 9 % pour les pays étudiés.

ÉtudeAnnéeUnité d’analyseOrdre de grandeur annoncé
Frey et Osborne2013la profession entièreenviron 47 % de l’emploi américain à haut risque
Arntz, Gregory et Zierahn (cadre OCDE)2016les tâches composant l’emploienviron 9 % des emplois à haut risque

Un facteur cinq entre deux études sérieuses sur le même objet doit être lu pour ce qu’il est : le résultat dépend étroitement de l’unité d’analyse choisie. Ce qui est solidement établi est plus modeste, mais réel :

  • L’automatisation porte sur des tâches, pas sur des métiers. Un métier dont 30 % des tâches s’automatisent se transforme ; il ne disparaît pas mécaniquement.
  • Les effets se répartissent inégalement selon les secteurs, les niveaux de qualification et les territoires. Un solde net national masque des situations locales très différentes.
  • Le rythme d’adoption dépend de facteurs organisationnels, réglementaires et de coût, pas seulement de la faisabilité technique. C’est ce décalage qui rend les prévisions à dix ans peu fiables.

Sur la suite — capacités futures des modèles, calendriers, ruptures annoncées — la position honnête est de constater que les prévisions publiées se sont montrées peu fiables dans les deux sens, et qu’une prédiction assortie d’une date relève de l’opinion, pas du résultat. Ce cours s’arrête donc ici : il vous a donné de quoi évaluer les affirmations que vous rencontrerez, ce qui vaut mieux que de vous en fournir une de plus.

À retenir

  • Un biais vient des données, par quatre voies : échantillonnage, étiquettes, variables relais et boucles de rétroaction. Retirer l’attribut sensible ne supprime pas la disparité — le modèle la reconstruit via un relais et atteint 26,6 % contre 56,0 % de taux de sélection — cela supprime seulement la possibilité de la mesurer.
  • Plusieurs définitions de l’équité sont défendables, toutes mesurables, et incompatibles entre elles en général. Le même modèle échoue à la parité démographique et satisfait l’égalité des chances. Le choix du critère est politique ; le devoir de l’ingénieur est de le chiffrer et de le rendre visible.
  • Trois attributs ordinaires suffisent à réidentifier des personnes dans un fichier « anonyme ». Pseudonymiser n’est pas anonymiser, et les données pseudonymisées restent des données personnelles.
  • Les explications a posteriori d’un modèle opaque sont des approximations de son comportement, pas son raisonnement. Quand une décision doit être justifiée, un modèle interprétable choisi d’emblée est souvent le meilleur choix.
  • Pour un calcul identique, l’empreinte carbone varie d’un facteur 14 selon le mix électrique. Sur l’emploi, deux études sérieuses aboutissent à 47 % et 9 % selon qu’elles raisonnent par profession ou par tâche : l’incertitude fait partie du résultat et doit être annoncée avec lui.

Commentaires

Les commentaires sont alimentés par GitHub Discussions

Connectez-vous avec GitHub pour participer à la discussion

Lien copié !