Catastrophic Forgetting
Découvre comment prévenir l'oubli catastrophique dans les réseaux neuronaux. Explore des stratégies d'atténuation éprouvées lors de l'entraînement de tes modèles Ultralytics YOLO.
L'oubli catastrophique, souvent appelé interférence catastrophique, est un phénomène largement étudié en apprentissage automatique au cours duquel un réseau neuronal artificiel perd brusquement les informations apprises précédemment lorsqu'il apprend de nouvelles tâches. Lorsqu'un modèle suit un entraînement séquentiel pour s'adapter à un nouveau jeu de données, les algorithmes d'optimisation utilisant la rétropropagation mettent à jour les poids du modèle. Ce processus écrase souvent involontairement les représentations mathématiques nécessaires aux tâches précédentes. Par conséquent, un système d'IA hautement optimisé pour son objectif initial peut subir une forte dégradation de ses performances sur ces tâches initiales s'il est entraîné exclusivement sur de nouvelles données sans contre-mesures spécifiques.
Pourquoi l'oubli catastrophique se produit#
En apprentissage profond, les connaissances d'un modèle sont stockées dans un réseau distribué de neurones interconnectés. Lors de l'ajustement fin, des fonctions d'optimisation telles que la descente de gradient stochastique ajustent ces connexions afin de minimiser l'erreur sur les nouvelles données. Si le nouveau jeu de données d'entraînement ne contient pas d'exemples des classes d'origine, le processus d'optimisation déplace les poids vers la distribution des nouvelles données, effaçant de fait la « mémoire » de l'ancienne distribution. De récentes études sur le décalage structurel indiquent que cet effondrement interne limite fondamentalement la capacité des réseaux neuronaux modernes à atteindre un apprentissage continu semblable à celui de l'humain, sans configuration supplémentaire.
Distinguer les concepts associés#
Il est essentiel de distinguer l'oubli catastrophique d'autres concepts liés à l'IA :
- Oubli catastrophique et effondrement du modèle : L'oubli se produit lorsqu'un modèle apprend progressivement de nouvelles tâches, tandis que l'effondrement du modèle correspond à une dégradation progressive des performances sur une même tâche lorsqu'un modèle s'entraîne de manière récursive sur des données synthétiques générées par d'autres modèles d'IA.
- Oubli catastrophique et apprentissage continu : L'apprentissage continu est la méthodologie de recherche générale visant à résoudre le problème de l'oubli catastrophique. Les algorithmes d'apprentissage continu tentent de permettre aux modèles d'acquérir progressivement de nouvelles connaissances sans oublier les précédentes.
Exemples concrets#
L'oubli catastrophique représente un défi important dans divers domaines de l'IA fonctionnant dans des environnements réels dynamiques :
- Systèmes autonomes : Dans les pipelines de perception des véhicules autonomes, un système de vision par ordinateur initialement entraîné à reconnaître les piétons et les panneaux de signalisation courants peut être ajusté pour reconnaître de nouveaux panneaux de travaux spécifiques à une région. Sans mesures de protection, le système peut soudainement éprouver des difficultés à détecter les piétons de manière fiable, créant un grave risque pour la sécurité.
- IA linguistique et cognitive : Lorsqu'on personnalise de grands modèles de langage pour des tâches spécifiques à un domaine, comme le diagnostic médical, le modèle peut oublier son alignement conversationnel ou ses capacités générales de raisonnement. Une analyse comparative récente des LLMs montre que l'ajustement fin standard sur des textes très spécialisés érode souvent l'alignement de sécurité antérieur, ce qui amène les modèles à perdre leurs principales capacités à suivre les instructions.
Surmonter l'oubli catastrophique#
Les ingénieurs en IA utilisent plusieurs stratégies pour atténuer ce problème et maintenir un équilibre optimal entre plasticité et stabilité :
- Réexécution et fusion de jeux de données : La méthode la plus fiable consiste à mélanger un sous-ensemble des données d'entraînement d'origine avec les nouvelles données. Des outils tels que la plateforme Ultralytics simplifient la gestion et le versionnage des jeux de données combinés afin de garantir que les classes d'origine sont effectivement réutilisées pendant l'entraînement.
- Consolidation élastique des poids (EWC) : Cette technique de régularisation limite les mises à jour des paramètres qui étaient essentiels aux anciennes tâches. En identifiant et en préservant ces poids clés, les modèles réduisent l'oubli, comme le montrent de récentes expériences visant à surmonter l'oubli des réseaux.
- Ajustement fin efficace en paramètres (PEFT) : Des méthodes telles que l'adaptation à faible rang (LoRA) gèlent les poids préentraînés centraux et injectent de petites matrices entraînables dans le réseau, empêchant ainsi l'écrasement des connaissances de base.
- Gel des couches : Lors d'entraînements plus courts, le gel des couches du backbone et du neck garantit que les extracteurs de caractéristiques essentiels restent intacts.
- Optimisation sans gradient : De nouveaux frameworks ont récemment démontré que les méthodes fondées sur la propagation avant peuvent également atténuer efficacement l'oubli dans les environnements où les mises à jour par gradient sont limitées.
Exemple d'implémentation en IA visuelle#
Lors de l'adaptation d'Ultralytics YOLO à une nouvelle tâche de détection d'objets, le gel des couches constitue une approche efficace et accessible. L'exemple suivant montre comment entraîner un modèle Ultralytics YOLO26 sur un nouveau jeu de données tout en évitant l'oubli catastrophique grâce au gel des 10 premières couches.
from ultralytics import YOLO
# Load a pretrained Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Train on a combined dataset while freezing core backbone layers
# The 'freeze=10' argument prevents catastrophic forgetting of foundational visual features
results = model.train(data="combined_dataset.yaml", epochs=20, freeze=10, lr0=0.001)
# Evaluate the model to ensure it retains performance on old and new tasks
metrics = model.val()





