Contrastive Learning
Le contrastive learning (apprentissage contrastif) est une technique de machine learning qui entraîne un modèle à apprendre des représentations en rapprochant les paires d’exemples similaires (paires positives) et en éloignant les paires d’exemples dissimilaires (paires négatives) dans un espace d’embedding, sans nécessiter de labels explicites.
- Catégorie
- Self-supervised learning / Metric learning
- Principe
- Rapprocher les positifs, éloigner les négatifs dans l’espace d’embedding
- Fonctions de perte
- InfoNCE (NT-Xent), Triplet loss, Contrastive loss
- Méthodes clés
- SimCLR, MoCo, BYOL, DINO, SwAV, CLIP, Barlow Twins
- Domaines
- Vision, NLP, audio, multimodal, recommandation, retrieval
- Impact
- Fondation des modèles vision-langage (CLIP) et des backbones SSL modernes
Le principe fondamental
Le contrastive learning repose sur une intuition simple : pour apprendre de bonnes représentations, il suffit de savoir ce qui se ressemble et ce qui ne se ressemble pas. Pas besoin de savoir que c’est un chat ou un chien : il suffit de savoir que deux vues différentes du même chat doivent être proches dans l’espace d’embedding, et qu’un chat et un paysage doivent être éloignés.
L’approche se décompose en trois composants essentiels. Premièrement, un encodeur (CNN, ViT, Transformer) qui projette les données brutes en vecteurs d’embedding de dimension fixe. Deuxièmement, une stratégie de construction de paires positives et négatives (typiquement via augmentation de données pour les positives, et exemples différents du même batch pour les négatives). Troisièmement, une fonction de perte contrastive qui pénalise le modèle quand les positives sont trop éloignées ou quand les négatives sont trop proches.
En contexte autosupervisé (le cas le plus courant), les paires positives sont créées par augmentation de données : deux transformations aléatoires (crop, rotation, distorsion de couleur, flou) de la même image forment une paire positive. Toutes les autres images du batch forment les paires négatives. Le modèle apprend ainsi des représentations invariantes aux transformations géométriques et photométriques, ce qui capture l’information sémantique (le « quoi ») plutôt que les détails de surface (le « comment »).
Les fonctions de perte contrastives
InfoNCE (NT-Xent)
InfoNCE (Information Noise Contrastive Estimation) est la fonction de perte dominante du contrastive learning moderne, introduite par van den Oord et al. (2018) dans le cadre de Contrastive Predictive Coding (CPC) et popularisée par SimCLR sous le nom de NT-Xent (Normalized Temperature-scaled Cross Entropy).
Le principe : pour un exemple ancre za, avec sa paire positive zp et N-1 paires négatives zn, la perte est :
L = -log( exp(sim(z_a, z_p) / τ) / Σ_j exp(sim(z_a, z_j) / τ) )
La similarité sim() est typiquement la similarité cosinus (produit scalaire des vecteurs normalisés). τ (température) est un hyperparamètre crucial qui contrôle la « dureté » du softmax : une température basse concentre l’attention sur les exemples les plus proches (hard negatives), une température haute distribue l’attention plus uniformément. Les valeurs typiques sont τ ∈ [0.05, 0.5].
InfoNCE maximise la similarité entre l’ancre et sa paire positive tout en minimisant la similarité avec tous les négatifs. Théoriquement, c’est une borne inférieure de l’information mutuelle entre les représentations des paires positives, ce qui justifie son efficacité pour apprendre des features sémantiquement significatives.
Triplet loss
La triplet loss est une alternative plus ancienne qui travaille avec des triplets (ancre, positif, négatif) :
L = max(0, d(a, p) - d(a, n) + margin)
Le modèle est pénalisé si la distance ancre-positif n’est pas inférieure à la distance ancre-négatif par au moins une marge. La triplet loss est plus simple qu’InfoNCE mais souffre de deux limitations : elle ne traite qu’un seul négatif à la fois (vs. N-1 négatifs pour InfoNCE), et le choix du triplet (hard negative mining) est critique et coûteux. En pratique, InfoNCE a largement supplanté la triplet loss dans les applications modernes.
Contrastive loss (pairwise)
La contrastive loss originale (Chopra et al., 2005) travaille avec des paires uniquement :
L = y × d(x1, x2)² + (1-y) × max(0, margin - d(x1, x2))²
Quand la paire est positive (y=1), on minimise la distance. Quand elle est négative (y=0), on pousse la distance au-delà d’une marge. C’est la perte utilisée dans les Siamese Networks classiques. Comme la triplet loss, elle a été largement remplacée par InfoNCE pour les tâches modernes.
Les méthodes fondamentales
SimCLR (Google, 2020)
SimCLR est le framework qui a démocratisé le contrastive learning en vision. Son architecture est minimale : augmentation de données → encodeur ResNet → projection head MLP → perte NT-Xent sur le batch. Les contributions empiriques clés sont que la composition des augmentations (crop + distorsion de couleur) est le facteur le plus important, que le projection head non-linéaire améliore substantiellement les représentations, et que les grands batch sizes (4 096-8 192) sont essentiels car ils fournissent plus de négatifs.
SimCLR avec ResNet-50 atteint 76,5% top-1 sur ImageNet en linear evaluation, égalant la performance supervisée. C’est un résultat historique qui a prouvé que le SSL contrastif peut rivaliser avec l’apprentissage supervisé.
MoCo (Meta, 2020)
Momentum Contrast résout le problème du batch size géant de SimCLR. Au lieu de dépendre du batch courant pour les négatifs, MoCo maintient une file FIFO (queue) d’embeddings calculés par un encodeur momentum (mis à jour par moyenne exponentielle mobile). Cela découple la taille du dictionnaire de négatifs de la taille du batch, permettant un entraînement efficace même avec des batches modestes (256). MoCo v2 intègre les améliorations de SimCLR (projection head, augmentations fortes). MoCo v3 étend le framework aux ViT.
BYOL (DeepMind, 2020)
Bootstrap Your Own Latent élimine entièrement les paires négatives. Deux réseaux (online et target) traitent deux vues augmentées de la même image. Le réseau online prédit la sortie du réseau target via un module prédicteur supplémentaire. Le réseau target est mis à jour par EMA (exponential moving average). L’asymétrie (seul le réseau online a un prédicteur) et l’EMA empêchent l’effondrement des représentations (tout mapper au même point). BYOL est plus robuste au batch size et au choix des augmentations que SimCLR.
DINO (Meta, 2021)
Self-Distillation with No Labels utilise l’auto-distillation teacher-student avec des crops multi-échelles. Le student reçoit des crops locaux, le teacher des crops globaux. DINO avec ViT produit des features qui segmentent automatiquement les objets, un phénomène émergent remarquable. DINOv2 (2023) est devenu l’un des backbones SSL de référence.
SwAV et Barlow Twins
SwAV remplace les paires négatives par un clustering en ligne : les embeddings sont assignés à des prototypes (centres de clusters), et le modèle prédit l’assignation d’une vue à partir de l’autre. Barlow Twins minimise la redondance entre les dimensions de l’embedding en rapprochant la matrice de corrélation croisée entre les vues de la matrice identité. Ces deux approches évitent les paires négatives par des mécanismes entièrement différents de BYOL.
CLIP (OpenAI, 2021)
CLIP (Contrastive Language-Image Pre-training) étend le contrastive learning au multimodal. Il entraîne conjointement un encodeur d’images et un encodeur de texte à maximiser la similarité entre les paires image-texte correspondantes et à minimiser la similarité entre les paires non-correspondantes. Entraîné sur 400 millions de paires image-texte du web, CLIP a ouvert la voie aux modèles vision-langage et au zero-shot classification. Les batches de CLIP atteignent 32 768, reflétant l’importance des négatifs à grande échelle pour le contrastive learning multimodal.
| Méthode | Année | Négatifs | Architecture | Contribution clé |
|---|---|---|---|---|
| SimCLR | 2020 | Oui (batch) | ResNet + MLP | Augmentations + projection head + grand batch |
| MoCo v2 | 2020 | Oui (queue) | ResNet + queue FIFO | Découplage batch/négatifs via momentum |
| BYOL | 2020 | Non | Online/Target + prédicteur | Pas de paires négatives (EMA + asymétrie) |
| SwAV | 2020 | Non (clusters) | ResNet + prototypes | Clustering en ligne, multi-crop |
| DINO | 2021 | Non | ViT + teacher/student | Auto-distillation, segmentation émergente |
| Barlow Twins | 2021 | Non | ResNet + corrélation croisée | Réduction de redondance |
| CLIP | 2021 | Oui (batch) | ViT/ResNet + Transformer texte | Contrastif image-texte, zero-shot |
Les composants critiques
Augmentations de données
Le choix des augmentations est le facteur le plus déterminant pour la qualité des représentations, plus que l’algorithme contrastif lui-même. SimCLR a systématiquement étudié les augmentations et conclu que la combinaison crop aléatoire + distorsion de couleur est essentielle. Le crop force le modèle à reconnaître le même objet sous différents cadrages. La distorsion de couleur empêche le modèle de tricher en utilisant l’histogramme de couleurs comme raccourci (color shortcut).
Les autres augmentations courantes incluent le flou gaussien, la conversion en niveaux de gris, le flip horizontal, et le solarize. En domaine spécialisé (médical, satellite, industriel), les augmentations doivent être adaptées : la distorsion de couleur peut être contre-productive sur des images médicales où la couleur a une signification diagnostique.
Projection head
SimCLR a montré que calculer la perte contrastive sur une projection non-linéaire des features (plutôt que directement sur les features de l’encodeur) améliore significativement les performances downstream. L’explication : le projection head « jette » l’information spécifique à la tâche prétexte (invariance aux augmentations) et ne conserve que l’information utile pour la perte contrastive. Les features de l’encodeur (avant le projection head) contiennent plus d’information sémantique transférable.
En pratique, un MLP à 2 couches avec ReLU (dimension cachée 2 048, dimension de sortie 128) est le choix standard. Le projection head est utilisé uniquement pendant l’entraînement et est éliminé ensuite : seul l’encodeur est conservé pour les tâches downstream.
Taille du batch
Les méthodes contrastives qui dépendent de négatifs in-batch (SimCLR, CLIP) nécessitent de grands batches pour fournir suffisamment de négatifs divers. SimCLR utilise 4 096-8 192, CLIP utilise 32 768. Des batches trop petits réduisent la diversité des négatifs et dégradent les performances. MoCo résout ce problème via une queue dynamique, et BYOL/DINO l’éliminent en abandonnant les négatifs.
Hard negatives
Les hard negatives sont des exemples négatifs proches de l’ancre dans l’espace d’embedding (proches mais de classes différentes). Ils sont les plus informatifs pour l’entraînement, mais aussi les plus dangereux : un faux négatif (un exemple de la même classe traité comme négatif) dégrade les représentations. En contrastive learning autosupervisé (où les classes ne sont pas connues), le risque de faux négatifs est réel, surtout avec de grands batch sizes. Des variantes comme NNCLR (Nearest Neighbor Contrastive Learning) adressent ce problème en sélectionnant les positifs parmi les voisins les plus proches plutôt que par augmentation seule.
Applications
Vision par ordinateur
Le contrastive learning est le paradigme dominant pour le pre-training en vision. Les backbones pré-entraînés par MoCo, BYOL ou DINO surpassent ou égalent les backbones supervisés ImageNet sur les tâches de détection d’objets (COCO), segmentation sémantique, et classification fine-grained. MAE (qui n’est pas strictement contrastif mais est souvent comparé) pousse les performances encore plus loin avec les ViT. Pour le few-shot learning, les features contrastives sont particulièrement efficaces avec les Prototypical Networks.
NLP et embeddings de texte
SimCSE applique le contrastive learning aux embeddings de phrases : deux passages du même texte via le même encodeur avec des dropout différents forment des paires positives. Sentence-BERT et ses variantes utilisent le contrastive learning pour apprendre des embeddings de phrases transférables. SetFit combine fine-tuning contrastif et few-shot learning pour la classification de texte avec très peu d’exemples.
Modèles multimodaux
CLIP, ALIGN, Florence et leurs successeurs utilisent le contrastive learning pour aligner les représentations d’images et de texte dans un espace commun. Cette approche a permis le zero-shot classification (classifier des images via des descriptions textuelles sans entraînement spécifique), la recherche d’images par texte, et la génération d’images guidée par texte (comme input pour les modèles de diffusion).
Recommandation et retrieval
Les systèmes de recommandation (Spotify, Pinterest) utilisent le contrastive learning pour apprendre des embeddings d’utilisateurs et d’items dans un espace commun. Les interactions utilisateur-item forment les paires positives, les non-interactions forment les négatifs. Cette approche est scalable et produit des embeddings utilisables pour la recherche approximative de voisins (approximate nearest neighbor).
Audio et parole
wav2vec (Meta) utilise le contrastive learning pour apprendre des représentations du signal audio sans transcription. Le modèle prédit des segments audio futurs à partir du contexte passé (Contrastive Predictive Coding), apprenant ainsi la structure temporelle du signal. Tesla Autopilot utilise des variantes contrastives pour la compréhension de scènes et la détection d’objets en conduite autonome.
Défis et problèmes ouverts
Effondrement des représentations
Le problème le plus fondamental : si le modèle mappe toutes les entrées au même vecteur, la perte contrastive est minimisée trivialement (toutes les paires sont maximalement similaires). C’est l’effondrement (collapse). Les méthodes avec paires négatives (SimCLR, MoCo) évitent ce problème naturellement car les négatifs forcent la diversité. Les méthodes sans négatifs (BYOL, DINO, Barlow Twins) utilisent des mécanismes spécifiques : asymétrie architecturale (prédicteur), EMA pour le réseau target, décorrélation des dimensions. La compréhension théorique de pourquoi ces mécanismes préviennent le collapse est encore incomplète.
Faux négatifs
En contexte autosupervisé, deux images du même objet (mais de la même classe) sont traitées comme négatives. Avec de grands batches, la probabilité de faux négatifs augmente. Des variantes robustes comme Soft-InfoNCE (qui pondère les négatifs) et SymNCE (qui ajoute un terme symétrique pour la robustesse au bruit de labels) adressent partiellement ce problème.
Dépendance aux augmentations
Les représentations apprises sont invariantes aux transformations utilisées comme augmentations. Si une transformation est sémantiquement significative dans votre domaine (la couleur en histopathologie, l’orientation en géologie), l’inclure comme augmentation dégrade les features pour les tâches downstream. Le design des augmentations est domain-spécifique et nécessite une expertise du domaine, ce qui réduit l’universalité de l’approche.
Coût computationnel
Les grands batch sizes nécessaires pour SimCLR et CLIP demandent des clusters GPU importants. MoCo et BYOL atténuent ce problème, mais le pre-training contrastif reste plus coûteux que l’entraînement supervisé classique. L’efficacité computationnelle est un axe de recherche actif.
Verdict
Le contrastive learning est l’une des avancées les plus significatives du deep learning de la dernière décennie. Il a prouvé que les représentations apprises sans labels peuvent égaler, voire surpasser, celles apprises avec supervision. Il est la fondation des modèles vision-langage (CLIP), des backbones SSL modernes (DINO, MoCo), et de nombreux systèmes de production (recommandation, recherche, speech-to-text).
Pour les praticiens, le paysage est clair. Si vous travaillez avec des CNNs, MoCo v2 ou BYOL sont les meilleurs choix. Si vous travaillez avec des ViT, DINO ou MAE (qui n’est pas contrastif mais est souvent le concurrent direct). Si vous avez besoin d’aligner des modalités (image-texte), CLIP et ses variantes sont la référence. Dans tous les cas, investissez du temps dans le design des augmentations : c’est le facteur qui a le plus d’impact, quel que soit l’algorithme contrastif choisi. Et commencez par un pipeline InfoNCE standard avant d’explorer les variantes exotiques : les fondamentaux bien implémentés battent presque toujours la sophistication mal calibrée.
Questions fréquentes sur le contrastive learning
Quelle est la différence entre contrastive learning et self-supervised learning ?
Le self-supervised learning (SSL) est un paradigme d’apprentissage qui englobe toutes les méthodes apprenant des représentations sans labels humains. Le contrastive learning est une famille de méthodes au sein du SSL, aux côtés du masked image modeling (MAE, BEiT) et des tâches prétextes classiques (rotation, colorisation). En pratique, le contrastive learning est la famille la plus étudiée du SSL en vision, et les termes sont parfois utilisés de manière interchangeable, mais ce n’est pas exact. MAE, par exemple, est du SSL mais pas du contrastive learning.
Pourquoi les grands batch sizes sont-ils importants pour le contrastive learning ?
Les méthodes contrastives utilisant des négatifs in-batch (SimCLR, CLIP) dépendent de la diversité des négatifs pour apprendre de bonnes représentations. Avec un batch de 256, chaque exemple n’a que 255 négatifs, dont beaucoup sont « faciles » (trivialement différents). Avec un batch de 8 192, la probabilité de rencontrer des hard negatives (proches mais différents) augmente, forçant le modèle à apprendre des distinctions plus fines. MoCo résout ce problème en maintenant une file de 65 536 négatifs indépendamment du batch size. BYOL et DINO éliminent le problème en abandonnant les négatifs.
Comment choisir la température τ pour InfoNCE ?
La température contrôle la concentration de la distribution softmax. Une τ basse (0.05) rend le modèle très sélectif : il se concentre sur les négatifs les plus proches (hard negatives), ce qui est informatif mais instable. Une τ haute (0.5) distribue l’attention plus uniformément, ce qui est stable mais moins discriminant. SimCLR utilise τ = 0.1, qui est un bon point de départ. CLIP apprend τ pendant l’entraînement (initialisé à ~0.07). En cas de doute, commencez par τ = 0.1 et ajustez empiriquement.
Le contrastive learning fonctionne-t-il sans paires négatives ?
Oui. BYOL (2020) a démontré qu’on peut apprendre d’excellentes représentations sans aucune paire négative, en utilisant l’asymétrie architecturale (un prédicteur dans le réseau online) et la mise à jour EMA du réseau target. DINO, SwAV et Barlow Twins confirment cette possibilité avec des mécanismes différents (auto-distillation, clustering, décorrélation). Ces méthodes sont souvent plus robustes au batch size et aux augmentations. Cependant, certains chercheurs considèrent que ces méthodes ne sont plus strictement « contrastives » puisqu’elles n’opposent pas explicitement positifs et négatifs.
Contrastive learning ou masked modeling (MAE) : lequel utiliser ?
Cela dépend de votre architecture et de votre objectif. Pour les CNNs (ResNet, EfficientNet), le contrastive learning (MoCo v2, BYOL) est le choix naturel car MAE est conçu pour les ViT. Pour les ViT, MAE est généralement supérieur (plus simple, plus rapide, meilleures performances absolues). Pour le multimodal (image + texte), le contrastive learning (CLIP) reste dominant. Des études récentes montrent que BYOL et MAE surpassent systématiquement SimCLR, avec MAE qui converge plus rapidement et nécessite moins de données. En pratique, combiner les deux approches (pre-training contrastif + fine-tuning avec une tête de reconstruction masquée) peut donner les meilleurs résultats.