Polydesk-logotype
Polydesk.ai — Header

Out-of-Distribution (Détection Hors Distribution)

La détection out-of-distribution (OOD) vise à identifier les données de test qui diffèrent significativement des données d’entraînement d’un modèle de machine learning. Un modèle entraîné sur des photos de chats et de chiens ne devrait pas prétendre classifier avec confiance une photo de voiture : il devrait signaler « je n’ai jamais vu ça ».

Le problème est que les réseaux de neurones profonds ne savent pas ce qu’ils ne savent pas. Ils produisent des prédictions avec une confiance élevée même pour des entrées complètement différentes de leurs données d’entraînement. Nguyen et al. (2015) ont été les premiers à documenter ce phénomène de sur-confiance sur les données OOD, montrant que des réseaux classifieurs assignaient des probabilités > 99 % à des images de bruit aléatoire.

La détection OOD est essentielle pour déployer des modèles de manière sûre. Un survey ACM Computing Surveys (2026) propose la première taxonomie orientée tâche des avancées récentes, classant les méthodes selon l’accès au modèle : training-driven (modification du modèle pendant l’entraînement), training-agnostic (post-hoc, sans réentraînement), et pré-entraîné (méthodes spécifiques aux grands modèles pré-entraînés).

Out-of-Distribution en bref
Définition
Données de test dont la distribution diffère de celle des données d’entraînement
Problème
Les DNN sont sur-confiants sur les données OOD
Méthodes
MSP, ODIN, Energy Score, Mahalanobis, feature sparsity, AHM
Métriques
FPR@95, AUROC, AUPR
Relations
Estimation d’incertitude, calibration, distributional shift, anomaly detection

Types de distribution shift

Semantic shift

Le semantic shift (ou novelty) survient quand les données de test contiennent des classes ou concepts absents de l’entraînement. Un classifieur d’animaux domestiques (chats, chiens) confronté à une photo de lion subit un semantic shift. C’est le cas le plus « évident » d’OOD : l’entrée est qualitativement différente.

Covariate shift

Le covariate shift survient quand la distribution des entrées change mais la relation entrée-sortie reste la même. Un modèle de détection de piétons entraîné par beau temps confronté à la pluie ou au brouillard subit un covariate shift. Les piétons existent toujours, mais ils « apparaissent » différemment au capteur. Ce type de shift est plus subtil et plus fréquent en production.

Label shift et prior probability shift

Le label shift survient quand la proportion des classes change entre entraînement et test. Un modèle de diagnostic entraîné avec 50 % de cas positifs déployé dans un contexte où seulement 1 % des cas sont positifs subit un label shift. Le modèle lui-même n’est pas incorrect, mais ses seuils de décision doivent être ajustés.

Le prior probability shift est une forme de label shift où le prior P(Y) change mais la vraisemblance P(X|Y) reste stable. C’est fréquent en médecine (prévalence d’une maladie différente entre hôpitaux) et en détection de fraude (taux de fraude variable selon les périodes). Les techniques de correction incluent le re-weighting des échantillons et l’estimation du ratio de densité.

Domain shift

Le domain shift combine covariate shift et potentiellement semantic shift quand le modèle est déployé dans un domaine entièrement différent de celui d’entraînement. Un modèle de NLP entraîné sur des critiques de restaurants peut être inefficace sur des rapports médicaux : le vocabulaire, le style et les structures sont fondamentalement différents. L’adaptation de domaine (domain adaptation) et le transfer learning sont les réponses à ce type de shift, mais la détection OOD reste la première ligne de défense : identifier que les données proviennent d’un domaine différent avant d’agir.

OOD detection vs anomaly detection vs novelty detection Ces termes sont souvent utilisés de manière interchangeable mais ont des nuances. L’OOD detection cherche à identifier les entrées « hors distribution » par rapport aux données d’entraînement. L’anomaly detection cherche les données « anormales » par rapport à un modèle de normalité. La novelty detection cherche les données « nouvelles » jamais vues. En pratique, les méthodes sont similaires : toutes cherchent à mesurer « à quel point cette donnée est différente de ce que le modèle connaît ».

