Polydesk-logotype
Polydesk.ai — Header

SimCLR

SimCLR (Simple Framework for Contrastive Learning of Visual Representations) est un framework de contrastive learning développé par Google Research qui apprend des représentations visuelles de haute qualité sans labels, en maximisant l’accord entre deux vues augmentées de la même image dans un espace d’embedding, via une perte NT-Xent sur le batch.

Fiche rapide : SimCLR
Auteurs
Ting Chen, Simon Kornblith, Mohammad Norouzi, Geoffrey Hinton (Google Research)
Publication
ICML 2020 (soumis février 2020)
Famille
Self-supervised learning / Contrastive learning
Perte
NT-Xent (Normalized Temperature-scaled Cross Entropy) = InfoNCE
Benchmark
ImageNet top-1 linear eval : 76,5% (ResNet-50), égale le supervisé
Code
github.com/google-research/simclr (TensorFlow)

Pourquoi SimCLR a tout changé

En février 2020, SimCLR a prouvé qu’un framework contrastif simple, sans architecture spécialisée ni mémoire externe, pouvait égaler les performances de l’entraînement supervisé sur ImageNet. Un classificateur linéaire entraîné sur les représentations SimCLR atteint 76,5% top-1, une amélioration relative de 7% par rapport à l’état de l’art SSL précédent, et une performance identique à celle d’un ResNet-50 supervisé. Avec seulement 1% des labels pour le fine-tuning, SimCLR atteint 85,8% top-5, surpassant AlexNet avec 100 fois moins de labels.

L’impact de SimCLR n’est pas uniquement dans ses chiffres. C’est dans ses insights empiriques. L’article ne propose pas un algorithme révolutionnaire : chaque composant existait déjà (augmentation de données, contrastive loss, encodeur CNN). La contribution est d’identifier systématiquement quels composants comptent et pourquoi, via une étude ablative exhaustive. Ces insights ont guidé toute la recherche en contrastive learning qui a suivi.

Architecture du framework

SimCLR se compose de quatre éléments, dans un pipeline minimaliste :

1. Augmentation stochastique de données

Pour chaque image x du batch, deux vues augmentées x̃i et x̃j sont créées en appliquant séquentiellement des transformations aléatoires tirées d’un ensemble T. SimCLR étudie systématiquement les augmentations suivantes : crop aléatoire (avec redimensionnement), flip horizontal, distorsion de couleur (jitter de luminosité, contraste, saturation, teinte), conversion en niveaux de gris, et flou gaussien.

Le résultat le plus important de l’article concerne les augmentations : la composition crop aléatoire + distorsion de couleur est essentielle. Individuellement, ces augmentations sont médiocres. Combinées, elles forcent le modèle à capturer l’information sémantique de l’image plutôt que des raccourcis triviaux. Le crop force l’invariance spatiale (reconnaître l’objet quel que soit le cadrage). La distorsion de couleur empêche le modèle de « tricher » en utilisant l’histogramme de couleurs comme signature, car deux crops de la même image partagent des distributions de couleur similaires (c’est le « color shortcut »).

Le color shortcut : le piège à éviter Sans distorsion de couleur, le modèle apprend à rapprocher les exemples qui ont des histogrammes de couleur similaires, plutôt que des objets similaires. Deux crops de la même image ont des couleurs proches par construction. Le modèle résout donc la tâche contrastive sans comprendre le contenu sémantique. La distorsion de couleur élimine ce raccourci et force l’apprentissage de features de plus haut niveau. C’est l’un des insights les plus influents de l’article.

2. Encodeur de base f(·)

Les deux vues augmentées sont encodées par le même réseau CNN (poids partagés). SimCLR utilise un ResNet-50 comme encodeur par défaut, produisant un vecteur de représentation h = f(x̃) ∈ ℝ2048 après la couche de global average pooling. L’encodeur peut être n’importe quel CNN : ResNet-50, ResNet-101, ResNet-50 (2×), ResNet-50 (4×). Les résultats montrent que des encodeurs plus larges et plus profonds améliorent les performances, avec des gains proportionnellement plus importants en SSL qu’en supervisé.

3. Projection head g(·)

Les représentations h sont projetées dans un espace de dimension inférieure via un MLP à 2 couches (projection head) : z = g(h) = W(2)σ(W(1)h), où σ est ReLU. La dimension de sortie typique est 128.

C’est l’un des résultats clés de l’article : la perte contrastive est calculée sur z (la projection), mais les features utiles pour les tâches downstream sont h (avant la projection). Le projection head « absorbe » l’information spécifique à la tâche prétexte (invariance aux augmentations) dans la projection z, laissant dans h une représentation plus riche et plus transférable. Supprimer le projection head dégrade les performances de ~10%. Passer d’un projection head linéaire à non-linéaire (MLP) améliore de ~3%. Le projection head est utilisé uniquement pendant l’entraînement et est éliminé ensuite.

