对比学习在CV与NLP领域的应用:SimCLR、SimCSE 与 SimVLM

Peng Xia

对比学习作为一种重要的自监督预训练范式,已在计算机视觉(CV)与自然语言处理(NLP)等多个领域展现出强大能力。本文将聚焦三种经典代表方法:SimCLR、SimCSE 及 SimVLM,探讨其核心思想与技术实现。

SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

SimCSE: Simple Contrastive Learning of Sentence Embeddings

SimVLM: Simple Visual Language Model Pretraining with Weak Supervision

InfoNCE

InfoNCE(Information Noise-Contrastive Estimation)是一种对比损失函数,用于训练通过区分正负样本对来学习表征的模型。其最初被提出用于自监督学习场景中。

对于一个锚点 (anchor) 样本 ,一个正样本 ,以及一组负样本 ,InfoNCE 损失定义为:
𝟙
PS:复杂公式渲染比较失败,我把公式在我本地正常渲染的图片也放进来

image-20250518223053516

其中:

  • :通常为余弦相似度;
  • :温度超参数,用于控制分布的尖锐程度;
  • 𝟙:指示函数,避免样本与自身比较。

InfoNCE 通常默认使用同一批次内的非正样本作为负样本,无需人工标注负对。该损失函数鼓励模型将正样本对拉近,而将负样本对在嵌入空间中推远。

SimCLR CV领域的对比学习

We simplify recently proposed contrastive selfsupervised learning algorithms without requiring specialized architectures or a memory bank.

we systematically study the major components of our framework. We show that (1) composition of data augmentations plays a critical role in defining effective predictive tasks, (2) introducing a learnable nonlinear transformation between the representation and the contrastive loss substantially improves the quality of the learned representations, and (3) contrastive learning benefits from larger batch sizes and more training steps compared to supervised learning.

SimCLR 是一种简化的对比自监督学习方法,其不依赖于特殊架构或内存机制,并系统性地分析了其关键组成部分。研究表明:

  1. 数据增强的组合对定义有效的预测任务至关重要;
  2. 在表征与对比损失之间引入可学习的非线性变换有助于提升学习质量;
  3. 对比学习在大批量和更长训练周期下优于监督学习。

将这些因素结合后,SimCLR 在 ImageNet 上大幅超越了以往的自监督和半监督方法。在该方法学习到的表征基础上训练的线性分类器可达到 76.5% 的 top-1 准确率,比当时的 SOTA 高 7%,甚至可与监督训练的 ResNet-50 相媲美。

image-20250518152559680

Composition of multiple data augmentation operations is crucial in defining the contrastive prediction tasks that yield effective representations. In addition, unsupervised contrastive learning benefits from stronger data augmentation than supervised learning.

SimCLR 的核心流程如下:

  • 使用随机数据增强模块生成两种相关视图(作为正样本对),增强操作依次为:随机裁剪+恢复尺寸、颜色扰动、高斯模糊;

  • 使用编码器(如 ResNet)提取表示:

  • 使用两层 MLP 投影头生成对比空间中的嵌入:

一个批次包含 个图像,经增强后生成 个视图,构造对比任务。每对正样本的损失如下:
𝟙
image-20250518223105143

其中:

  • :表示正样本对 的对比损失;
  • :表示嵌入向量之间的相似度(例如余弦相似度);
  • :温度系数;
  • 𝟙:指示函数,当 时为 1,否则为 0;
  • :表示总样本数,可能包括原始样本和其增强版本。

image-20250518153414026

为了系统地研究数据增强的影响,作者考虑了几种常见的数据增强方式。一类增强属于空间/几何变换,例如裁剪与缩放(含水平翻转)、旋转和 cutout;另一类则属于外观变换,例如颜色扰动(包括去色、亮度、对比度、饱和度和色调变化)、高斯模糊和 Sobel 滤波。

为了理解单个增强方式的效果以及增强组合的重要性,作者对比了分别使用单一增强和组合增强的模型性能。结果表明,单独的一种变换不足以学习出高质量的表征,尽管模型几乎可以完美识别出正样本对。而当使用组合增强时,尽管对比预测任务变得更加困难,但最终学习到的表征质量却显著提升。注意对角线是单独变换,非对角线是组合变换,最后一列是平均效果,明显对角线都会比平均效果差,代表组合变化对于表征学习更好,虽然会让任务变难。

image-20250518154039539

SimCSE NLP领域的对比学习

首先,作者提出了一种无监督方法,该方法将输入句子作为自身的预测目标,并在对比学习目标下仅使用标准的 dropout 作为噪声。实验发现,dropout 起到了最小的数据增强作用,一旦移除 dropout,会导致表征坍缩(representation collapse),即表征的有效性不强了。

