Module L32 · Partie K · Ingénierie de l’IA
Métriques : tout ce qu’il faut pour critiquer un modèle, un RAG, un prompt, un agent.
Un système d’IA ne vaut que ce que sa mesure permet d’affirmer. Ce chapitre — le plus long de la partie — donne toutes les métriques qu’un ingénieur ou un chercheur doit savoir calculer, interpréter et contester : classification, régression, classement et recherche, génération de texte, LLM et benchmarks, RAG, prompts, agents, OCR/ASR/vision, calibration et incertitude, robustesse, équité, efficacité et coût, évaluation humaine et par LLM-juge — et la statistique qui rend une comparaison valide. Chaque métrique est implémentée, avec ses théorèmes, ses pièges et les articles.
Durée : 6 séances · Prérequis : L11, L13, L24, L26–L31. Objectifs : calculer et interpréter ≈ 40 métriques ; démontrer les propriétés clés (AUC = probabilité de bon ordre, décomposition du Brier, estimateur pass@k) ; construire un protocole d’évaluation complet avec intervalles de confiance et tests ; détecter les fuites, la contamination et le Goodhart ; lire un classement public avec scepticisme.
Ce que vous saurez faire à la fin
- Choisir la métrique qui correspond au coût métier et la justifier.
- Produire un rapport d’évaluation : métriques, IC bootstrap, tests appariés, analyse d’erreurs par segment.
- Évaluer un RAG et un agent bout en bout, composant par composant.
- Calibrer et valider un LLM-juge contre des humains (kappa, accord, biais).
Plan
Carte du chapitre
| Partie | Contenu | Métriques |
|---|---|---|
| 01 Classification | Matrice de confusion, seuils, courbes | Exactitude, précision, rappel, Fβ, micro/macro, MCC, log-loss, ROC-AUC, PR-AUC/AP, top-k |
| 02 Calibration et incertitude | Probabilités fiables | Brier et sa décomposition, ECE, diagramme de fiabilité, NLL, intervalles de prédiction, couverture conforme |
| 03 Régression et séries | Erreurs et échelles | MAE, RMSE, MAPE, sMAPE, R², quantiles/pinball, MASE |
| 04 Classement et recherche | RAG, recommandation | P@k, R@k, MRR, MAP, nDCG, hit rate ; précision/rappel de contexte |
| 05 Génération de texte | Traduction, résumé, LLM | Perplexité, BLEU, chrF, ROUGE, METEOR, BERTScore, exact match, F1 token, pass@k |
| 06 LLM et benchmarks | Classements et pièges | MMLU, GSM8K, HumanEval, MT-Bench, Arena/Elo, contamination, variance de prompt |
| 07 RAG, prompts, agents | Systèmes composés | Fidélité, pertinence, citations, refus ; taux de réussite de tâche, pas, coût, sécurité |
| 08 Perception | OCR, ASR, vision | CER/WER, IoU, mAP, DER, PSNR/SSIM/FID |
| 09 Robustesse et équité | Hors distribution, biais | Écart OOD, robustesse adverse, parité démographique, égalité des chances, calibration par groupe |
| 10 Efficacité et coût | Production | Latence p50/p95, débit, coût par requête, énergie, empreinte mémoire |
| 11 Évaluation humaine et LLM-juge | Jugements | Kappa, alpha de Krippendorff, Bradley-Terry/Elo, biais du juge |
| 12 Statistique | Conclure | Bootstrap, tests appariés, McNemar, corrections multiples, taille d’effet, puissance |
Fiche de cours · Définitions
Définitions transversales
Fiche de cours · Formules
Formulaire général (1/2) : classification, calibration, régression
Fiche de cours · Formules
Formulaire général (2/2) : classement, texte, LLM, systèmes, statistique
Fiche de cours · Théorèmes et démonstrations
Démonstrations à savoir refaire (1/2)
Fiche de cours · Théorèmes et démonstrations
Démonstrations à savoir refaire (2/2)
01 / Classification
Matrice de confusion, seuils, ROC et précision-rappel : tout implémenté
Choisir le seuil par le coût métier : minimiser CFN·FN(t) + CFP·FP(t). Si rater un obstacle coûte 100× une fausse alerte, le seuil optimal est bas (rappel élevé), et F2 ou le rappel à précision fixée sont les métriques à suivre — pas l’exactitude, ni même F1.
01 / Classification
Multi-classes : micro, macro, pondéré, top-k, et lecture d’une matrice
02 / Calibration et incertitude
Brier, ECE, diagramme de fiabilité, température, et prédiction conforme
03 / Régression et séries
MAE, RMSE, MAPE, R², pinball, MASE : ce que chacune récompense
Sur des séries temporelles : jamais de séparation aléatoire (fuite du futur), toujours une validation glissante (entraîner jusqu’à t, tester sur t+1..t+h, avancer), et toujours la baseline naïve (MASE) — beaucoup de modèles publiés ne la battent pas (Makridakis, M4).
04 / Classement et recherche
P@k, R@k, MRR, MAP, nDCG — et les métriques de contexte pour le RAG
05 / Génération de texte
BLEU, chrF, ROUGE, exact match/F1, pass@k — implémentés, avec leurs pathologies
06 / LLM et benchmarks
Lire un classement : ce que mesurent MMLU, GSM8K, HumanEval, MT-Bench, l’Arena — et ce qui les fausse
| Benchmark | Mesure | Format / métrique | Pièges connus |
|---|---|---|---|
| MMLU (57 matières) | Connaissances académiques | QCM 4 choix, exactitude, 5-shot | Sensible au format des choix (A/B/C/D vs texte), contamination, erreurs dans les questions (~6 %) ; saturé (MMLU-Pro) |
| GSM8K / MATH | Raisonnement arithmétique / mathématique | Réponse finale, exactitude, CoT | Contamination massive (versions reformulées GSM1k montrent des baisses de 10 points) ; extraction de la réponse fragile |
| HumanEval / MBPP | Génération de code | pass@k sur tests unitaires | 164 problèmes seulement ; tests incomplets ; contamination ; EvalPlus ajoute des tests |
| HellaSwag, ARC, WinoGrande | Sens commun | QCM, log-vraisemblance des choix | Artefacts d’annotation exploitables sans lire la question |
| MT-Bench, AlpacaEval | Qualité conversationnelle | LLM-juge (GPT-4) note ou compare | Biais de longueur, biais de position, auto-préférence du juge ; AlpacaEval 2 corrige la longueur |
| Chatbot Arena | Préférence humaine en aveugle | Comparaisons par paires → Elo/Bradley-Terry | Population d’utilisateurs non représentative ; prompts courts ; style récompensé ; possibilité de manipulation |
| BIG-bench, HELM | Large couverture, multi-métriques | Nombreuses tâches, exactitude + calibration + robustesse + équité + efficacité | Coût ; agrégation discutable |
| SWE-bench, GAIA, WebArena | Agents (code, web, outils) | Taux de résolution de tâches réelles | Coût ; variance élevée ; fuite de solutions sur GitHub |
07 / RAG, prompts, agents
Évaluer un système composé : par composant, puis bout en bout
| Composant | Métriques | Comment | Référence |
|---|---|---|---|
| Découpage + index (RAG) | R@k, nDCG, précision de contexte | Jeu de questions → morceaux pertinents annotés | L26 |
| Génération (RAG) | Fidélité, pertinence réponse, exactitude, citations valides, refus corrects | Juge (humain/LLM) par affirmation ; vérification syntaxique des citations | RAGAS, ARES |
| Prompt | Exactitude, format valide, dispersion inter-formulations, coût/tokens | Banc d’essai versionné, graines | L28 |
| Agent (outils, multi-étapes) | Taux de réussite de tâche, pas moyens, coût, taux de boucles/abandons, actions dangereuses, robustesse aux erreurs d’outils | Environnements reproductibles (bac à sable), tâches avec vérificateur automatique | SWE-bench, GAIA, τ-bench |
| Sécurité | Taux de compromission (injection), taux de refus légitime/illégitime (sur-refus), fuite de données | Corpus adverses, red teaming | OWASP LLM Top 10, HarmBench |
| Expérience utilisateur | Satisfaction (CSAT), taux d’escalade vers un humain, temps de résolution, taux de reformulation | Télémétrie en production, A/B | L35 |
08 / Perception
OCR, ASR, vision : CER/WER, IoU, mAP, DER, et métriques d’image
OCR : CER/WER par Levenshtein, exactitude par champ, taux de documents parfaits (L29). ASR : WER normalisé, par condition, sur entités, RTF (L30). Segmentation : IoU par classe, mIoU, Dice = 2|A∩B|/(|A|+|B|). Estimation de pose : ATE/RPE (L20). Toutes ont besoin d’une vérité terrain dont le coût d’annotation est le premier poste du projet (L36).
09 / Robustesse et équité
Hors distribution, perturbations, et métriques d’équité — avec leur incompatibilité
Robustesse adverse : mesurer la baisse sous perturbations optimisées (PGD pour la vision, suffixes adverses pour les LLM) ; c’est une borne pessimiste utile pour la sécurité. Hors distribution : rapporter aussi la détection d’OOD (le modèle sait-il qu’il ne sait pas ? AUROC de la confiance entre in/out).
10 / Efficacité et coût
Latence, débit, coût, énergie : les métriques que la production impose
11 / Humains et LLM-juge
Accord inter-annotateurs, Bradley-Terry, et validation d’un LLM-juge
12 / Statistique
Conclure : bootstrap, tests appariés, McNemar, comparaisons multiples
Le protocole minimal d’une comparaison : même jeu de test, appariement, ≥ 3 graines quand le système est stochastique, IC bootstrap de la différence, test apparié, taille d’effet, hypothèse déclarée avant, et analyse d’erreurs qualitative sur 50 cas. Sans cela, un tableau de chiffres n’est pas un résultat (L24).
Synthèse
Quelle métrique pour quel problème : la table de décision
| Situation | Métrique principale | Métriques de contrôle | Ne pas utiliser seule |
|---|---|---|---|
| Classification équilibrée | Exactitude, log-loss | Matrice de confusion, calibration | — |
| Classe rare, coût asymétrique | Rappel à précision fixée, Fβ, PR-AUC | MCC, coût total | Exactitude, ROC-AUC |
| Décisions probabilistes (seuils, fusion) | Brier, ECE, log-loss | Diagramme de fiabilité par tranche | Exactitude |
| Régression avec valeurs aberrantes | MAE, médiane | RMSE, quantiles | MAPE, R² seul |
| Prévision de séries | MASE, pinball | Validation glissante | Séparation aléatoire |
| Recherche / RAG | R@k, nDCG ; fidélité | Précision de contexte, MRR, latence | Score du LLM seul |
| Traduction / résumé | Humain, COMET/BERTScore | chrF, BLEU (comparabilité) | BLEU/ROUGE seul |
| Code | pass@k avec tests étendus | Temps, sécurité | Similarité textuelle |
| Assistant conversationnel | Réussite de tâche, préférence humaine | LLM-juge validé, sur-refus, latence | MT-Bench seul |
| Agent | Taux de réussite (pass^k), coût | Pas, boucles, actions dangereuses | Une graine |
| Détection / segmentation | mAP@[.5:.95], mIoU | Par classe, par taille d’objet | Exactitude par pixel |
| OCR / ASR | CER/WER normalisés + par champ/entité | Par condition, RTF | Moyenne globale |
| Tout système déployé | Métrique métier (extrinsèque) | Tranches, robustesse, équité, coût, p95 | Un benchmark public |
Articles
Les articles à lire
| Article | Contribution | À retenir |
|---|---|---|
| Hanley & McNeil, The meaning and use of the area under a ROC curve, Radiology 1982 | AUC = Mann-Whitney | Théorème 1 |
| Saito & Rehmsmeier, The Precision-Recall Plot Is More Informative than the ROC Plot on Imbalanced Datasets, PLoS ONE 2015 | PR vs ROC sous déséquilibre | Choisir la courbe selon la prévalence |
| Guo et al., On Calibration of Modern Neural Networks, ICML 2017 — 1706.04599 | Les réseaux profonds sont sur-confiants ; température | ECE, diagrammes de fiabilité |
| Angelopoulos & Bates, A Gentle Introduction to Conformal Prediction, 2021 — 2107.07511 | Garanties de couverture sans hypothèse | Ensembles de prédiction pour la sécurité |
| Papineni et al., BLEU, ACL 2002 ; Post, A Call for Clarity in Reporting BLEU Scores (sacreBLEU), 2018 — 1804.08771 | Métrique lexicale ; standardisation | Théorème 6 ; toujours sacreBLEU |
| Zhang et al., BERTScore, ICLR 2020 — 1904.09675 ; Rei et al., COMET, 2020 | Métriques sémantiques / apprises | Corrélation humaine bien supérieure à BLEU |
| Chen et al., Evaluating LLMs Trained on Code (Codex), 2021 — 2107.03374 | HumanEval, pass@k sans biais | Théorème 4 |
| Liang et al., Holistic Evaluation of Language Models (HELM), 2022 — 2211.09110 | Multi-métriques : exactitude, calibration, robustesse, équité, biais, toxicité, efficacité | Un modèle n’a pas « un » score |
| Zheng et al., Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena, NeurIPS 2023 — 2306.05685 | LLM-juge : accord ~80 % avec les humains ; biais de position, de longueur, d’auto-préférence | Valider le juge, contrôler les biais |
| Zhang et al., A Careful Examination of LLM Performance on Grade School Arithmetic (GSM1k), 2024 — 2405.00332 | Contamination mesurée par un jeu reformulé privé | Écarts jusqu’à 13 points |
| Sclar et al. 2023 (L28) ; Alzahrani et al., When Benchmarks are Targets, 2024 — 2402.01781 | Sensibilité des classements au format | Un point d’écart n’est pas un résultat |
| Chouldechova, Fair prediction with disparate impact, 2017 — 1610.07524 ; Kleinberg et al., 2016 — 1609.05807 | Impossibilité de satisfaire toutes les définitions d’équité | Choisir et documenter |
| Dror et al., The Hitchhiker’s Guide to Testing Statistical Significance in NLP, ACL 2018 | Tests appariés, bootstrap, corrections | Le protocole de la partie 12 |
| Bowman & Dahl, What Will it Take to Fix Benchmarking in NLU?, 2021 — 2104.02145 | Validité, fiabilité, saturation des benchmarks | Construire des jeux privés et évolutifs |
TP guidé
TP — Le rapport d’évaluation complet (6 h)
- Système. Reprendre votre RAG (L26) ou votre classifieur (L13/L31). Écrire d’abord la carte de métriques : objectif métier, métrique principale, métriques de contrôle, tranches, seuils d’acceptation.
- Bibliothèque.
pip install scikit-learn evaluate sacrebleu jiwer; réimplémenter 5 métriques à la main et vérifier contre la bibliothèque (le meilleur test de compréhension). - Mesures. Pour deux versions du système : toutes les métriques pertinentes, par tranche, avec bootstrap apparié (2 000 rééchantillonnages), test apparié, taille d’effet. Diagramme de fiabilité si des probabilités sont produites.
- Juge. Si un LLM-juge est utilisé : 150 cas jugés par 2 humains (kappa entre eux), puis par le juge (Spearman/kappa avec les humains), test du biais de longueur et de position.
- Robustesse et coût. Un jeu décalé (autre source, bruit), 20 cas adverses ; latence p50/p95, coût par requête.
- Livrable. Rapport de 6 pages : carte de métriques, tableaux avec IC, figures, analyse d’erreurs (30 cas), décision « déployer / ne pas déployer » argumentée, et les limites de l’évaluation elle-même.
Exercices
Exercices auto-corrigés (1/2)
Exercice 1 — ROC-AUC par Mann-Whitney et invariance
Implémentez auc_mw(y, s) via la statistique U (rangs, avec ½ pour les égalités) et vérifiez le Théorème 1 : égalité avec l’aire trapézoïdale, invariance par transformation croissante, valeur ½ pour des scores aléatoires.
Correction
def auc_mw(y, s):
y, s = np.asarray(y), np.asarray(s); o = np.argsort(s, kind="mergesort"); r = np.empty(len(s)); r[o] = np.arange(1, len(s) + 1)
# rangs moyens pour les égalités
vals, inv, counts = np.unique(s, return_inverse=True, return_counts=True); somme = np.zeros(len(vals)); np.add.at(somme, inv, r); r = (somme / counts)[inv]
n1, n0 = y.sum(), len(y) - y.sum(); return (r[y == 1].sum() - n1 * (n1 + 1) / 2) / (n1 * n0)Exercice 2 — ECE et une variante moins fragile
Implémentez ece(p, y, bins) (bins de largeur égale) et ece_adaptatif(p, y, bins) (bins de même effectif, par quantiles). Vérifiez : un modèle parfaitement calibré a une ECE ≈ 0 ; ECE dépend du nombre de bins ; la version adaptative est plus stable quand les probabilités sont concentrées.
Correction
def ece(p, y, bins=10):
edges = np.linspace(0, 1, bins + 1); e = 0.0
for a, b in zip(edges, edges[1:]):
m = (p > a) & (p <= b) if a > 0 else (p >= a) & (p <= b)
if m.any(): e += m.mean() * abs(y[m].mean() - p[m].mean())
return e
def ece_adaptatif(p, y, bins=10):
o = np.argsort(p); e = 0.0
for idx in np.array_split(o, bins): e += len(idx) / len(p) * abs(y[idx].mean() - p[idx].mean())
return eExercices
Exercices auto-corrigés (2/2)
Exercice 3 — Bootstrap apparié et décision
Écrivez ic_difference(ok_A, ok_B, B=2000, rng=None) renvoyant (écart moyen, borne basse, borne haute) par bootstrap apparié percentile, et decision(ic, seuil_min) renvoyant "adopter" si la borne basse dépasse seuil_min, "rejeter" si la borne haute est < 0, "indécis" sinon.
Correction
def ic_difference(ok_A, ok_B, B=2000, rng=None):
rng = rng or np.random.default_rng(0); a, b = np.asarray(ok_A, float), np.asarray(ok_B, float); n = len(a)
idx = rng.integers(n, size=(B, n)); d = b[idx].mean(1) - a[idx].mean(1)
return float(b.mean() - a.mean()), float(np.percentile(d, 2.5)), float(np.percentile(d, 97.5))
def decision(ic, seuil_min=0.0):
m, lo, hi = ic
if lo > seuil_min: return "adopter"
if hi < 0: return "rejeter"
return "indécis"Exercice 4 — Elo et Bradley-Terry sur des comparaisons
Implémentez elo(comparaisons, K=32) (séquentiel, départ 1000) et bradley_terry(comparaisons, n, iters) (gradient sur la log-vraisemblance, forces centrées). Vérifiez que les deux retrouvent l’ordre vrai sur 2 000 comparaisons simulées, et que BT est indépendant de l’ordre des comparaisons alors qu’Elo ne l’est pas.
Correction
def elo(comparaisons, n, K=32):
R = np.full(n, 1000.0)
for i, j, w in comparaisons:
Ei = 1 / (1 + 10 ** ((R[j] - R[i]) / 400)); Si = 1.0 if w == i else 0.0
R[i] += K * (Si - Ei); R[j] += K * ((1 - Si) - (1 - Ei))
return R
def bradley_terry(comparaisons, n, iters=300, lr=2.0):
r = np.zeros(n); I = np.array([c[0] for c in comparaisons]); J = np.array([c[1] for c in comparaisons]); W = np.array([1.0 if c[2] == c[0] else 0.0 for c in comparaisons])
for _ in range(iters):
p = 1 / (1 + np.exp(-(r[I] - r[J]))); g = np.zeros(n); np.add.at(g, I, W - p); np.add.at(g, J, -(W - p))
r += lr * g / len(comparaisons); r -= r.mean() # gradient MOYEN de la log-vraisemblance : stable quel que soit le nombre de comparaisons
return rFiche de cours · Exercices corrigés
Exercices corrigés (rédaction)
Vérification
Détection d’un événement rare (0,5 %) : ROC-AUC 0,96. Peut-on conclure que le détecteur est utilisable ?
Deux questions supplémentaires
1. Pourquoi le log-loss est-il une règle de score propre et pas l’exactitude ? Son espérance est minimale quand on annonce la vraie probabilité (Théorème 3) ; l’exactitude ne distingue pas 0,51 de 0,99.
2. Pourquoi apparier les rééchantillonnages bootstrap quand on compare deux systèmes ? Les cas sont partagés : la variance de la différence est réduite ; l’IC non apparié est trop large et masque des différences réelles.
Référence
Les mots à retenir
| Mot | Définition |
|---|---|
| Règle de score propre | Incite à annoncer ses vraies probabilités (log-loss, Brier). |
| AUC | P(score positif > score négatif) ; invariante à l’ordre et à la prévalence. |
| Calibration / ECE / Brier | Accord entre confiance et fréquence ; fiabilité − résolution + incertitude. |
| Macro / micro | Moyenne par classe / sur les comptes agrégés. |
| nDCG, MRR, R@k | Classement gradué / premier pertinent / couverture. |
| BLEU, chrF, BERTScore | Recouvrement lexical, caractères, sémantique. |
| pass@k | Probabilité qu’au moins un de k échantillons passe les tests ; estimateur sans biais. |
| Contamination | Données de test dans le pré-entraînement ; tester sur du privé/reformulé. |
| Kappa / Bradley-Terry | Accord corrigé du hasard / forces à partir de comparaisons. |
| Bootstrap apparié, McNemar | IC et test pour deux systèmes sur les mêmes cas. |
| Goodhart | Une métrique optimisée cesse de mesurer. |
Suite
Vous savez juger. Voyons sur quoi tout cela tourne.
Chapitre suivant : les infrastructures de l’IA — GPU, mémoire, réseau, stockage, parallélismes, serveurs d’inférence, cloud vs local, et leurs coûts.