4. Perte contrastive NT-Xent

Pour un batch de N images, SimCLR génère 2N vues augmentées. Pour chaque paire positive (x̃i, x̃j) issue de la même image, les 2(N-1) autres vues du batch servent de paires négatives. La perte NT-Xent est :

ℓ(i,j) = -log( exp(sim(z_i, z_j) / τ) / Σ_{k≠i} exp(sim(z_i, z_k) / τ) )

La similarité sim(u, v) est le produit scalaire des vecteurs normalisés L2 (similarité cosinus). τ est la température, fixée à 0,5 dans les expériences principales (bien que 0,1 fonctionne aussi bien dans certaines configurations). La perte finale est la moyenne sur toutes les paires positives du batch.

NT-Xent est essentiellement InfoNCE avec la similarité cosinus normalisée. Comparée à d’autres fonctions de perte (marge, logistique, perte de triplets), NT-Xent surpasse systématiquement les alternatives dans les expériences de SimCLR, grâce à sa capacité à utiliser tous les négatifs du batch simultanément et à la normalisation par température qui contrôle la concentration de la distribution.

Protocole d’entraînement

SimCLR s’entraîne avec des batch sizes massifs : 4 096 à 8 192 dans les expériences principales. Chaque batch génère 2×N vues augmentées, offrant 2(N-1) négatifs par exemple. Plus le batch est grand, plus la diversité des négatifs est élevée, plus le signal d’entraînement est informatif.

L’optimiseur est LARS (Layer-wise Adaptive Rate Scaling) avec un learning rate de 4,8 (avec scaling linéaire par rapport au batch size), un weight decay de 10-6, et un warm-up cosinus sur 10 époques. L’entraînement dure 800 à 1 000 époques sur ImageNet. La durée d’entraînement est significativement plus longue qu’en supervisé (90 époques typiquement), ce qui est une caractéristique partagée par les méthodes contrastives.

L’évaluation utilise le protocole de linear evaluation : on gèle l’encodeur f, on entraîne un classificateur linéaire (une seule couche fully connected) sur les features h avec les labels ImageNet, et on mesure la précision top-1 sur le set de validation. Ce protocole isole la qualité des représentations apprises : un bon score en linear evaluation signifie que les features h sont linéairement séparables par classe, sans fine-tuning de l’encodeur.

Les trois insights fondamentaux

Insight 1 : la composition des augmentations est déterminante

SimCLR évalue systématiquement les augmentations individuellement et en combinaison. Les résultats sont sans ambiguïté : aucune augmentation seule ne suffit. Le crop aléatoire seul donne ~64%. La distorsion de couleur seule donne ~58%. La combinaison crop + distorsion de couleur donne ~76,5%. L’écart est massif.

L’explication du color shortcut (décrite ci-dessus) est l’une des analyses les plus citées de l’article. Elle a un impact pratique direct : toute méthode de contrastive learning doit inclure une augmentation qui détruit les raccourcis de bas niveau (couleur, texture de surface) pour forcer l’apprentissage de features sémantiques.

Insight 2 : le projection head non-linéaire améliore les représentations

La perte contrastive est calculée dans l’espace de projection z = g(h), mais les features transférables sont dans l’espace de représentation h. Le MLP non-linéaire surpasse le projection head linéaire de ~3%, et l’absence de projection head dégrade les performances de ~10%. L’interprétation est que la projection élimine l’information spécifique à la tâche prétexte qui n’est pas utile pour les tâches downstream (comme l’information sur les augmentations appliquées).

Insight 3 : le contrastive learning bénéficie de grands batch sizes

Les performances augmentent de manière significative avec le batch size, de ~67% (batch 256) à ~76,5% (batch 8 192). L’explication est que des batches plus grands fournissent plus de négatifs par exemple, augmentant la probabilité de rencontrer des hard negatives informatifs. Ce résultat a été l’une des motivations principales de MoCo (qui découple la taille du dictionnaire de négatifs du batch size).

Batch size Négatifs par exemple ImageNet top-1 (linear eval)
256 510 ~66,5%
1 024 2 046 ~72%
4 096 8 190 ~75,5%
8 192 16 382 ~76,5%

SimCLR v2 : passage à l’échelle

SimCLR v2 (Chen et al., « Big Self-Supervised Models are Strong Semi-Supervised Learners », NeurIPS 2020) étend SimCLR avec trois améliorations principales. Premièrement, des encodeurs plus grands (ResNet-152 3×) qui améliorent significativement les performances SSL. Deuxièmement, un projection head plus profond (3 couches au lieu de 2), dont la première couche est conservée pour le fine-tuning. Troisièmement, une distillation de connaissances du gros modèle vers un modèle plus petit pour l’efficacité en déploiement.

