Imagine you are a child who has never been told the name of anything. Nobody points at a dog and says “dog.” Nobody labels a tree, a car, or the sky. And yet, after wandering the world for a few years, you develop an incredibly rich understanding of visual structure: objects have edges, textures have patterns, cats look different from cups. You learned all of this without a single label. That is the dream of self-supervised learning.
In 2020, training a good image classifier required millions of human-labeled images. ImageNet alone took 25,000 workers, 3.5 years, and tens of millions of dollars to annotate its 14 million images into 22,000 categories. But the internet has billions of unlabeled images sitting around, doing nothing. What if we could learn useful visual features from all those images, without bothering to label a single one?
This is the promise of self-supervised learning (SSL). The core idea: design a pretext task that requires the model to understand images deeply in order to solve it. No human annotations needed — the images themselves provide the supervision signal. Early approaches tried predicting image rotations, solving jigsaw puzzles, or colorizing grayscale photos. But the approach that proved most powerful was contrastive learning: teach the model by showing it which images are “the same” and which are “different.”
The Supervised Paradigm
- 1.Collect millions of images
- 2.Pay humans to label each one (expensive, slow, error-prone)
- 3.Train with cross-entropy loss against fixed categories
- 4.Features are biased toward the specific label taxonomy
- 5.Poor transfer when target task differs from ImageNet categories
The Self-Supervised Paradigm
- 1.Collect millions of unlabeled images (essentially free)
- 2.Create augmented views of each image automatically
- 3.Train to recognize same vs. different images via contrastive loss
- 4.Features capture general visual concepts, not tied to any taxonomy
- 5.Excellent transfer to diverse downstream tasks
Why SimCLR Was a Turning Point
Before SimCLR, self-supervised methods were getting interesting results but involved complex engineering: MoCo needed a separate momentum encoder and a memory bank of 65,536 keys. DeepCluster used k-means clustering. CPC used autoregressive prediction. Each method had its own special sauce, making it hard to know what actually mattered.
SimCLR cut through all the complexity and asked: what if we just keep things simple? A standard encoder, a small MLP, strong data augmentation, and a contrastive loss trained on large batches. That is it. And it matched supervised learning on ImageNet for the first time. The message was clear: simplicity, done right, is a superpower.
Did you know?
The SimCLR paper has over 12,000 citations as of 2024, making it one of the most cited ML papers of the decade. Its ablation studies alone influenced every subsequent self-supervised method. MoCo v2 gained +5% accuracy just by adding SimCLR's MLP projection head — without changing anything else about the MoCo framework.
Here is the whole idea in one sentence: take an image, create two different augmented views of it, push those two views close together in representation space, and push them away from views of every other image in the batch. That is SimCLR. Four components, no tricks.
But why does this work at all? Think about what the model must learn to succeed at this task. Two random crops of the same dog photo might show different body parts, different backgrounds, different colors (after jitter). The only thing they share is the semantic content — they are both pictures of the same dog. To pull them together, the model must learn to encode what the image is about, ignoring surface-level details like viewpoint, lighting, and background. That is exactly the kind of representation we want.
What SimCLR Does NOT Need
Each of these was thought to be essential before SimCLR proved otherwise:
- - No memory bank (MoCo stored 65K embeddings)
- - No momentum encoder (MoCo, BYOL use EMA-updated networks)
- - No clustering (SwAV, DeepCluster run k-means)
- - No specialized architecture (standard ResNet-50)
- - No labels of any kind (fully unsupervised)
- - No decoder or reconstruction objective
What SimCLR DOES Need
These are the ingredients that make simplicity work:
- + Strong augmentation composition (crop + color jitter)
- + A nonlinear projection head (2-layer MLP with ReLU)
- + Large batch sizes (4096-8192 images)
- + LARS optimizer with cosine annealing schedule
- + Long training (800+ epochs on ImageNet)
- + Temperature-scaled contrastive loss (NT-Xent)
The Deeper Insight: Why Simple Works
SimCLR's simplicity is not accidental — it reveals something fundamental about representation learning. Complex methods like memory banks (MoCo) and clustering (DeepCluster) were compensating for a problem that SimCLR solved differently: how to get enough negative examples.
MoCo used a memory bank to store old embeddings as negatives. SimCLR just... used a very large batch. Both give you many negatives, but the large-batch approach is simpler and keeps all negatives fresh (from the current model, not a stale copy). The lesson: sometimes the right engineering choice makes complex solutions unnecessary.
If SimCLR has one “secret,” this is it. The authors tested every possible augmentation and every possible combination. Their conclusion: the composition of data augmentations is the single most important design choice in the entire framework. More important than the encoder architecture, the loss function, or the training schedule.
But why does augmentation composition matter so much? It comes down to preventing shortcut learning. The contrastive task asks: “Are these two views from the same image?” If the augmentations are too weak, the model can solve this task without learning anything useful. For example, with random crop alone, two crops of the same image share similar color distributions — the model just matches histograms instead of understanding content.
Adding color jitter breaks this shortcut completely. Now the model cannot rely on color at all. It must learn about shapes, edges, textures, and semantic structure. This is the composition effect: individually, each augmentation is moderate. Together, they create a task that is hard enough to force genuine understanding but not so hard that training becomes unstable.
Data Augmentation: The Secret Sauce of SimCLR
Random Resized Crop
Always appliedCrops a random region and resizes to target size. Forces the model to recognize objects regardless of scale and position.
Impact: CRITICAL - Required for good performance
Augmentation Strength
Key Finding from the Paper
No single augmentation is sufficient. Composing crop + color jitter gives the largest jump. The paper found that random crop and color distortion are the most critical pair.
The Composition Principle
SimCLR's key finding: composition of augmentations matters far more than any single transform. Random crop changes the spatial context. Color jitter forces the model beyond color shortcuts. Together, they create a prediction task hard enough to learn genuinely useful visual features.
The Augmentation Recipe
Applied sequentially to each view, with independent randomness:
- 1. Random resized crop to 224x224 (scale 0.08 to 1.0)
- 2. Random horizontal flip (p = 0.5)
- 3. Color jitter: brightness, contrast, saturation, hue (p = 0.8)
- 4. Random grayscale conversion (p = 0.2)
- 5. Gaussian blur, kernel size 10% of image (p = 0.5)
Ablation Numbers
Each row adds one augmentation on top of random crop:
The Crop + Color Connection
The interaction between crop and color jitter reveals something profound about how neural networks cheat. Random crop creates pairs that share the same global color palette. A network can solve the contrastive task at 63% accuracy by simply learning a color histogram matching function — no semantic understanding required.
Color jitter destroys this shortcut by randomizing brightness, contrast, saturation, and hue. The 11.5-point jump from 63% to 74.5% represents the difference between “matching colors” and “understanding content.” This finding taught the entire field that augmentation design is really about closing shortcuts.
SimCLR uses a standard ResNet-50 as its encoder — no modifications, no custom layers, no novel blocks. This was a deliberate choice: the authors wanted to isolate the effect of the training framework. By keeping the architecture fixed, they proved that what you learn from matters more than what you learn with.
The encoder takes a 224x224 input and produces a 2048-dimensional representation h (after global average pooling). This h is the representation that gets used for downstream tasks — classification, detection, segmentation. The key insight is that h trained via contrastive learning captures visual features that are more general than features trained via supervised classification, because h is not locked into any particular set of categories.
A fascinating finding: self-supervised learning benefits more from wider encoders than supervised learning does. When you double ResNet-50's width from 1x to 4x, SimCLR gains 6 accuracy points but supervised training gains only 4. Why? Supervised training with fixed categories has a ceiling — once you can distinguish 1000 ImageNet classes, extra capacity offers diminishing returns. But contrastive learning has a much richer objective (distinguishing every image from every other image), so it can absorb more model capacity productively.
The Encoder: How SimCLR Extracts Visual Features
SimCLR uses ResNet-50 as the default encoder. The image passes through progressively deeper layers, extracting increasingly abstract features. The final global average pooled output (h) is the 2048-d representation.
Encoder Takeaways
SimCLR shows that bigger encoders help self-supervised learning more than supervised. The encoder output h (not projection z) is what matters for downstream tasks. Standard architectures (ResNet) work perfectly - no special design needed. The magic is in the training framework, not the architecture.
The Encoder's Role in the Pipeline
The encoder f() maps raw pixels to a compact feature vector. After global average pooling, the 2048-d vector h captures the visual “essence” of the input. This is the only part of SimCLR that survives training — the projection head and loss function are scaffolding that gets removed at deployment. Think of the encoder as the student and the projection head as the tutor: the tutor helps during training, but only the student takes the exam.
Width vs. Depth Scaling
The paper tested ResNet-50 (1x), ResNet-50 (2x), and ResNet-50 (4x), where the multiplier increases channel widths. Going wider helps more than going deeper for SSL because wider layers give each feature map more capacity to encode diverse visual patterns — and contrastive learning generates a richer gradient signal that can fill that capacity. ResNet-50 (4x) reaches 76.5% with SimCLR: identical to supervised ResNet-50 (1x).
Did you know?
The same ResNet-50 architecture trained with SimCLR learns qualitatively different features than supervised training. Supervised features are sharply tuned to discriminate between specific classes (e.g., distinguishing dog breeds). SimCLR features instead capture broader visual primitives (textures, shapes, spatial relationships) that transfer better to tasks the model never saw during training.
Here is one of the most counterintuitive findings in all of deep learning: adding a tiny 2-layer MLP that you throw away after training improves the encoder's representation quality by nearly 10 percentage points. Without the projection head, the encoder achieves 64.7%. With a linear projection, 66.8%. With a nonlinear MLP? 74.6%. A throwaway layer that nearly closes the gap to supervised learning.
Why does this work? The answer reveals something deep about the nature of contrastive learning. The contrastive loss needs to make z_i and z_j identical — even though the two views differ in crop region, color, blur, and flip. To make z identical, the model must discard information about the augmentation: which crop region was selected, what color shift was applied, how much blur was added. But this information might be useful for downstream tasks!
The projection head acts as a sacrificial information bottleneck. It absorbs the information loss that the contrastive objective requires. The encoder h keeps everything — rich, general features including augmentation-sensitive information like color and spatial position. The projection z strips away augmentation-specific details to focus on identity-level features. By training the loss on z but keeping h for downstream use, you get the best of both worlds: h benefits from the contrastive training signal without losing information to it.
The Projection Head: Why a Simple MLP Makes All the Difference
MLP with one hidden layer + ReLU. Allows nonlinear transformation that separates task-invariant features from instance-specific ones.
The Throwaway Layer Trick
The projection head z is discarded after training. Only the encoder representation h is kept. Why does this work? The projection head absorbs information loss from the contrastive objective (color, augmentation details) while h retains a richer, more generalizable representation. This 10-point accuracy boost (64.7 to 74.6%) from a simple 2-layer MLP was one of SimCLR's most surprising findings.
An Analogy: The Draft and the Final Essay
Think of h as a detailed outline for an essay. It contains all the ideas, evidence, and structure. The projection head z is like writing a focused one-paragraph summary for a specific purpose — you must cut things to fit. The summary (z) is useful for that specific purpose (contrastive loss), but you would never throw away the full outline (h) in favor of the summary. The key insight is that writing the summary forces you to organize the outline better, even though you discard the summary afterwards.
The NT-Xent loss (Normalized Temperature-scaled Cross-Entropy) is the engine that drives SimCLR. But to understand it, start from a simpler question: how do you train a network to pull similar things together and push different things apart without any labels?
Reframe the problem as classification: given a batch of N images (producing 2N augmented views), take one view z_i and ask “Which of the other 2N-1 views came from the same image?” There is exactly one correct answer (its augmented partner z_j) and 2(N-1) wrong answers (views of other images). This is a (2N-1)-way classification problem, solved with the familiar softmax cross-entropy — but over cosine similarities instead of logits.
The temperature parameter τ controls the sharpness of this classification. Low temperature (e.g., τ = 0.07) creates a peaked distribution that focuses on the hardest negatives — views that look similar but come from different images. High temperature (e.g., τ = 1.0) treats all negatives equally. SimCLR uses τ = 0.07-0.5 depending on the setting. Too low leads to training instability; too high wastes gradient signal on easy negatives.
NT-Xent Loss: The Contrastive Objective
Given a batch of N images, SimCLR creates 2N augmented views (two per image). For each positive pair (two views of the same image), the loss pulls their representations together while pushing apart all 2(N-1) negative pairs.
Batch Size Controls Negatives
With batch size N = 8: each sample has 14 negative pairs. SimCLR uses N = 8192, giving 16,382 negatives per positive.
Why NT-Xent Works
NT-Xent is essentially a (2N)-way classification problem: given sample i, identify its positive pair j among all 2N-1 other samples. Temperature controls difficulty, batch size controls the number of negatives. Together, they create a powerful learning signal.
Why Cosine Similarity?
NT-Xent normalizes embeddings to the unit hypersphere before computing similarity. This matters because it decouples direction (what information is encoded) from magnitude (how confident the model is). Without normalization, the model could cheat by making positive pair embeddings very large — high dot product without learning useful directions. L2 normalization forces the model to use the angular structure of the space.
NT-Xent vs. Other Losses
The paper compared NT-Xent against several alternatives. Triplet loss (one positive, one negative) gave 64.2%. Margin loss gave 63.4%. Logistic loss gave 63.8%. NT-Xent gave 74.6%. The massive gap comes from using all negatives simultaneously: NT-Xent compares against 2(N-1) negatives per sample, creating a far richer gradient signal than pairwise losses.
The Temperature Sweet Spot
Temperature is not just a hyperparameter — it fundamentally changes what the model learns. At τ = 0.01 (very low), the loss collapses to a nearest-neighbor classifier: only the single most similar negative matters. This is unstable and ignores easy negatives that still carry information. At τ = 1.0 (high), all negatives contribute equally, including trivially dissimilar ones that provide no useful gradient. The sweet spot around τ = 0.07-0.1 creates a distribution that weights hard negatives more (they are informative) while still learning from moderate negatives.
In supervised learning, batch size is primarily an optimization concern — larger batches can train faster but do not fundamentally change what the model learns. In contrastive learning, batch size is something entirely different: it directly determines the quality of the learning signal. This is SimCLR's most important structural constraint and its most important limitation.
The reason is straightforward: in SimCLR, all negative examples come from the current batch. With batch size N, each sample sees 2(N-1) negatives. At N = 256, that is 510 negatives. At N = 8192, that is 16,382 negatives. More negatives means the model must build representations that distinguish its positive pair from a richer, more diverse set of alternatives. A batch with 16,382 negatives almost certainly contains images that are visually similar to the anchor — “hard negatives” that force fine-grained discrimination.
Training with batch size 8192 requires 128 TPU v3 cores running in synchronous data-parallel mode. This is not a typical research setup. The authors used the LARS (Layer-wise Adaptive Rate Scaling) optimizer to handle the large-batch regime: LARS adapts the learning rate for each layer based on the ratio of weight norm to gradient norm, preventing layers from taking excessively large steps. Training runs for 800+ epochs with a cosine annealing schedule.
Training at Scale: Why SimCLR Needs Massive Batches
SimCLR's performance depends heavily on batch size and training duration. Unlike supervised learning where batch size mainly affects optimization dynamics, in contrastive learning it directly determines the number of negative samples available.
SimCLR
MoCo v2
BYOL
The Batch Size Bottleneck
SimCLR's dependence on large batches is both its strength and limitation. Large batches provide more negatives, improving representation quality. But they require enormous compute (128 TPUs). This motivated later work like MoCo (memory bank) and BYOL (no negatives) to achieve similar quality with less compute.
Batch Size Scaling Numbers
Every doubling of batch size adds 1.5-3 accuracy points, with diminishing returns above 4096.
The Compute Trade-off
SimCLR's batch size requirement is both its strength and its Achilles heel:
- 128 TPU v3 cores for training
- ~3 days wall clock for 800 epochs
- Not accessible to most research labs
- Performance degrades significantly below N = 1024
This limitation directly inspired MoCo (memory bank for more negatives at small batch sizes) and BYOL (no negatives needed at all).
Training Duration Matters Too
Unlike supervised learning (which typically converges in 90-100 epochs on ImageNet), SimCLR benefits from training much longer. At 100 epochs: 66.0%. At 300 epochs: 72.1%. At 800 epochs: 76.5%. Why? Because the contrastive task has far more variance than supervised classification — each epoch shows different random augmentation pairs, and the model gradually discovers subtler invariances over time. Supervised training sees the same label for each image every time; contrastive training sees a new comparison task every time.
The ultimate test of a self-supervised method: can the learned features compete with features trained on millions of human labels? SimCLR was the first contrastive method to answer yes. With ResNet-50 (4x width), it reaches 76.5% top-1 accuracy on ImageNet linear evaluation — identical to supervised ResNet-50. Zero labels, same performance.
But matching supervised accuracy on ImageNet is not even the most impressive result. The real story is in transfer learning and semi-supervised learning. When you take SimCLR features and fine-tune them on other datasets (CIFAR-10, Food-101, SUN397, DTD), they often outperform supervised ImageNet features. Why? Because supervised features are biased toward the 1000 ImageNet categories, while SimCLR features capture more general visual structure.
The semi-supervised results are even more striking. With only 1% of ImageNet labels (about 13,000 images), SimCLR achieves 48.3% top-1 accuracy. Training supervised from scratch with the same 1% gives only 25.4%. SimCLR's pretraining almost doubles the data efficiency. With 10% labels, SimCLR reaches 65.6% vs. supervised 56.4%. This is where SSL truly shines: when labels are scarce.
How Good Are SimCLR Representations?
Linear evaluation is the standard test for self-supervised representations: freeze the encoder, train only a linear classifier on top. If the linear classifier performs well, the representations must capture meaningful visual features.
Milestone Achievement
SimCLR (4x) matches supervised ResNet-50 at 76.5%. This was the first time a contrastive self-supervised method achieved parity with supervised pretraining on ImageNet using a standard architecture.
The Representation Quality Story
SimCLR representations are general, transferable, and label-efficient. They match supervised learning with enough capacity, outperform it on transfer tasks, and shine brightest in low-label regimes. This validated the promise of self-supervised visual learning.
Why Self-Supervised Features Transfer Better
Supervised training on ImageNet teaches a model to distinguish dogs from cats from cars. This creates features that are very good at distinguishing those specific categories but may encode ImageNet-specific biases: certain viewpoints, backgrounds, and image distributions.
Contrastive training teaches a model to distinguish every image from every other image. There are no fixed categories, no label biases, no taxonomy constraints. The model must develop features that capture the most general visual properties: texture, shape, spatial relationships, part-whole hierarchies. These general features transfer better to new domains where the target categories were never seen during pretraining.
SimCLR's ablation studies are arguably more influential than the method itself. They systematically answered the question that every SSL researcher was asking: what actually matters for contrastive learning? The answers became the design handbook that every subsequent method — MoCo v2, BYOL, SwAV, DINO, MAE — built upon.
What makes these ablations exceptional is their exhaustiveness. The authors did not just test one hypothesis — they systematically varied every major component and measured the isolated effect of each. This produced a clear recipe: which ingredients are essential (augmentation composition, projection head) and which are interchangeable (exact encoder architecture, loss function variant).
Finding #1: Augmentation Composition
No single augmentation is sufficient. Crop + Color Jitter gives +11.5% over crop alone. This is the most important design choice in the entire framework.
Finding #2: Nonlinear Projection Head
A 2-layer MLP beats linear or no projection by ~10%. The nonlinearity is crucial — it lets the projection head absorb information loss without corrupting the encoder.
Finding #3: Larger Batch = Better Signal
Performance scales with batch size because more negatives create a harder, more informative classification problem. 8192 is optimal given compute.
Finding #4: Longer Training Helps SSL
Unlike supervised learning (which converges fast), SSL benefits from 800+ epochs. The contrastive task has high variance — every epoch shows new augmentation pairs.
The Ablation Legacy
These findings transcended SimCLR and became universal design principles for the entire field. MoCo v2 gained +5.4% accuracy just by adding SimCLR's MLP projection head and augmentation recipe — without changing anything else about MoCo. BYOL, SwAV, and DINO all use the same augmentation pipeline. Even the masked image modeling approaches (MAE, BEiT) use SimCLR-inspired augmentations for their teacher targets.
The ablation approach itself was influential: it showed that SSL research benefits more from systematic empirical study than from novel architecture invention. Sometimes the most important contribution is not a new idea, but a clear understanding of which existing ideas matter most.
SimCLRv2 (released a few months after SimCLR) asked a natural follow-up question: if self-supervised pretraining creates great features, what happens when you combine it with a small number of labels and a much bigger model? The answer: remarkable semi-supervised performance.
The recipe has three steps. First, pretrain a very large model self-supervised (ResNet-152 3x). Second, fine-tune it with a small number of labels (1% or 10% of ImageNet). Third, distill the knowledge from this large teacher into a smaller student model that can run on a single GPU. The student achieves remarkable accuracy despite being much smaller than the teacher.
SimCLRv2 also made a key architectural change: a deeper projection head (3 layers instead of 2, with batch normalization). They found that for larger models, deeper projection heads help more — the extra capacity in the projection lets the encoder retain even more information. Additionally, they fine-tune from the first layer of the projection head rather than just the encoder output, which provides a slightly richer starting point.
The Distillation Pipeline
Distillation is the practical magic of SimCLRv2. The idea: a massive model (ResNet-152 3x) learns amazing representations but is too large to deploy. A smaller model (ResNet-50) cannot learn these representations from scratch with few labels. But the smaller model can learn to mimic the larger model's predictions.
The result: a ResNet-50 student that runs on a single GPU achieves 79.8% top-1 with only 1% of labels. That is competitive with fully supervised training on 100% of labels. The pipeline shows that self-supervised pretraining + few labels + distillation is a viable alternative to expensive large-scale annotation.
Key Insight: Bigger Models Help SSL More
SimCLRv2 confirmed that SSL scales better with model size than supervised learning. Going from ResNet-50 to ResNet-152 (3x) gives a larger boost for self-supervised pretraining than for supervised training. This is because the contrastive objective is harder and richer than 1000-way classification — larger models can extract more signal from it.
SimCLR arrived at a pivotal moment in the history of visual representation learning. To understand its impact, you need to see where it sits in the rapid evolution of self-supervised methods — each paper answering the previous one's biggest limitation.
MoCo (November 2019) showed that contrastive learning could work well, using a momentum encoder and a memory bank of 65,536 stored embeddings as negatives. SimCLR (February 2020) showed you do not need the memory bank or momentum encoder — just use a larger batch. Then BYOL (June 2020) showed you do not need negatives at all: just predict one view from another using a momentum target. SwAV (June 2020) replaced contrastive loss with online clustering. Each step removed a piece of complexity while maintaining or improving performance.
The evolution continued: DINO (2021) brought Vision Transformers to SSL with self-distillation, discovering that ViTs trained with SSL learn explicit object segmentation in their attention maps. MAE (2021) moved to a completely different paradigm — masked image modeling — showing that predicting masked patches could match contrastive approaches. But every single one of these methods uses SimCLR's augmentation recipe and benefited from its ablation studies.
SimCLR in Context: The Self-Supervised Landscape
SimCLR
Simple framework: augmentation + encoder + projection + NT-Xent. No memory bank, no momentum encoder.
- + Simple architecture
- + Strong with large batch
- + Clear ablation insights
- - Requires huge batch size
- - Needs many GPUs/TPUs
- - Performance degrades with small batch
| Feature | SimCLR | MoCo v2 | BYOL | SwAV |
|---|---|---|---|---|
| Negatives | In-batch (2N-2) | Queue (65K) | None! | Implicit (clustering) |
| Batch Size | 8192 | 256 | 4096 | 4096 |
| Memory Bank | No | Yes | No | No |
| Momentum Enc. | No | Yes | Yes | No |
| Top-1 (R50) | 76.5% | 71.1% | 74.3% | 75.3% |
SimCLR's Legacy
SimCLR proved that simplicity works in self-supervised learning. It showed the critical role of augmentations and projection heads. Every subsequent method (MoCo v2, BYOL, SwAV, DINO, MAE) built on SimCLR's insights. Its ablation studies remain the most cited reference for designing contrastive learning systems.
The Evolution of Self-Supervised Vision
SimCLR's Lasting Contributions
Even as the field moved beyond contrastive learning to methods like MAE, SimCLR's contributions remain foundational: (1) augmentation composition as the primary design lever, (2) the nonlinear projection head as a universal component, (3) the importance of training at scale, and (4) the methodology of systematic ablation studies. These insights are not specific to contrastive learning — they are principles of self-supervised learning that will outlive any particular method.
SimCLR Deep-Dive Quiz
Question 1 of 10What is the core idea behind SimCLR's contrastive learning approach?
You Now Understand How SimCLR Learns Visual Representations Without Labels
From augmentation composition (close the shortcuts) to NT-Xent loss (classify among thousands), from the throwaway projection head (sacrifice a layer to save the encoder) to large-batch training (more negatives means harder, better learning) — you have explored how a simple framework achieved what was thought impossible: matching supervised learning without a single human annotation.