Contrastive Learning
Explore l'apprentissage contrastif en apprentissage automatique. Découvre comment il utilise des données auto-supervisées pour créer des représentations robustes pour Ultralytics YOLO26 et la vision par ordinateur.
L'apprentissage contrastif est un paradigme d'apprentissage automatique qui apprend aux modèles à comprendre les données en comparant des échantillons similaires et dissemblables. Contrairement à l'apprentissage supervisé traditionnel, qui repose largement sur des jeux de données annotés manuellement, l'apprentissage contrastif est souvent utilisé dans le cadre de l'apprentissage auto-supervisé. L'idée centrale est simple, mais puissante : le modèle apprend à rapprocher les représentations d'éléments liés (paires positives) dans un espace vectoriel, tout en éloignant les éléments sans lien (paires négatives). Ce processus permet aux algorithmes de construire des caractéristiques robustes et généralisables à partir de vastes quantités de données non annotées, ce qui est essentiel pour mettre à l'échelle les systèmes d'intelligence artificielle (AI).
Le mécanisme de l'apprentissage contrastif#
Au cœur de l'apprentissage contrastif se trouve le concept d'apprentissage par comparaison. Au lieu de mémoriser qu'une image spécifique représente un « chat », le modèle apprend que deux photos différentes d'un chat sont plus similaires entre elles que l'une ou l'autre ne l'est d'une photo de chien. Cela est généralement obtenu grâce à l'augmentation des données. Une image d'entrée, souvent appelée « ancre », est transformée en deux versions différentes à l'aide de techniques telles que le recadrage, le retournement ou la variation des couleurs. Ces deux versions forment une paire positive. Le modèle est ensuite entraîné à réduire la distance entre leurs représentations vectorielles tout en maximisant la distance par rapport aux autres images aléatoires (échantillons négatifs) du lot.
Cette approche aide le réseau de neurones à se concentrer sur des caractéristiques sémantiques de haut niveau plutôt que sur des détails de pixels de bas niveau. Par exemple, qu'une voiture soit rouge ou bleue, ou qu'elle soit orientée vers la gauche ou la droite, le concept sous-jacent de « voiture » reste le même. En ignorant ces variations superficielles, le modèle développe une compréhension plus approfondie du monde visuel, ce qui bénéficie considérablement à des tâches en aval comme la détection d'objets et la classification.
Applications concrètes#
L'apprentissage contrastif est devenu un pilier de nombreuses applications d'AI de pointe, en particulier lorsque les données annotées sont rares ou coûteuses à obtenir.
-
Classification d'images sans apprentissage préalable : Des modèles comme CLIP (pré-entraînement contrastif langage-image) utilisent l'apprentissage contrastif pour aligner les images et le texte dans un espace de caractéristiques partagé. En s'entraînant sur des millions de paires image-texte, le modèle apprend à associer des concepts visuels à des descriptions en langage naturel. Cela permet l'apprentissage sans exemple, grâce auquel le modèle peut classer des images dans des catégories qu'il n'a jamais vues pendant l'entraînement, simplement en faisant correspondre l'image à une invite textuelle.
-
Pré-entraînement robuste pour l'imagerie médicale : Dans le domaine de la santé, l'obtention d'analyses médicales annotées par des experts est coûteuse et chronophage. Les chercheurs utilisent l'apprentissage contrastif pour pré-entraîner des modèles sur de grandes bases de données de radiographies ou d'IRM non annotées. Ce pré-entraînement non supervisé crée un réseau de base puissant qui peut être ajusté avec un petit nombre d'exemples annotés afin de détecter avec une grande précision des maladies comme la pneumonie ou les tumeurs. Cette technique exploite l'apprentissage par transfert pour améliorer les outils de diagnostic dans le domaine de l'AI dans le secteur de la santé.
Distinction entre concepts connexes#
Il est utile de distinguer l'apprentissage contrastif des techniques similaires afin de comprendre son rôle particulier dans le domaine de l'apprentissage automatique (ML).
- Par rapport aux autoencodeurs : Bien que les deux soient des méthodes non supervisées, les autoencodeurs cherchent à reconstruire les données d'entrée pixel par pixel en les compressant dans une couche goulot d'étranglement. L'apprentissage contrastif, en revanche, ne cherche pas à recréer l'image, mais se concentre uniquement sur l'apprentissage de représentations discriminantes qui séparent les différents concepts.
- Par rapport aux réseaux antagonistes génératifs (GANs) : Les GANs impliquent un générateur qui crée de fausses données et un discriminateur qui tente de les détecter. L'apprentissage contrastif se concentre sur l'apprentissage de représentations plutôt que sur la génération de données, ce qui le rend plus adapté à des tâches comme la recherche, la récupération et la classification.
- Par rapport à la perte par triplets : La perte par triplets traditionnelle nécessite explicitement une ancre, un échantillon positif et un échantillon négatif. Les méthodes contrastives modernes, comme SimCLR ou MoCo, généralisent cette approche en comparant simultanément une ancre à de nombreux échantillons négatifs au sein d'un lot, en utilisant souvent une fonction de perte spécifique comme InfoNCE.
Exemple pratique avec des représentations vectorielles#
Bien qu'entraîner un modèle contrastif à partir de zéro soit gourmand en ressources, tu peux facilement utiliser des modèles pré-entraînés pour extraire des caractéristiques. L'exemple suivant montre comment charger un modèle et extraire le vecteur de caractéristiques (représentation vectorielle) d'une image à l'aide du package ultralytics. Cette représentation vectorielle correspond au contenu sémantique appris grâce à des techniques similaires au pré-entraînement contrastif.
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Run inference on an image to get the results
# The 'embed' argument can be used in advanced workflows to extract feature layers
results = model("https://ultralytics.com/images/bus.jpg")
# Access the top predicted class probability
# This prediction is based on the learned feature representations
print(f"Top class: {results[0].names[results[0].probs.top1]}")
print(f"Confidence: {results[0].probs.top1conf:.4f}")Cette capacité à extraire des caractéristiques riches et pertinentes rend l'apprentissage contrastif essentiel à la création de systèmes modernes de vision par ordinateur (CV), en permettant une recherche d'images efficace et des analyses avancées. Pour gérer les jeux de données et entraîner des modèles personnalisés qui bénéficient de ces architectures avancées, la plateforme Ultralytics fournit un environnement rationalisé pour le déploiement et la supervision.