SimCLR v2 avec un ResNet-152 (3×) atteint 79,8% top-1 en linear evaluation sur ImageNet. En semi-supervisé avec seulement 1% des labels, SimCLR v2 atteint 73,9% top-1, démontrant que le pre-training SSL à grande échelle réduit massivement les besoins en données labellisées.

SimCLR v1 vs v2 : poids incompatibles Les checkpoints SimCLR v1 et v2 ont des échelles de poids très différentes (les poids convolutionnels de SimCLR v1 sont en moyenne 16,8× plus grands que ceux de v2 en raison de weight decays différents). Si vous fine-tunez un checkpoint pré-entraîné, utilisez LARS comme optimiseur (robuste aux différences d’échelle) ou redimensionnez les poids manuellement. C’est un piège courant lors de l’utilisation des checkpoints officiels.

SimCLR vs. les successeurs

Aspect SimCLR MoCo v2 BYOL MAE
Négatifs In-batch (2N-2) Queue (65 536) Aucun Aucun (reconstruction)
Batch size requis 4 096-8 192 256 256-4 096 4 096
Architecture spécialisée Non Queue + momentum Online/Target + EMA Encodeur/Décodeur + masquage
ImageNet top-1 (ResNet-50) 76,5% 77,1% 74,3% N/A (ViT uniquement)
Mémoire GPU Très élevée (grand batch) Modérée Modérée Faible (masquage 75%)
Robustesse augmentations Sensible Sensible Robuste Robuste

MoCo v2 surpasse légèrement SimCLR (+0,6%) tout en ne nécessitant que des batches de 256, grâce à sa queue de négatifs dynamique. BYOL élimine les négatifs entièrement et est plus robuste aux augmentations, au prix d’une complexité architecturale accrue (deux réseaux, EMA). MAE, qui n’est pas contrastif mais un concurrent direct en SSL, surpasse toutes les méthodes contrastives quand il est utilisé avec des ViT (87,8% top-1 avec ViT-Huge). SimCLR reste la méthode la plus simple conceptuellement et la plus facile à comprendre, ce qui en fait un excellent point de départ pour apprendre le contrastive learning.

Applications concrètes

Imagerie médicale

SimCLR a été adapté à l’IRM cérébrale 3D pour construire des modèles de fondation couvrant Alzheimer, Parkinson et les AVC. Pré-entraîné sur ~45 000 scans de 11 datasets, le modèle SimCLR surpasse les approches supervisées et même MAE sur certaines tâches downstream. En classification d’images endoscopiques, SimCLR combiné avec des tâches prétextes multi-tâches (rotation, colorisation) atteint 98% de précision.

Détection d’objets

Le pre-training SimCLR suivi d’un fine-tuning sur des détecteurs YOLO (v5, v8) améliore le mAP, accélère la convergence et améliore la précision, surtout en régime de labels limités. La technique Decoupled Contrastive Learning permet de réduire les batch sizes de SimCLR pour les rendre compatibles avec les contraintes GPU de la détection d’objets.

Séries temporelles et ECG

SimCLR a été adapté aux séries temporelles (ECG, données d’activité humaine) en remplaçant les augmentations visuelles par des augmentations temporelles (jittering, scaling, time warping). Sur les données ECG, SimCLR produit des features utiles mais est systématiquement surpassé par BYOL et MAE, qui convergent plus rapidement et nécessitent moins de données pré-entraînement.

Données tabulaires et métadonnées

SimCLR a été étendu aux métadonnées médicales : au lieu d’augmenter des pixels, on augmente des vecteurs de features tabulaires (suppression de champs non-critiques, bruit numérique, mapping de synonymes dans les champs textuels). Les représentations apprises améliorent les systèmes de recherche et de matching dans les bases de données cliniques.

Limites

Dépendance au batch size. C’est la limite la plus souvent citée. Les batches de 4 096-8 192 nécessitent plusieurs GPU (voire des TPU) et une infrastructure de calcul conséquente. Pour les équipes avec des ressources limitées, MoCo (batch 256) ou BYOL sont de meilleures alternatives. Des travaux ultérieurs (Decoupled Contrastive Learning) atténuent ce problème mais ne l’éliminent pas complètement.

Sensibilité aux augmentations. SimCLR a montré que les augmentations sont le facteur le plus important, mais cela signifie aussi que de mauvaises augmentations dégradent sévèrement les performances. Dans les domaines spécialisés où les augmentations visuelles standards (distorsion de couleur, crop) ne sont pas appropriées, l’adaptation requiert une expertise du domaine.

