Éthique
Biais et équité
Comprendre et atténuer les biais dans les systèmes d'IA
Les biais algorithmiques sont des erreurs systématiques dans les systèmes d'IA qui conduisent à des résultats injustes pour certains groupes de personnes.
Qu'est-ce qu'un biais algorithmique ?
Définition
BIAIS = Erreur systématique favorisant ou défavorisant
certains groupes de manière injuste
Exemples :
├── Reconnaissance faciale moins précise pour les peaux foncées
├── CV de femmes moins bien notés par les algorithmes de recrutement
├── Scoring de crédit défavorable pour certains quartiers
└── Diagnostic médical moins fiable pour les minoritésSources de biais
┌─────────────────────────────────────────────────────────────┐
│ SOURCES DE BIAIS │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. DONNÉES D'ENTRAÎNEMENT │
│ ├── Sous-représentation de groupes │
│ ├── Données historiques biaisées │
│ ├── Erreurs d'étiquetage │
│ └── Biais de sélection │
│ │
│ 2. CONCEPTION DU MODÈLE │
│ ├── Choix des features (variables proxy) │
│ ├── Fonction objectif mal définie │
│ ├── Métriques d'évaluation inadaptées │
│ └── Manque de tests de fairness │
│ │
│ 3. DÉPLOIEMENT │
│ ├── Contexte d'utilisation différent │
│ ├── Feedback loops │
│ └── Dérive des données │
│ │
│ 4. INTERPRÉTATION │
│ ├── Surconfiance dans les résultats │
│ └── Manque de supervision humaine │
│ │
└─────────────────────────────────────────────────────────────┘Cas célèbres de biais
COMPAS (Justice)
Système de prédiction de récidive utilisé dans les tribunaux américains.
Étude ProPublica (2016) :
Taux de faux positifs (prédit récidiviste à tort) :
├── Personnes noires : 45%
└── Personnes blanches : 23%
Taux de faux négatifs (prédit non-récidiviste à tort) :
├── Personnes noires : 28%
└── Personnes blanches : 48%
→ Le système était deux fois plus susceptible de mal classifier
les personnes noires comme à haut risqueAmazon Recruiting (Recrutement)
Outil de tri de CV abandonné par Amazon en 2018.
Problème :
- Entraîné sur 10 ans de CV historiques
- Majoritairement des hommes dans les postes tech
- Le modèle a appris à pénaliser les CV de femmes
Manifestations :
- Pénalisation du mot "women's" (ex: "women's chess club")
- Défavorisation des universités féminines
- Préférence pour les termes masculins
→ Projet abandonné car impossible à débiaiserReconnaissance faciale
Étude Gender Shades (MIT, 2018) :
| Groupe | Taux d'erreur IBM | Taux d'erreur Microsoft |
|---|---|---|
| Hommes à peau claire | 0.0% | 0.0% |
| Femmes à peau claire | 0.3% | 1.7% |
| Hommes à peau foncée | 6.0% | 6.0% |
| Femmes à peau foncée | 34.7% | 20.8% |
Types de biais
Biais de représentation
# Exemple : dataset déséquilibré
dataset_composition = {
"groupe_majoritaire": 90000, # 90%
"groupe_minoritaire": 10000 # 10%
}
# Le modèle optimise pour la majorité
# Performance sur minorité dégradéeBiais de mesure
Variable proxy = Variable corrélée avec un attribut protégé
Exemples :
├── Code postal → origine ethnique / niveau socio-économique
├── Prénom → genre / origine
├── Université → milieu social
└── Loisirs → genre / culture
Problème : même sans utiliser directement l'attribut protégé,
le modèle peut discriminer via les proxiesBiais de feedback loop
┌──────────────────────────────────────────────┐
│ BOUCLE DE RÉTROACTION │
├──────────────────────────────────────────────┤
│ │
│ Modèle prédit plus de criminalité │
│ dans certains quartiers │
│ ↓ │
│ Plus de police déployée dans ces quartiers │
│ ↓ │
│ Plus d'arrestations dans ces quartiers │
│ ↓ │
│ Données confirment la prédiction initiale │
│ ↓ │
│ Modèle renforce le biais │
│ ↓ │
│ (répétition du cycle) │
│ │
└──────────────────────────────────────────────┘Métriques d'équité (Fairness)
Définitions de l'équité
Il existe plusieurs définitions de l'équité, parfois incompatibles :
1. DEMOGRAPHIC PARITY (Parité démographique)
P(Ŷ=1|A=0) = P(Ŷ=1|A=1)
"Même taux de décisions positives pour tous les groupes"
2. EQUALIZED ODDS (Égalité des chances)
P(Ŷ=1|Y=1,A=0) = P(Ŷ=1|Y=1,A=1) ET
P(Ŷ=1|Y=0,A=0) = P(Ŷ=1|Y=0,A=1)
"Mêmes taux de vrais/faux positifs pour tous"
3. PREDICTIVE PARITY (Parité prédictive)
P(Y=1|Ŷ=1,A=0) = P(Y=1|Ŷ=1,A=1)
"Même précision des prédictions positives"
4. INDIVIDUAL FAIRNESS
"Individus similaires → décisions similaires"
Où : A = attribut sensible, Y = vraie valeur, Ŷ = prédictionImpossibilité de Chouldechova
THÉORÈME :
Sauf cas particuliers, il est IMPOSSIBLE de satisfaire
simultanément :
- Equalized odds
- Predictive parity
→ Il faut choisir quelle définition de l'équité prioriser
→ Ce choix est une décision ÉTHIQUE, pas techniqueMesurer l'équité en Python
from fairlearn.metrics import (
demographic_parity_difference,
equalized_odds_difference,
MetricFrame
)
from sklearn.metrics import accuracy_score, precision_score, recall_score
# Calculer les métriques par groupe
metric_frame = MetricFrame(
metrics={
"accuracy": accuracy_score,
"precision": precision_score,
"recall": recall_score
},
y_true=y_test,
y_pred=y_pred,
sensitive_features=sensitive_features
)
# Afficher les résultats par groupe
print(metric_frame.by_group)
# Différence de parité démographique
dpd = demographic_parity_difference(
y_test, y_pred,
sensitive_features=sensitive_features
)
print(f"Demographic Parity Difference: {dpd:.3f}")
# Différence d'equalized odds
eod = equalized_odds_difference(
y_test, y_pred,
sensitive_features=sensitive_features
)
print(f"Equalized Odds Difference: {eod:.3f}")Techniques d'atténuation
Pré-processing : agir sur les données
from fairlearn.preprocessing import CorrelationRemover
# Supprimer la corrélation avec l'attribut sensible
cr = CorrelationRemover(sensitive_feature_ids=[0])
X_fair = cr.fit_transform(X_train)Techniques :
- Rééchantillonnage (sur/sous-échantillonnage)
- Suppression des corrélations
- Data augmentation équilibrée
- Anonymisation des attributs sensibles
In-processing : agir sur l'entraînement
from fairlearn.reductions import ExponentiatedGradient, DemographicParity
# Contrainte d'équité pendant l'entraînement
constraint = DemographicParity()
mitigator = ExponentiatedGradient(
estimator=LogisticRegression(),
constraints=constraint
)
mitigator.fit(X_train, y_train, sensitive_features=sensitive_train)
y_pred_fair = mitigator.predict(X_test)Techniques :
- Contraintes d'équité dans la fonction de perte
- Adversarial debiasing
- Regularisation pour l'équité
Post-processing : ajuster les prédictions
from fairlearn.postprocessing import ThresholdOptimizer
# Ajuster les seuils par groupe pour l'équité
postprocess = ThresholdOptimizer(
estimator=model,
constraints="equalized_odds",
prefit=True
)
postprocess.fit(X_train, y_train, sensitive_features=sensitive_train)
y_pred_fair = postprocess.predict(X_test, sensitive_features=sensitive_test)Techniques :
- Seuils différenciés par groupe
- Calibration des probabilités
- Reject option classification
Bonnes pratiques
Checklist anti-biais
AVANT L'ENTRAÎNEMENT :
□ Analyser la composition du dataset
□ Vérifier la représentativité des groupes
□ Identifier les variables proxy potentielles
□ Définir les critères d'équité pertinents
PENDANT L'ENTRAÎNEMENT :
□ Utiliser des techniques d'atténuation
□ Monitorer les métriques d'équité
□ Tester sur des sous-groupes
APRÈS L'ENTRAÎNEMENT :
□ Auditer les performances par groupe
□ Documenter les limitations
□ Planifier des audits réguliers
EN PRODUCTION :
□ Monitorer la dérive
□ Collecter les retours utilisateurs
□ Prévoir un processus de contestationAudit d'équité
def audit_fairness(model, X_test, y_test, sensitive_features, threshold=0.1):
"""Audit complet d'équité d'un modèle."""
y_pred = model.predict(X_test)
# Métriques par groupe
mf = MetricFrame(
metrics={"accuracy": accuracy_score, "selection_rate": selection_rate},
y_true=y_test,
y_pred=y_pred,
sensitive_features=sensitive_features
)
# Différences
dpd = demographic_parity_difference(y_test, y_pred, sensitive_features=sensitive_features)
eod = equalized_odds_difference(y_test, y_pred, sensitive_features=sensitive_features)
# Rapport
report = {
"metrics_by_group": mf.by_group.to_dict(),
"demographic_parity_diff": dpd,
"equalized_odds_diff": eod,
"passes_threshold": dpd < threshold and eod < threshold
}
return reportOutils et frameworks
| Outil | Description | Langage |
|---|---|---|
| Fairlearn | Microsoft, métriques et atténuation | Python |
| AI Fairness 360 | IBM, toolkit complet | Python |
| Aequitas | Audit de biais | Python |
| What-If Tool | Google, visualisation | TensorFlow |
| Themis-ML | Tests de fairness | Python |
| FairML | Audit de features | Python |
Limites et réflexions
L'équité parfaite n'existe pas
Dilemmes :
├── Équité de groupe vs individuelle
├── Égalité de traitement vs égalité de résultat
├── Court terme vs long terme
└── Précision vs équité
→ Des compromis sont inévitables
→ Ces choix doivent être délibérés et documentésAu-delà du technique
Le biais algorithmique reflète des problèmes sociétaux :
├── Inégalités historiques
├── Discrimination systémique
├── Manque de diversité dans la tech
Solutions techniques seules insuffisantes :
├── Diversifier les équipes
├── Impliquer les communautés affectées
├── Régulation et accountability
└── Éducation et sensibilisationRésumé
BIAIS ALGORITHMIQUE = Erreur systématique injuste
Sources :
├── Données (représentation, historique, étiquetage)
├── Modèle (features, objectif, métriques)
├── Déploiement (contexte, feedback)
└── Interprétation (surconfiance)
Métriques d'équité :
├── Demographic parity
├── Equalized odds
├── Predictive parity
└── Individual fairness
Atténuation :
├── Pré-processing (données)
├── In-processing (entraînement)
└── Post-processing (prédictions)
Outils : Fairlearn, AI Fairness 360, Aequitas
Important : L'équité est un choix éthique, pas seulement technique