随后,作者提出了一种有监督方法,将自然语言推理(NLI)数据集中的标注句对引入对比学习框架。其中,“蕴含”(entailment)句对被用作正样本,而“矛盾”(contradiction)句对则作为 hard negative。

在 NLI 任务中,前提句与假设句之间的关系可分为三类:蕴含、矛盾和中性。蕴含表示假设句可以从前提句推出;矛盾表示假设句的否定可以从前提句推出;中性则表示无法判断是否成立或矛盾。SimCSE 利用蕴含对可自然作为正样本的特点,同时发现引入对应的矛盾对作为 hard negatives 可进一步提升性能。作者指出,无监督的 SimCSE 通过 dropout 噪声在避免表征塌缩的同时提升了表征空间的均匀性,从而增强了表示的表达能力。

Unsupervised SimCSE

在对比学习中,一个关键问题是如何构造正样本对。在视觉表征中,一个有效的做法是对同一图像进行两种随机变换(例如裁剪、翻转、扭曲或旋转),然后将其视为正样本对。类似的策略也被引入到了语言表征中,通过词语删除、词序打乱、替换等增强方式构造语言的正样本。然而,由于语言的离散性,NLP 中的数据增强本质上更为困难。在 SimCSE 中,作者发现仅使用标准的 dropout 对中间表征施加扰动,就能优于上述离散增强方法。

在标准的 Transformer 训练中,dropout mask 被应用于全连接层以及注意力概率上。

,其中 是一个随机的 dropout mask。作者将同一个输入句子两次送入编码器,在 dropout mask 不同的情况下获得两个不同的句子表示 。需要注意的是, 是 Transformer 中原生的 dropout mask,模型中未引入任何额外的 dropout 操作。

image-20250518223119146

作者将 dropout 视为一种最小形式的数据增强:正样本对使用完全相同的输入句子,其表示之间仅由不同的 dropout mask 引入差异。常见的数据增强方式,如裁剪、词语删除或替换,可以形式化为 ,其中 是作用于输入 的随机离散操作。实验表明,即便仅删除一个词,也会显著降低性能,而没有一种离散增强方式能超过 dropout 噪声的效果。PS:本来 dropout 就是加强模型鲁棒性的,希望即使中间有部分内容随机消失的情况下,也能够正确表述,正好和正样本的概念类似。

image-20250518204643817

作者进一步尝试了不同的 dropout 概率,发现所有变化形式的效果均低于 Transformer 默认的 。其中两个极端情况尤为值得关注:一是完全不使用 dropout(),二是使用默认 ,但在两次编码中采用相同的 dropout mask。在这两种情形下,生成的两个表示完全相同,导致模型性能大幅下降,所以说不用 dropout 就会表征塌陷, dropout 不随机化也会。

image-20250518205239125

作者还在训练过程中每隔 10 步保存一次模型,并可视化 alignment(对齐性)与 uniformity(均匀性)两个指标。结果显示,从预训练参数出发,所有模型都能显著提升均匀性,但上述两个特殊变体的 alignment 指标迅速退化,而无监督 SimCSE 由于引入了 dropout 噪声,保持了良好的对齐性。

Supervised SimCSE

作者已经证明,引入 dropout 噪声能够在正样本对之间保持良好的对齐性。因此,进一步探讨是否可以利用有监督的数据集,提供更强的训练信号以提升对齐质量。以往的研究已表明,自然语言推理(NLI)任务中的有监督数据在学习句子嵌入方面非常有效,其任务目标是判断两个句子之间的关系属于“蕴含”“中性”还是“矛盾”。

在 SimCSE 的有监督版本中,作者直接使用 NLI 数据集中的蕴含 entailment 对作为正样本,并进一步利用其中的矛盾 contradiction 对作为 hard negative,增强对比学习的难度和效果。

形式上,将二元组 扩展为三元组 ,其中 表示前提句, 分别表示蕴含与矛盾的假设句。其训练目标函数 定义如下(其中 为 mini-batch 的大小):

image-20250518223139353

image-20250518210735009

引入 hard negative 可以进一步提升模型性能(例如在 STS-B 任务中由 84.9 提升至 86.2),这也构成了最终的有监督 SimCSE 方法。

如今,许多 RAG(Retrieval-Augmented Generation)系统中的检索器也采用类似的有监督对比学习策略进行训练,使用问题-正向文段对作为正样本,并结合同批次中的其他样本作为负样本——这一方式与 SimCSE 的有监督训练模式非常相似。

