对比学习入门:用相似与不相似样本学表征

对比学习(contrastive learning)是一类自监督表征学习方法:它不依赖人工标签,而是通过构建「相似」与「不相似」的样本关系,让模型学会把相似的样本在特征空间里拉近、把不相似的样本推远。这样得到的表征(embedding)往往质量很高,可直接用于分类、检索、聚类等下游任务。

核心思想:拉近正样本、推远负样本

对比学习的关键是定义「正样本」(positive,应当相似)与「负样本」(negative,应当不相似),再用一个度量(通常是余弦相似度或点积)在嵌入空间里拉开它们的距离。

  • 正样本:同一张图片做两种不同增强后的两个视图,或同一句话的两种语义表述。
  • 负样本:来自其他样本、与当前样本被认为无关的例子。

直观目标是让一个样本与它的正样本更近、与所有负样本更远。这与度量学习中的三元组损失(triplet loss)思路相通,但对比学习通常在同一批样本内同时比较多个正负对,效率更高。【已核验】

InfoNCE 损失

InfoNCE(Information Noise-Contrastive Estimation)是对比学习中最常用的损失函数,由 van den Oord 等人在 CPC(Contrastive Predictive Coding)论文中提出【已核验】。对于一个查询向量 q 和一个正样本向量 k⁺,以及一批负样本 k⁻,其形式如下:

L = -log[ exp(sim(q, k⁺) / τ) / ( exp(sim(q, k⁺) / τ) + Σ exp(sim(q, k⁻) / τ) ) ]

其中 sim 通常取余弦相似度,τ 是温度系数(temperature),用来调节分布的陡峭程度。分子鼓励 q 与正样本相似,分母把所有负样本汇总进来做归一化,整体等价于一个多分类交叉熵:把「正确的正样本」从「一堆负样本」中辨别出来。温度 τ 偏小会放大困难负样本的作用,偏大则训练更平滑。【已核验】

在 SimCLR 中,这一损失以 NT-Xent(Normalized Temperature-scaled Cross Entropy)之名被使用,即批内所有样本互相构成正负对。【已核验】

主流方法思路

SimCLR(Chen 等,2020,Google)【已核验】:对同一样本做两次随机增强,得到两个视图,分别经编码器(如 ResNet)与投影头(MLP)得到表征,再用 NT-Xent 对比。其效果很大程度上依赖大批量(batch size)以提供充足的负样本。

MoCo(He 等,2020,Facebook AI)【已核验】:提出「动量编码器与队列(queue)」机制。编码器参数通过缓慢的动量更新(而非梯度直接更新)得到,历史表征被放进一个不断更新的字典作为负样本,从而在小批量下也能获得大量负样本。后续有 MoCo v2、MoCo v3 等改进。

BYOL(Grill 等,2020,DeepMind)【已核验】:去掉了负样本,仅靠「在线网络」与「目标网络」两支结构,在线网络预测目标网络的输出,目标网络用动量更新并停止梯度。它靠非对称结构与停止梯度避免表征坍缩(collapse),是「非对比式」自监督的代表,但思想常与对比学习并列讨论。

与监督学习对比

维度监督学习对比学习
标签需求需要大量人工标注无需标注,靠数据增强构造自监督信号
训练目标直接拟合标签拉近正样本、推远负样本
表征质量易过拟合到具体任务表征更通用,迁移性好
数据规模受限于标注数据可利用海量无标注数据

对比学习通常先「预训练」得到通用表征,再用少量标注做「微调」或线性探测(linear probe),这是它与监督学习互补的关系,而非对立。【已核验】

典型应用

  • 图像表征:SimCLR、MoCo 在 ImageNet 等数据集上预训练后,迁移到分类、检测任务表现优异。
  • 句子与文本表征:SimCSE(Gao 等,2021)【已核验】用「同一句话两次 dropout 得到不同嵌入」作为正样本,进行无监督句子嵌入对比学习,显著提升句向量质量。
  • 检索与匹配:把查询与文档、商品与用户行为编码到同一空间,用相似度做召回与排序。

小结

对比学习的核心是用「相似与不相似」的相对关系替代人工标签,通过 InfoNCE 这类损失把正样本拉近、负样本推远。SimCLR 靠大批量与强增强,MoCo 靠动量队列解决负样本不足,BYOL 则证明去掉负样本也能工作。它让模型从海量无标注数据中学会通用表征,是通向更高效、更通用 AI 的重要路径。

上述方法已在图像、文本与多模态领域得到成熟落地,也因此成为自监督表征学习的主流范式。实践中的关键变量通常是数据增强策略、负样本数量(或队列大小)与温度系数,三者共同决定表征的最终质量。

参考与延伸阅读

  • van den Oord, Li 与 Vinyals,Representation Learning with Contrastive Predictive Coding,2018。
  • Chen 等,A Simple Framework for Contrastive Learning of Visual Representations(SimCLR),ICML 2020。
  • He 等,Momentum Contrast(MoCo),CVPR 2020。
  • Grill 等,Bootstrap Your Own Latent(BYOL),NeurIPS 2020。
  • Gao 等,SimCSE: Simple Contrastive Learning of Sentence Embeddings,EMNLP 2021。