Méthodes de détection OOD

MSP : Maximum Softmax Probability

La méthode baseline (Hendrycks et Gimpel, 2017) utilise simplement le score softmax maximal comme score de confiance. Les données ID (in-distribution) tendent à avoir un score softmax maximal élevé, les données OOD un score plus faible. Un seuil sur ce score sépare ID et OOD.

C’est simple et ne nécessite aucune modification du modèle, mais les DNN sont souvent sur-confiants même sur les données OOD, limitant la séparation. MSP reste le baseline incontournable contre lequel toutes les méthodes sont comparées.

ODIN : temperature scaling + perturbation

ODIN (Liang et al., 2018) améliore MSP avec deux techniques. Premièrement, le temperature scaling (diviser les logits par T > 1) adoucit la distribution softmax et amplifie les différences entre ID et OOD. Deuxièmement, une perturbation d’entrée (ajouter un petit gradient adversarial à l’image) pousse les scores ID vers le haut et les scores OOD vers le bas, augmentant la séparation. ODIN ne nécessite aucun réentraînement du modèle.

Energy Score

Liu et al. (2020) proposent d’utiliser le score d’énergie (le log-sum-exp des logits) comme alternative au softmax maximal. L’énergie est théoriquement mieux alignée avec la densité de probabilité des données que le softmax, et fonctionne mieux pour la détection OOD. L’energy score est devenu l’un des scores les plus populaires grâce à sa simplicité et son efficacité, et s’étend à de nombreux domaines y compris le suivi de l’apprentissage (knowledge tracing) en éducation.

Distance de Mahalanobis

Lee et al. (2018) modélisent les features de chaque couche du réseau comme des gaussiennes par classe. La distance de Mahalanobis d’une nouvelle entrée aux centroïdes de classe mesure sa « familiarité ». Les données OOD sont plus éloignées des centroïdes que les données ID. Cette approche exploite les features intermédiaires du réseau, pas seulement la sortie, et fonctionne bien avec des modèles de mélange gaussien (GMM) multiclasses.

Feature Sparsity

Des travaux publiés dans Scientific Reports (2024) explorent la parcimonie (sparsity) des features pour la détection OOD. L’intuition : les représentations apprises par un DNN contiennent des features redondantes qui sont « activées » de manière non discriminante par les données OOD. En rendant les features plus parcimonieuses via une régularisation L₁ lors d’un fine-tuning, la distinction entre features ID (activations ciblées) et OOD (activations diffuses) s’amplifie.

LogitNorm

Wei et al. (2022) utilisent la normalisation des logits pendant l’entraînement pour imposer une norme constante au vecteur de logits. Cela atténue la sur-confiance du modèle et améliore directement la séparation OOD. C’est une méthode « training-driven » qui nécessite une modification de la loss d’entraînement.

Attention Head Masking (AHM)

Publié dans Scientific Reports (janvier 2026), AHM est une technique spécifique aux transformers qui masque certaines têtes d’attention pour améliorer la qualité des embeddings et la séparation ID/OOD. La méthode fonctionne en uni-modal (images, texte) et multi-modal (documents), réduisant le taux de faux positifs de jusqu’à 10 % par rapport à l’état de l’art. C’est une approche post-hoc qui ne nécessite pas de réentraînement.


Métriques d’évaluation

Métrique Description Valeur idéale
FPR@95 Taux de faux positifs (OOD classé ID) quand 95 % des ID sont correctement détectés 0 % (plus bas = mieux)
AUROC Aire sous la courbe ROC (discrimination ID vs OOD) 100 % (plus haut = mieux)
AUPR Aire sous la courbe précision-rappel 100 % (plus haut = mieux)

Le FPR@95 est la métrique la plus utilisée car elle reflète directement le scénario pratique : « je veux détecter au moins 95 % de mes données valides ; combien de données OOD passent à travers le filtre ? ». Un FPR@95 de 5 % signifie que 5 % des données OOD sont faussement acceptées comme ID.