项目 Unsupervised SimCSE Supervised SimCSE
正样本 (Positive Pairs) 同一句子经过两次独立 Dropout 的编码表示(即:,其中 来自 NLI 数据中的蕴含对 ,即前提和蕴含句
负样本 (Negative Pairs) In-batch negatives:同一 mini-batch 中其他句子(不同语义)自动构成负样本 NLI 中的矛盾对 显式作为负样本,构成三元组
训练目标 InfoNCE 损失,最大化相同句子(不同 dropout)间的相似度,最小化与 batch 中其他句子的相似度 变种的对比损失,最大化 的相似度,最小化与 的相似度(见你之前发的公式)
数据来源 原始无标签语料(如 Wikipedia) 有标注的 NLI 数据集(如 MNLI)
监督信号 有(entailment/contradiction)
训练稳定性 对 batch size、dropout 敏感 更稳定,有明确正负标签

SimVLM VLM领域的对比学习

随着视觉与文本联合建模技术的不断进展,视觉-语言预训练(Vision-Language Pretraining, VLP)在众多多模态下游任务中已取得显著成果。然而,现有方法通常依赖高成本的标注数据,如干净的图文描述和区域标签,这极大限制了其可扩展性。此外,为适配不同数据集目标而引入的多种任务目标,也使得预训练过程变得更加复杂。

在 VLP 领域,虽然提出了多种不同方法,但其中很大一部分都需要引入目标检测模型,来回归图像区域特征或进行标签预测,作为预训练任务的一部分。这类方法通常依赖于如 Fast R-CNN 或 Faster R-CNN 等强大的目标检测器,而这些检测器本身也需依赖人工标注数据进行训练。将这类标注数据作为预训练的前置条件,既增加了训练流程的成本,也进一步限制了方法的扩展性。

尽管近期已有部分研究尝试摆脱目标检测模块,但这类方法多仅依赖于小规模、干净的图文数据,因此其零样本能力受到限制。另一方面,多数方法还提出了跨模态损失函数,但这些损失往往与图像描述生成、掩码语言建模等其他目标混合使用,从而形成复合的预训练损失。这种多任务、多数据集的组合增加了权重平衡与优化的难度。

因此,早期的视觉-语言预训练方法大致可归为两类:一类通过引入中间的 CV 任务,另一类则构造复杂的跨模态损失。SimVLM 则试图简化这一预训练流程。

与先前工作不同,SimVLM 利用大规模弱监督图文对,采用单一的前缀语言建模(Prefix Language Modeling)目标实现端到端训练,显著降低训练复杂度。在不依赖额外数据或任务定制的前提下,该模型在多种判别式与生成式视觉-语言任务上超越已有方法,达到了新的 SOTA 水平。

image-20250518212850869

受益于语言建模损失(LM loss)在预训练中所展现出的零样本能力,作者提出使用前缀语言建模(Prefix Language Modeling,PrefixLM)对视觉-语言表征进行预训练。PrefixLM 相较于标准语言建模的区别在于:它允许对前缀序列(如公式中的 )进行双向注意力建模,而仅对剩余部分(如 )进行自回归建模。在预训练过程中,会从输入序列中截取一个随机长度为 的前缀,训练目标如下:

image-20250518223149220

直观来看,图像通常在网页等真实文档中出现在文本之前,因此可将图像视为文本的前缀。对于给定的图文对,模型将图像特征序列(长度为 )置于文本序列之前,并设定前缀长度 ,使得损失函数仅对文本部分进行语言建模(图 1 中提供了示意)。相比传统的掩码语言建模(MLM)风格的视觉-语言预训练方法,PrefixLM 在序列到序列框架下不仅具备 MLM 式的上下文建模能力,还具备语言模型(LM)的文本生成能力。

模型主干采用 Transformer 架构,因其在语言与视觉任务中均表现出色。与标准语言模型不同,PrefixLM 允许在前缀内进行双向注意力,因此可兼容仅使用解码器(decoder-only)或编码-解码器(encoder-decoder)的序列到序列模型。实验发现,编码-解码结构所引入的 inductive bias(将编码与生成过程解耦)对于提升下游任务性能具有积极作用。

在视觉模态方面,受 ViT 启发,模型将输入图像 划分为一维序列形式的图像 patch:,其中 为 Transformer 层的隐藏维度, 是图像分块后的 token 数, 为 patch 大小。模型使用 ResNet 的前三个卷积模块提取上下文相关的图像 patch,这种方式被证明优于 ViT 中使用的简单线性投影(即 卷积),与 Xiao 等人的观察结果一致。

在文本模态方面,还是和正常模型一样。为了保留位置信息,模型为图像与文本输入分别引入了两个可学习的一维位置编码,并在 Transformer 层中为图像 patch 增加了二维相对注意力机制。

与以往需要两个预训练阶段和多个辅助目标的 VLP 方法相比,SimVLM 仅需一次性预训练,并在端到端的框架下使用单一的语言建模损失函数。这种设计大大简化了训练流程,因此被命名为“Simple Visual Language Model”(SimVLM,简洁视觉语言模型)。

Comments