Durée d’entraînement. 800 à 1 000 époques sur ImageNet avec des batches géants représentent un coût computationnel substantiel. C’est significativement plus long que l’entraînement supervisé classique (90 époques).

Faux négatifs. Avec un batch de 8 192, la probabilité que deux images du même objet (mais de classes différentes dans le batch) soient traitées comme négatives est non négligeable. Ces faux négatifs dégradent les représentations. BYOL et DINO évitent ce problème en éliminant les négatifs.

Verdict

SimCLR est le framework qui a démocratisé le contrastive learning et a prouvé que le self-supervised learning en vision pouvait rivaliser avec le supervisé. Sa contribution n’est pas algorithmique (les composants existaient) mais empirique : identifier systématiquement les ingrédients qui font fonctionner le contrastive learning (augmentations composées, projection head non-linéaire, grands batches). Ces insights restent valides pour toutes les méthodes contrastives actuelles.

En pratique, SimCLR n’est plus le choix optimal pour le pre-training SSL. MoCo v2 offre des performances légèrement supérieures avec des batches 16× plus petits. BYOL est plus robuste et ne nécessite pas de négatifs. MAE avec ViT surpasse tout le monde. Mais SimCLR reste le meilleur point d’entrée pédagogique dans le contrastive learning : son architecture minimale et ses insights clairement documentés en font un article à lire absolument pour quiconque travaille en SSL. Et pour les praticiens qui ont besoin d’un framework contrastif avec des CNNs sans complexité additionnelle (pas de queue, pas de momentum, pas de dual network), SimCLR reste parfaitement fonctionnel.


Questions fréquentes sur SimCLR

Pourquoi le projection head est-il éliminé après l’entraînement ?

La perte contrastive est calculée dans l’espace de projection z = g(h), mais les features utiles pour les tâches downstream sont dans l’espace de représentation h (avant la projection). L’article montre que les features h contiennent plus d’information sémantique transférable que les features z. L’interprétation est que le projection head « absorbe » l’information spécifique à la tâche prétexte (invariance aux augmentations particulières utilisées pendant l’entraînement), laissant dans h une représentation plus générale. Utiliser z plutôt que h pour les tâches downstream dégrade les performances de ~10%.

Peut-on entraîner SimCLR avec un petit batch size ?

Oui, mais avec une dégradation de performances. Un batch de 256 donne environ 66,5% vs 76,5% pour un batch de 8 192 sur ImageNet. Pour contourner cette limitation, vous pouvez utiliser MoCo (qui maintient une queue de 65 536 négatifs indépendamment du batch), Decoupled Contrastive Learning (qui réduit la dépendance au batch size), ou accumuler les gradients sur plusieurs micro-batches. Le repo officiel de Google mentionne qu’avec de bons hyperparamètres (learning rate, température, profondeur du projection head), les petits batches peuvent donner des résultats raisonnables.

SimCLR fonctionne-t-il avec les Vision Transformers ?

SimCLR a été conçu pour les CNNs (ResNet). Les ViT nécessitent des adaptations. MoCo v3 est la variante contrastive conçue pour les ViT. DINO et MAE sont les méthodes SSL recommandées pour les ViT, car elles exploitent mieux les propriétés des Transformers (attention globale, traitement par patches). Si vous travaillez avec un ViT, préférez MAE ou DINO plutôt que SimCLR.

Quelles augmentations utiliser pour un domaine spécialisé ?

Le principe de SimCLR est de combiner une augmentation géométrique (crop aléatoire, qui force l’invariance spatiale) avec une augmentation qui détruit les raccourcis de bas niveau (distorsion de couleur pour les images naturelles). En domaine spécialisé, adaptez ce principe : en médical, utilisez crop + bruit au lieu de distorsion de couleur (la couleur peut être diagnostiquement significative). En imagerie satellite, utilisez crop + rotation + flip (les images satellite n’ont pas d’orientation naturelle). La règle générale : identifiez quels facteurs de variation sont sémantiquement non-pertinents dans votre domaine et utilisez-les comme augmentations.

SimCLR ou MoCo : lequel choisir ?

MoCo v2 est supérieur dans presque toutes les situations pratiques : performances légèrement meilleures (+0,6% sur ImageNet), batch size 16× plus petit (256 vs 4 096), mémoire GPU réduite. L’avantage de SimCLR est sa simplicité conceptuelle (pas de queue, pas de momentum encoder) et sa facilité d’implémentation. Pour un projet de production, utilisez MoCo v2 ou BYOL. Pour apprendre le contrastive learning ou pour un prototypage rapide, SimCLR est le point de départ idéal car son architecture est la plus facile à comprendre et à débugger.

Polydesk.ai — Footer