Implémentation : détection OOD par energy score

import torch
import torch.nn.functional as F
import numpy as np

def energy_score(logits, temperature=1.0):
    """Calcule le score d'énergie (négatif) pour la détection OOD."""
    return -temperature * torch.logsumexp(logits / temperature, dim=1)

def detect_ood(model, x_id, x_ood, temperature=1.0, percentile=95):
    """Détection OOD par energy score."""
    model.eval()
    with torch.no_grad():
        logits_id = model(x_id)
        logits_ood = model(x_ood)

    scores_id = energy_score(logits_id, temperature).numpy()
    scores_ood = energy_score(logits_ood, temperature).numpy()

    # Seuil : le percentile des scores ID
    threshold = np.percentile(scores_id, percentile)

    # Détection
    fpr = np.mean(scores_ood < threshold)  # OOD faussement acceptés
    tpr = np.mean(scores_id < threshold)   # ID correctement acceptés

    print(f"Seuil (energy) : {threshold:.3f}")
    print(f"TPR (ID détectés) : {tpr:.1%}")
    print(f"FPR@{percentile} (OOD passant le filtre) : {fpr:.1%}")
    return scores_id, scores_ood, threshold

Applications

Conduite autonome : un système de perception entraîné sur des scènes urbaines standard doit signaler quand il rencontre un objet inconnu (animal sauvage, objet tombé d’un camion) plutôt que de le classifier avec confiance dans une mauvaise catégorie. La détection OOD est une couche de sécurité critique qui déclenche des comportements de prudence (ralentissement, alerte conducteur).

Médecine : un modèle de diagnostic entraîné sur un hôpital doit détecter quand un patient d’un autre hôpital (équipement différent, population différente) produit des données OOD, pour éviter des diagnostics incorrects mais confiants.

Détection de fraude : les nouveaux types de fraude (jamais vus dans les données d’entraînement) sont par définition OOD. Un système de détection de fraude qui combine classification ID (fraudes connues) et détection OOD (fraudes inconnues) est plus robuste qu’un classifieur seul.

LLM et agents IA : quand un LLM reçoit une requête complètement différente de son domaine d’entraînement ou de fine-tuning, la détection OOD au niveau des embeddings internes peut signaler « cette requête est hors de ma zone de compétence ». C’est complémentaire à la détection d’hallucinations via l’estimation d’incertitude.

Éducation : en adaptive learning, un modèle de suivi des connaissances (knowledge tracing) est sensible aux changements de curriculum ou de format d’évaluation. EB-OOD DKT (2026) intègre un energy score dans un modèle transformer de knowledge tracing pour détecter les interactions OOD et maintenir la fiabilité prédictive.

Relations avec d’autres concepts

La détection OOD est étroitement liée à plusieurs concepts voisins. L’estimation d’incertitude capture l’incertitude épistémique, qui est naturellement élevée sur les données OOD. La calibration est nécessaire pour que les scores de confiance soient fiables, y compris comme indicateurs OOD. La conformal prediction produit des ensembles de prédiction plus grands (moins informatifs) sur les données OOD, signalant implicitement l’incertitude. Le distributional shift est le phénomène sous-jacent que la détection OOD cherche à capturer. Et les réseaux bayésiens produisent naturellement une incertitude épistémique élevée sur les données OOD via la variance de la postérieure sur les poids.

La combinaison de plusieurs approches (energy score + conformal prediction + BNN) fournit la détection OOD la plus robuste, chaque méthode capturant un aspect complémentaire du problème.

Tendances et frontières de recherche

OOD pour les modèles pré-entraînés : avec la généralisation des modèles fondationnels (CLIP, DINO, ViT pré-entraîné), la détection OOD évolue. Ces modèles, pré-entraînés sur des données massives et diverses, ont des features plus généralisables. La détection OOD sur ces modèles nécessite des méthodes adaptées qui exploitent la richesse des représentations pré-entraînées. Des travaux du MIT (mars 2026) montrent que le pré-entraînement crée une distribution de paramètres où les « experts » spécifiques à chaque tâche sont plus densément peuplés dans les grands modèles, permettant des méthodes d’ensemble efficaces pour l’adaptation post-entraînement et la détection OOD.

