核心要点

  • 核心是在嵌入空间把正样本对拉近、把负样本对推远,学到判别性表示

  • 正例常由数据增强(同图两视图)或天然配对(图-文)构造,其余样本作负例

  • 主流损失是 InfoNCE:把正例当作在一堆负例中的分类目标,温度系数调节锐度

  • 属于自监督,无需人工类别标签,预训练好的编码器可迁移到下游任务

标准回答

一句话核心

对比学习不预测具体标签,而是学「什么该相似、什么该不相似」:在嵌入空间里把正样本对拉近、把负样本对推远,从而得到有判别力的表示。

正负样本怎么来

  • 正例:同一图像的两个数据增强视图(SimCLR)、同一图配对的文本(CLIP),或时序/视角上相关的样本;
  • 负例:批次里其他不相关样本。负例数量越多、越「难」,表示通常越好。

损失函数(InfoNCE)

对一个 anchor,计算它与正例和所有负例的相似度(余弦),用 softmax 把正例当作「正确类别」做分类:

code
L = -log( exp(sim(a, a+)/τ) / Σ exp(sim(a, ·)/τ) )

τ 是温度系数,越小越强调难负例。最小化它即拉近正例、推远负例。

为什么重要

它是自监督范式,靠数据自身结构构造监督信号,不需人工标注类别,能在海量无标注数据上预训练出通用编码器(SimCLR、MoCo、CLIP)。学到的表示迁移到分类、检索、多模态对齐等下游任务,常以线性探测或微调即可取得强效果。CLIP 正是把对比学习用于图文跨模态对齐。

常见误区

⚠️ 常见踩坑

对比学习不是有监督分类,正负例由增强或配对自动构造而非人工类别;负例规模与质量很关键,太少或太易会导致表示坍缩。也别混淆它与生成式自监督(如 MAE 重建)——后者不靠正负对比。

追问

追问 1负样本数量为什么影响表示质量?

更多负例提供更强的「推远」信号,让模型在更大的对比集合里区分正例,学到更细粒度的判别边界。SimCLR 靠大 batch 提供负例,MoCo 用动量队列扩充负例库,都是为在算力受限时维持足够多、足够一致的负样本。

追问 2没有负样本也能做对比学习吗?

可以。BYOL、SimSiam 等「无负例」方法只用正例对,靠预测器 + 停梯度(stop-gradient)或动量编码器防止表示坍缩;DINO 用自蒸馏加中心化与锐化。它们说明合适的架构约束可替代显式负例,避免所有样本塌成同一点。

追问 3对比学习与 CLIP 是什么关系?

CLIP 是对比学习在跨模态上的代表应用:正例是匹配的图文对,负例是批次内其他图文组合,用对称 InfoNCE 把图像与文本对齐到共享空间。可见对比学习是方法论,CLIP 是把它用于图文对齐的具体实例。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。