Active Learning
L’apprentissage actif permet à un modèle de choisir les échantillons non étiquetés que les utilisateurs annoteront ensuite, afin d’atteindre une exactitude cible avec moins d’annotations. Stratégies de sélection et code.
L’apprentissage actif est une approche d’apprentissage automatique dans laquelle le modèle choisit les exemples non étiquetés qu’une personne devrait annoter ensuite. Au lieu d’annoter un échantillon aléatoire des données, une équipe entraîne un modèle sur un petit jeu étiqueté, l’utilise pour évaluer un vaste ensemble d’exemples non étiquetés, envoie les exemples les plus informatifs aux annotateurs, réentraîne le modèle sur le jeu enrichi, puis répète le processus. La personne qui fournit les étiquettes est appelée l’oracle. L’objectif est d’atteindre une exactitude cible avec le moins d’étiquettes possible, ce qui est particulièrement important lorsque l’annotation nécessite des spécialistes, comme des radiologues qui interprètent des images médicales, ou lorsque l’ensemble de données est bien trop vaste pour être entièrement annoté, comme les vidéos enregistrées chaque jour par une flotte de véhicules autonomes.
Fonctionnement de la boucle d’apprentissage actif#
Les projets de vision par ordinateur s’appuient généralement sur l’apprentissage actif par pool, où un ensemble fixe d’images non étiquetées attend d’être évalué. Chaque itération comprend quatre étapes :
- Entraîner : Entraîne un modèle, par exemple un modèle de détection d’objets, sur les exemples étiquetés recueillis jusqu’ici.
- Évaluer : Exécute le modèle sur le pool non étiqueté et attribue à chaque exemple un score d’informativité.
- Sélectionner : Envoie le lot ayant les scores les plus élevés aux annotateurs pour l’annotation des données.
- Mettre à jour : Ajoute les nouvelles étiquettes aux données d’entraînement et réentraîne le modèle.
La boucle s’arrête lorsque le budget d’annotation est épuisé ou que l’exactitude sur un ensemble de validation fixe cesse de s’améliorer. Comparer chaque itération à un modèle entraîné sur le même nombre d’étiquettes choisies au hasard permet de vérifier si la sélection est utile.
Stratégies de sélection#
La stratégie de sélection détermine ce qui est considéré comme informatif :
- Échantillonnage par incertitude : Sélectionne les exemples pour lesquels le modèle est le moins sûr, selon la confiance la plus faible de la classe dominante, la plus petite marge entre les deux premières classes ou l’entropie la plus élevée de la distribution des classes prédites.
- Sélection par comité : Entraîne plusieurs modèles et sélectionne les exemples sur lesquels ils sont le plus en désaccord. Le dropout de Monte-Carlo permet de former à peu de frais un comité à partir d’un seul réseau.
- Échantillonnage par diversité : Sélectionne des exemples qui couvrent l’espace des plongements, afin qu’un lot ne se remplisse pas de quasi-doublons, comme des images vidéo consécutives. L’approche core-set formule ainsi la sélection des lots après avoir constaté que de nombreuses heuristiques d’incertitude n’étaient pas efficaces avec les CNN dans ce contexte.
- Stratégies hybrides : Combinent les deux signaux. BADGE sélectionne des exemples à la fois incertains et divers dans un espace de plongements de gradients, sans pondérations réglées manuellement.
Les détecteurs produisent de nombreuses boîtes par image ; il faut donc combiner leurs scores de boîte pour obtenir un score par image, par exemple en calculant la moyenne des confiances de toutes les détections. Le script ci-dessous classe un petit pool selon la confiance moyenne des détections avec un modèle YOLO26 préentraîné, puis sélectionne en premier l’image la moins certaine :
from ultralytics import YOLO
# Model trained on the current labeled set
model = YOLO("yolo26n.pt")
# Unlabeled pool, usually thousands of images
pool = ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]
results = model(pool, conf=0.1)
# Least-confidence sampling: score each image by its mean detection confidence
scores = {}
for image, result in zip(pool, results):
if len(result.boxes):
scores[image] = result.boxes.conf.mean().item()
# Query the lowest-scoring images first, within a labeling budget of one image
query = sorted(scores, key=scores.get)[:1]
print(f"Label next: {query}")Le seuil faible conf=0.1 conserve les détections peu fiables dans le score, puisque ce sont les boîtes sur lesquelles le modèle est incertain. L’éditeur d’annotations de la plateforme Ultralytics complète le processus : son mode Smart charge tes propres modèles YOLO affinés, afin que chaque modèle réentraîné préannote le prochain lot sélectionné que les annotateurs pourront corriger.
Pièges pratiques#
- Démarrage à froid : Les scores d’incertitude d’un modèle entraîné sur quelques dizaines d’exemples ne sont pas fiables ; les premières itérations s’appuient donc souvent sur une sélection aléatoire ou fondée sur la diversité.
- Lots redondants : Sélectionner indépendamment les k images les plus incertaines tend à produire des groupes d’images presque identiques, un problème auquel répondent les stratégies de diversité et les stratégies hybrides.
- Biais d’échantillonnage : L’ensemble étiqueté s’éloigne de la distribution réelle des données parce qu’il surreprésente les cas difficiles. Les ensembles de validation et de test sont donc tirés au hasard dans le pool complet afin que leurs scores restent non biaisés.
- Valeurs aberrantes : Les images corrompues, floues ou hors domaine semblent incertaines pour tous les modèles et peuvent gaspiller le budget d’annotation si elles ne sont pas filtrées.
Apprentissage actif et termes associés#
- Apprentissage semi-supervisé : Utilise aussi des données non étiquetées, mais le modèle attribue des pseudo-étiquettes à ses propres prédictions sûres au lieu de demander à une personne de vérifier ses prédictions incertaines. Les deux approches sont souvent combinées.
- Apprentissage par curriculum : Ordonne les exemples déjà étiquetés du plus facile au plus difficile pendant l’entraînement. L’apprentissage actif détermine quels exemples seront étiquetés.
- Sélection des négatifs difficiles : Sélectionne les exemples négatifs étiquetés sur lesquels le modèle se trompe le plus et les utilise davantage pour l’entraînement. Cette méthode s’appuie sur les étiquettes existantes et n’en ajoute aucune.
- Boucle de valorisation des données : Boucle de production dans laquelle les modèles déployés font émerger de nouvelles données qui améliorent le modèle suivant. L’apprentissage actif constitue une étape de sélection courante dans ce processus.