VRCP : OOD robuste aux attaques adversariales : la conformal prediction combinée avec la vérification formelle de réseaux (VRCP, 2025) récupère les garanties de couverture même sous perturbations adversariales, ce qui renforce la détection OOD dans les environnements hostiles.

Multimodalité : la détection OOD pour les systèmes multimodaux (texte + image, comme les documents) est un axe en plein essor. AHM (janvier 2026) est le premier à exploiter le masquage des têtes d’attention pour la détection OOD multimodale, avec des améliorations significatives du FPR sur les tâches de classification de documents.

OOD en production : le passage de la recherche à la production industrielle pose des défis spécifiques. Les seuils OOD doivent être mis à jour quand la distribution des données évolue (concept drift). Les systèmes de monitoring en production utilisent de plus en plus la détection OOD en temps réel pour déclencher des alertes, basculer vers des modèles de fallback, ou référer les cas ambigus à des opérateurs humains.


Questions fréquentes sur l’out-of-distribution

Quelle est la différence entre OOD detection et anomaly detection ?

La détection OOD identifie les données qui ne proviennent pas de la distribution d’entraînement du modèle. L’anomaly detection identifie les données « anormales » par rapport à un modèle de normalité. En pratique, la différence est souvent terminologique : les méthodes sont similaires. La distinction principale est le contexte : OOD detection est typiquement associée aux classifieurs supervisés (« cette entrée n’appartient à aucune classe connue »), tandis que l’anomaly detection est souvent associée à la surveillance non supervisée (« cette donnée est inhabituelle »).

Le softmax maximal est-il un bon indicateur OOD ?

C’est le baseline le plus simple et il fonctionne raisonnablement bien, mais les DNN produisent des scores softmax élevés même pour les données OOD. Les méthodes comme ODIN (temperature scaling + perturbation), l’energy score, et la distance de Mahalanobis offrent une meilleure séparation. Le softmax maximal reste utile comme première vérification, mais ne suffit pas pour les applications de sécurité critique.

Faut-il des données OOD pour entraîner un détecteur ?

Non, et c’est la force des méthodes post-hoc (MSP, ODIN, energy score, Mahalanobis). Elles n’utilisent que les données ID et le modèle pré-entraîné. Cependant, les méthodes training-driven qui utilisent des données OOD synthétiques (outlier exposure, virtual outlier synthesis) pendant l’entraînement obtiennent souvent de meilleurs résultats. Le compromis est entre la simplicité (post-hoc, sans données OOD) et la performance (training-driven, avec données OOD auxiliaires).

Comment la détection OOD fonctionne-t-elle pour les LLM ?

Pour les LLM, la détection OOD opère principalement au niveau des embeddings internes. Les techniques incluent l’analyse de la distribution des activations dans les couches intermédiaires, le score d’énergie sur les logits de prédiction, et la mesure de distance entre l’embedding de la requête et les clusters d’embeddings des données d’entraînement. La détection OOD pour les LLM est complémentaire à la détection d’hallucinations : une entrée OOD augmente le risque d’hallucination, donc détecter l’OOD en amont peut prévenir les réponses non fiables.

Quelles librairies utiliser pour la détection OOD en Python ?

OpenOOD (benchmark et implémentations de référence pour les méthodes OOD sur images), PyTorch-OOD (implémentations de MSP, ODIN, Mahalanobis, Energy), et la librairie mapie (pour la conformal prediction comme indicateur OOD implicite). Pour les transformers, l’Attention Head Masking peut être implémenté directement sur les modèles Hugging Face. Pour les applications multimodales, les pipelines sur mesure combinant energy score et features intermédiaires sont les plus courants.

Polydesk.ai — Footer