如果分类学习是在回答“它属于哪个类别”,那么对比学习是在学习:“什么东西应该相似,什么东西应该不同”。
近年来,对比学习(Contrastive Learning)成为深度学习中最重要的表示学习方法之一。它推动了 SimCLR、MoCo、BYOL、CLIP、ALIGN 等大量模型的发展。
尤其是 CLIP:通过对比学习,让模型学会图像和文本之间的对应关系——这成为如今多模态大模型的重要基础。
1. 为什么需要对比学习?
传统监督学习需要“图片 → 标签”(猫图片 → cat,狗图片 → dog),模型学习分类边界。但现实中标签非常昂贵,而互联网有几十亿图片+文本,却没有人工类别。
于是产生一个问题:
能不能不用人工标签,让模型自己学习表示?这就是 Self-supervised Learning(自监督学习)。
2. 对比学习的核心思想
一句话:相似的样本,在特征空间靠近;不相似的样本,在特征空间远离。
假设一个 Encoder ,输入图片,输出 embedding 。例如“猫”图片经过网络得到 。
目标:让猫图片 1()和猫图片 2()距离更近,而猫和汽车距离更远。
3. 正样本和负样本
对比学习核心就是构造配对:
Positive Pair(正样本)——两个应该相似的东西:同一张图片的原图与数据增强(裁剪后的猫),认为它们属于同一个语义。
Negative Pair(负样本)——不相关样本:猫、汽车、飞机、狗,猫和汽车应该远离。
训练目标:Positive 拉近,Negative 推远。
4. 最早的 Contrastive Loss
经典 Contrastive Loss:希望正样本距离 变小,负样本至少保持 margin :
其中 表示正样本, 表示负样本。
问题:它只能处理一对一(一次比较“猫 vs 狗”),但现代任务希望一次利用大量负样本——于是出现 InfoNCE。
5. InfoNCE:现代对比学习核心
InfoNCE 全称 Information Noise Contrastive Estimation,最早来源于 Contrastive Predictive Coding(CPC)。
核心思想:给定一个 query ,寻找正确的 key ,同时排除大量错误的 key :
- 分子:正样本相似度
- 分母:所有样本相似度
直观理解:query 是“猫图片”,候选是“猫文本、狗文本、汽车文本、飞机文本”,模型需要让“猫文本”概率最高。
6. InfoNCE 为什么像 Cross Entropy?
这是一个非常重要的联系:InfoNCE 本质就是一个特殊形式的交叉熵损失。
普通分类:输入图片,输出类别概率(猫 0.9 / 狗 0.1),Cross Entropy 希望真实类别概率最大。
InfoNCE:输入 query,输出候选 key 概率(正样本 0.9 / 负样本 1 0.05 / 负样本 2 0.05),也是让正确答案概率最大。
所以可以理解:对比学习就是把“类别”换成了“样本”。
7. 温度系数 τ 的作用
InfoNCE 中有一个参数 (Temperature,温度系数),出现在 中:
τ 小(如 0.01):softmax 更尖锐,模型更关注最高相似度样本——容易区分 hard negative,但可能训练不稳定。
τ 大(如 1):分布更平滑,所有负样本影响接近,模型学习更温和。
直观理解:τ 控制模型关注差异的程度。
8. SimCLR:让对比学习进入主流
论文:A Simple Framework for Contrastive Learning of Visual Representations(Google 2020),arXiv: 2002.05709。
核心:大量使用数据增强——一张图片经过随机 crop、color jitter、blur,得到两个 view(image A / image B),认为它们是正样本。
关键发现:大 batch 很重要——batch 越大负样本越多(batch=4096 时一个样本有 4095 个负样本)。
9. MoCo:解决大 batch 问题
论文:Momentum Contrast for Unsupervised Visual Representation Learning,arXiv: 1911.05722。
SimCLR 需要巨大 batch;MoCo 提出 memory queue(记忆队列)保存历史负样本:
Encoder Q → query ────────────────┐
├→ Contrastive Loss
Encoder K → key → Queue ──────────┘
优势:不用巨大 GPU。
10. CLIP:对比学习进入多模态
论文:Learning Transferable Visual Models From Natural Language Supervision(OpenAI 2021),arXiv: 2103.00020。
核心:两个 Encoder——
- Image Encoder:图片 → 向量
- Text Encoder:文本 → 向量
目标:让匹配的图片-文本距离近(图片“狗在草地上奔跑” ↔ 文本 “A dog running on grass”),不匹配的远离(↔“飞机起飞”)。
11. CLIP 的 Loss
假设 batch 有 N 对图片文本,得到图像 embedding 和文本 embedding ,计算相似度矩阵 :
| T1 | T2 | T3 | |
|---|---|---|---|
| I1 | 高 | 低 | 低 |
| I2 | 低 | 高 | 低 |
| I3 | 低 | 低 | 高 |
然后对每一行做 Cross Entropy,同时对每一列做 Cross Entropy。所以 CLIP 实际上就是双向 InfoNCE。
12. 对比学习为什么有效?
核心原因:它学习的是关系,而不是标签。
- 分类:学习“猫 = 类别 3”
- 对比学习:学习“什么东西和猫相似?”
因此得到更加通用的 representation。例如 CLIP 没有训练“狗是什么类别”,但知道 dog / puppy / animal / pet 之间的关系。
13. 对比学习的问题
- False Negative(假负样本):两个图片都是狗,但在 batch 中被当成负样本,导致模型被错误拉远;
- 负样本数量依赖:InfoNCE 通常需要大量 negative,所以 batch size 很重要;
- Representation Collapse(表示坍缩):如果所有 embedding 都一样(z1=z2=z3)也满足部分目标——需要额外机制,例如 BYOL(不用负样本)。
14. 对比学习的发展路线
Metric Learning → Contrastive Loss → NCE → InfoNCE
→ SimCLR / MoCo → CLIP → Multimodal Foundation Model
15. 论文实战:CDSD / SE-COT / MR-DCoT 中的对比学习(Single-DGOD 应用)
在单域泛化目标检测(Single-DGOD)论文中,对比学习(InfoNCE)被用于两个关键场景:特征解耦和原型对齐。
15.1 CDSD:对比损失做循环解耦
CDSD(CVPR 2022)用两个对比损失把特征拆成“域不变 / 域特有”:
L_gc(全局级):拉近 F_di ↔ F_i2i(域不变再过不变提取器),推远 F_di ↔ F_i2s
L_ic(实例级):在 RoI 抠出的实例上做同样的拉近/推远
→ 循环 + 对比,让两个提取器越分越干净(无需域标签)
15.2 SE-COT:对比损失做风格/内容解耦
SE-COT(CVPR 2025)的 对比损失:拉近 (风格分支忠实代表原图),推远 (内容分支不沾外观)——用对比给两个提取器分配不对称角色。
15.3 MR-DCoT:对比损失做原型锚定
MR-DCoT(TPAMI 2026)的 对比损失:把投影后的离流形特征拉近本类原型 、推远其他原型 ——对比从“样本对”升级为“特征 vs 类原型”。
15.4 共同点:对比学习 = 解耦/对齐的通用工具
| 论文 | 对比损失的作用 | 正样本 | 负样本 |
|---|---|---|---|
| CDSD | 循环解耦 | ||
| SE-COT | 风格/内容解耦 | ||
| MR-DCoT | 原型锚定 |
和 CLIP 的联系:SE-COT / MR-DCoT 都用了 CLIP 文本编码器——而 CLIP 本身就是对比学习训练出来的多模态模型。所以这几篇论文是“用对比学习训练的工具(CLIP),再做对比学习式的解耦”——对比思想贯穿始终。
一句话:在这几篇论文里,对比学习不是用来学通用表示,而是用来回答“什么和什么应该相似”——解耦时回答“域不变和它自己相似”,对齐时回答“偏离特征和本类原型相似”。
总结:一句话理解对比学习
对比学习不是告诉模型“这个是什么”,而是让模型自己发现“什么东西应该被认为相似”。
数学上,InfoNCE ≈ CrossEntropy:目标是最大化正样本相似度、最小化负样本相似度。而 CLIP 进一步把这个思想推广到“图像空间 ↔ 文本空间”,最终形成今天多模态大模型的重要基础。
参考资料
- Contrastive Predictive Coding:https://arxiv.org/abs/1807.03748
- SimCLR(A Simple Framework for Contrastive Learning of Visual Representations):https://arxiv.org/abs/2002.05709
- MoCo(Momentum Contrast for Unsupervised Visual Representation Learning):https://arxiv.org/abs/1911.05722
- CLIP(Learning Transferable Visual Models From Natural Language Supervision):https://arxiv.org/abs/2103.00020
- Decoupled Contrastive Learning:https://arxiv.org/abs/2110.06848
- Rethinking InfoNCE: How Many Negative Samples Do You Need?:https://arxiv.org/abs/2105.13003
- 知乎:对比学习损失(InfoNCE loss)与交叉熵损失的联系,以及温度系数的作用:https://zhuanlan.zhihu.com/p/506544456