想象一下,你正在构建一个图像分类器,但每次想要识别新的一组类别时,都不需要重新训练它。与其为“伯恩山犬”或“停止标志”等特定类别收集数千张带标签的照片,不如你只需告诉模型: “一张{label}的照片”,它就能理解。这就是 CLIP (Contrastive Language–Image Pre-training) 的承诺,它是 OpenAI 的一个简单但强大的想法: 通过对从网上抓取的 (图像,标题) 对进行训练,学习联合的图像-文本嵌入,然后将自然语言用作零样本分类的接口。

本文将带你了解 CLIP 的核心思想、为什么语言监督是一个引人注目的方向、模型如何训练,以及它能做什么和不能做什么。本文面向具有一定机器学习背景的本科生和硕士生,将涵盖对比损失背后的数学原理、实际设计选择以及主要的实验发现,并配有原论文中的图示。

CLIP 的功能 (一览)

  • 在一个包含 4 亿个从网上收集的 (图像,文本) 对的数据集( WIT 数据集) 上联合训练图像编码器和文本编码器。
  • 使用对比目标,使得匹配的图像-文本对具有相似的嵌入,而不匹配的对则不相似。
  • 在测试时,它通过文本编码器将语言描述 (例如,“一张狗的照片”) 转换为分类器权重,从而实现向新数据集的零样本迁移。

CLIP 方法概览

图 1. 我们方法的概览。标准的图像模型通常联合训练图像特征提取器和线性分类器来预测某些标签,而 CLIP 联合训练了一个图像编码器和一个文本编码器以预测一批 (image, text) 训练样本中的正确配对。在测试时,学习到的文本编码器通过嵌入目标数据集类别的名称或描述来合成一个零样本线性分类器。

背景: 为何要从语言中学习?

近期大型预训练语言模型 (如 GPT 系列和 BERT )的成功表明,在网络文本上进行大规模的任务无关预训练可以捕获广泛的能力,并迁移到许多任务中。 CLIP 的作者提出了一个问题: 通过在与图像共现的自然语言上进行训练,我们能否为视觉领域带来类似的“任务学习”优势?

为何这很有吸引力:

  • 自然语言无需显式、精心策划的标签即可捕获海量的视觉概念。
  • 训练好的文本编码器提供了一种描述新类别的灵活方式——这与为预定标签集训练的固定 softmax 分类器不同。
  • 与手动标记的图像数据集相比,互联网规模的图像-文本对非常丰富。

但先前的工作面临两个挑战: (1) 早期的标题预测方法效率低下且难以扩展;(2) 直接预测精确的标题词汇很困难,因为真实的标题是嘈杂且多样化的。因此, CLIP 团队选择了一种对比目标,该目标预测批次中哪个标题与哪个图像匹配——这是一个更容易的信号,并且易于扩展。

核心方法: 图像与文本之间的对比学习

CLIP 的核心是应用于图像-文本对的对比学习目标。该模型包含两个部分:

  • 一个图像编码器 \(f_v(\cdot)\),将图像映射到一个 \(d\) 维特征向量。
  • 一个文本编码器 \(f_t(\cdot)\),将文本字符串映射到一个 \(d\) 维向量。

两个输出都被线性投影并进行 \(L_2\) 归一化,以获得一个共享的嵌入空间。在训练期间,给定一个包含 \(N\) 个 (图像, 文本) 对的批次, CLIP 最大化 \(N\) 个正确配对的余弦相似度,同时最小化批次中不正确配对的 \(N^2 - N\) 个相似度。形式化表示:

  • 令 \(I_f = f_v(\text{images})\) 和 \(T_f = f_t(\text{texts})\)。
  • 然后将它们投影到嵌入向量,并进行 \(L_2\) 归一化,得到 \(I_e\) 和 \(T_e\) (每个形状为 \(N \times d\),行向量长度为 1) 。

相似度矩阵 \(S\) 为:

\[ S = I_e \, T_e^\top \]

这些成对的余弦相似度被一个温度参数 \(\tau\) (在训练期间学习得到) 缩放,以形成 logits:

\[ \mathrm{logits}_{ij} = \frac{1}{\tau} \, (I_e)_i \cdot (T_e)_j \]

训练旨在最小化对称交叉熵 (InfoNCE 风格) 损失: 对于每张图像,正确的文本应具有最高的 logit,反之亦然,对于每个文本,正确的图像也应具有最高的 logit。

如果我们用 \(y_i = i\) 表示 \(i \in \{1,\dots,N\}\) 的正确配对标签,则损失为:

\[ \mathcal{L} = \frac{1}{2} \left( \frac{1}{N} \sum_{i=1}^{N} -\log \frac{\exp(\mathrm{logits}_{i,i})}{\sum_{j=1}^{N} \exp(\mathrm{logits}_{i,j})} \;+\; \frac{1}{N} \sum_{j=1}^{N} -\log \frac{\exp(\mathrm{logits}_{j,j})}{\sum_{i=1}^{N} \exp(\mathrm{logits}_{i,j})} \right) \]

直观理解: 将批次中的其他 \(N-1\) 个文本视为对每张图像的负样本,反之亦然。使用非常大的批次,可以提供丰富的负样本集,使对比信号更有效。核心训练循环可以概括为: 提取图像和文本特征,投影和归一化,计算成对点积,用 \(\tau\) 缩放,然后优化对称交叉熵损失。

架构选择

  • 图像编码器: 作者尝试了 ResNets (特别是带注意力池化的 ResNet-D 变体) 和 Vision Transformers (ViT) 。他们发现 ViTs 在大规模训练时通常能实现更好的计算效率。
  • 文本编码器: 一个 Transformer (类似于 GPT 风格架构) ,从头开始训练 (小写 BPE,49,152 词汇量,最大长度 76) ,使用 [EOS] 标记的表示作为文本特征。
  • 投影: 简单的线性投影到共享嵌入空间 (无 MLP 投影头) 。
  • 训练技巧: 非常大的小批量 (32,768!) 、混合精度、梯度检查点和可学习的对数尺度温度参数 \(\tau\)。

为何选择对比学习而非标题生成?

论文表明,预测精确词汇 (标题生成) 成本高昂且学习有用的类别表示速度慢,而对比学习识别哪个标题与哪个图像匹配,则更能容忍标题中的噪声,并且在产生可迁移特征方面效率更高。图 2 展示了 CLIP 的对比目标在零样本 ImageNet 迁移上相比于标题式目标的效率优势。

CLIP 对比式目标的效率比较

图 2. CLIP 在零样本迁移上比我们的图像描述基线高效得多。 尽管表达能力很强,但我们发现基于 Transformer 的语言模型在零样本 ImageNet 分类上相对较弱。在这里,我们看到它比预测文本的词袋编码 (BoW,Joulin 等,2016) 学得慢约 3 倍。将预测目标换成 CLIP 的对比目标后,效率又提高了约 4 倍。

规模化: 数据与计算的故事

CLIPWIT (WebImageText) 数据集上进行了训练,该数据集包含 4 亿个 (图像, 文本) 对,是通过查询大量网络词汇 (约 50 万次查询) 并收集匹配的图像-文本对构建的。作者训练了一系列模型,涵盖了广泛的计算范围: 从 RN50RN50x64ResNet 变体以及 ViT 模型,所有模型都训练了 32 个 epoch。在这种规模下,过拟合的担忧较少,并且对比目标被证明是高效的。

利用语言构建零样本分类器

这是 CLIP 实现的一个巧妙的实用技巧: 你可以通过文本编码器嵌入标签描述 (文本提示) ,缓存这些嵌入,然后通过计算图像与每个文本嵌入的余弦相似度来对图像进行分类,从而为任何一组标签构建分类器。文本编码器有效地生成了分类器权重——它是一个超网络,根据语言生成线性分类器权重。

  • 示例提示: “一张{label}的照片。”
  • 你可以通过平均多个提示 (例如,“一张小型{label}的照片。”,“一张大型{label}的照片。”) 的文本嵌入来集成多个提示,以提高鲁棒性。

提示工程和集成能带来显著的收益: 对于 ImageNet,集成 80 个提示可以将准确率提高约 3.5%——当分摊到大量预测时,这几乎是免费的。图 4 量化了提示工程和集成带来的收益,并与不带上下文地嵌入类名的简单基线进行了比较。

提示工程与集成对零样本性能的影响

图 4. 提示工程和集成能提升零样本性能。 相较于只使用无上下文的类名基线,提示工程与集成在 36 个数据集的平均零样本分类性能上提升了近 5 个百分点。这一提升类似于用基线零样本方法使用 4 倍更多计算得到的增益,但当在大量预测上摊销时它是“免费”的。

关键实验与结果

1) 跨多个数据集的零样本迁移

CLIP 的评估不是在每个目标上进行微调,而是通过零样本迁移: 对于每个下游数据集,标签名称被转换为提示 (通常带有一些手工调整的上下文模板) ,通过文本编码器进行嵌入,并用作分类器权重。

亮点:

  • 在 ImageNet 零样本任务上,最佳 CLIP 模型 (ViT-L/14@336px) 达到了 76.2% 的 top-1 准确率——大致相当于在 ImageNet 上训练的 ResNet-50 (未使用 ImageNet 训练数据) 。
  • 在一个包含 30 多个数据集 (物体识别、细粒度类别、OCR、地理定位、动作识别等) 的大型套件中, CLIP 实现了显著的迁移能力,并且在线性探测设置下通常优于全监督基线。

论文中的表 1 将 CLIP 与早期的零样本方法 Visual N-Grams 进行了比较,显示在 aYahoo、ImageNet 和 SUN 等数据集上有了大幅提升:

CLIP 与此前零样本迁移图像分类结果的比较

表 1. 将 CLIP 与此前的零样本迁移图像分类结果进行比较。CLIP 在所有三个数据集上的性能都有大幅提升。这种改进反映了自 Visual N-Grams (Li 等,2017) 以来 4 年间的许多进步。

图 5 可视化了零样本 CLIP 在 27 个数据集套件上与在 ResNet-50 特征上训练的全监督线性分类器相比具有竞争力——CLIP 在 27 个数据集中赢得了 16 个。

零样本 CLIP 与完全监督基线的竞争力

图 5. 零样本 CLIP 在竞争完全监督的基线。 在 27 个数据集的评估套件中,零样本 CLIP 分类器在 16 个数据集上优于基于 ResNet-50 特征训练的完全监督线性分类器,包括 ImageNet。

2) 少样本与数据效率

一个令人惊讶的发现: 零样本 CLIP 的平均表现通常与在相同表示空间上训练的 4-shot 线性探测器相当,并且在某些模型上接近最佳的 16-shot 表现。这表明用语言表达概念可以和提供少量标记示例一样具有信息量。

图 6 展示了零样本 CLIP 与跨数据集的少样本线性探测器的比较:

零样本 CLIP 优于少样本线性探测器

图 6. 零样本 CLIP 优于少样本线性探测器。 零样本 CLIP 的平均表现相当于在相同特征空间上训练的 4-shot 线性分类器,并且在公开模型上几乎接近 16-shot 线性分类器的最佳结果。对于 BiT-M 和 SimCLRV2,标注了表现最好的模型。浅灰色线条代表评估套件中的其它模型。此次分析使用了每类至少有 16 个样本的 20 个数据集。

为了量化零样本的“数据效率”,作者估计了少样本线性分类器需要多少每类样本才能匹配零样本 CLIP 的表现。结果因任务而异——在某些数据集上,零样本相当于每类少于 1 个标记样本;而在其他数据集上,则需要几十个。图 7 显示了这种可变性 (中位数约为每类 5.4 个样本,均值约为 20.8) 。

零样本迁移的数据效率差异很大

图 7. 零样本迁移的数据效率差异很大。 通过计算在相同 CLIP 特征空间上训练的线性分类器需要多少标注样本数才能匹配零样本分类器,我们可以量化零样本迁移的有效性。估算基于对 1、2、4、8、16-shot (若可用) 和完全监督结果的对数线性插值。性能在数据集间差异很大,从在两个数据集上仍不如一-shot 分类器,到估计每类需要 184 个标注样本不等。中位数约为每类 5.4 个样本,均值约为 20.8。

3) 规模化行为

CLIP 的零样本性能在广泛的模型范围内随着模型计算量的增加而平滑扩展——这与语言模型中的规模化观察类似。图 9 绘制了 ResNet 模型上的平均零样本误差与 GFLOPs 的关系图,显示出一种对数-对数线性趋势。

零样本 CLIP 性能随计算量平稳扩展

图 9. 零样本 CLIP 性能随模型计算量平稳扩展。 在 36 个不同数据集上的 39 次评估中,平均零样本错误率在 44 倍的计算范围内 (跨越 5 个不同 CLIP 模型) 呈现对数-对数线性趋势。浅色线条是各个评估的性能,显示尽管总体趋势平滑,个别评估的性能更加多变。

4) 表示学习 (线性探测评估)

除了零样本, CLIP 的学习特征通过在冻结的表示上训练线性分类器并测量跨多个数据集的迁移能力来评估。在一个扩展的 27 数据集基准上, CLIP 模型 (尤其是大型 ViT) 在计算效率和绝对性能方面通常优于其他模型。图 10 展示了 CLIP 与最先进模型相比的线性探测平均性能。

CLIP 模型相对于最先进视觉模型的线性探测性能

图 10. CLIP 模型的线性探测性能与最先进的计算机视觉模型相比,包括 EfficientNet (Tan & Le, 2019; Xie et al., 2020) 、MoCo (Chen et al., 2020d) 、Instagram 预训练的 ResNeXt 模型 (Mahajan et al., 2018; Touvron et al., 2019) 、BiT (Kolesnikov et al., 2019) 、ViT (Dosovitskiy et al., 2020) 、SimCLRv2 (Chen et al., 2020c) 、BYOL (Grill et al., 2020) 和原始 ResNet 模型 (He et al., 2016b) 。(左) 分数是对 Kornblith 等 (2019) 研究的 12 个数据集取平均。 (右) 分数是对包含更多分布类型的 27 个数据集取平均。虚线表示在预训练时或评估时使用了比预训练更高分辨率图像的模型。

图 11 进一步展示了 CLIP 的特征在许多数据集 (21/27) 上优于 Noisy Student EfficientNet-L2,尤其是在 OCR、地理定位和动作识别任务上取得了显著的提升。

CLIP 的特征在多种数据集上优于最佳 ImageNet 模型的特征

图 11. CLIP 的特征在多种数据集上优于最佳 ImageNet 模型的特征。 在 CLIP 的特征上拟合线性分类器,比在 Noisy Student EfficientNet-L2 的特征上拟合获得更好的结果,在 27 个数据集中有 21 个数据集表现更好。

5) 对分布偏移的鲁棒性

最引人注目的结果之一是 CLIP 对自然分布偏移的鲁棒性。在 ImageNet 上训练或微调的模型,在评估自然变体 (ImageNetV2ImageNet-SketchObjectNet 等) 时通常会遭受显著的性能下降。零样本 CLIP 显著减小了这种“鲁棒性差距”: 模型在面对这些偏移分布时,能保持更高的准确率。

图 13 将零样本 CLIP 与标准 ImageNet 模型在几个自然分布偏移上的表现进行了比较; CLIP 将差距缩小了最多 75%。

零样本 CLIP 对分布偏移的鲁棒性

图 13. 零样本 CLIP 比标准 ImageNet 模型对分布偏移更具鲁棒性。 (左) 理想的鲁棒模型 (虚线) 在 ImageNet 分布和其他自然图像分布上表现相近。零样本 CLIP 模型将这一“鲁棒性差距”缩小了最多 75%。对数几率变换值上的线性拟合并给出自助法估计的 95% 置信区间。 (右) 可视化了香蕉类别在 7 个自然分布偏移数据集中 5 个共享数据集上的分布偏移。将表现最好的零样本 CLIP 模型 ViT-L/14@336px 与在 ImageNet 验证集上具有相同步骤的模型 ResNet-101 做了比较。

有趣的是,当 CLIP 通过监督线性分类器适应 ImageNet 训练数据时,其 ImageNet 准确率大幅提高 (约 9.2%) ,但其在偏移数据集上的平均鲁棒性略有下降——这表明对 ImageNet 分布的过拟合解释了其他模型中看到的差距。图 14 探讨了适应目标分布与鲁棒性之间的权衡。

对 ImageNet 进行监督适配对鲁棒性的影响

图 14. 虽然对 ImageNet 进行监督适配将 ImageNet 准确率提高了约 9.2%,但它会略微降低平均鲁棒性。 (左) 针对每个数据集自定义零样本 CLIP 比使用单一静态的零样本 ImageNet 分类器并在相似类别间汇总预测 (如 Taori 等,2020) 更能提升鲁棒性。适配到 ImageNet 的 CLIP 模型与此前最好的 ImageNet 模型具有相似的有效鲁棒性。 (右) 展示了两种鲁棒性干预措施对每个数据集准确率变化的详细信息。适配到 ImageNet 明显提高了 ImageNetV2 的准确率,但在其它若干分布上有所牺牲。针对具体数据集的零样本分类器可以显著提高准确率,但仅限于那些类别与 ImageNet 类别并非完全对齐的数据集。

6) 定性零样本预测

论文中的图 21 可视化了 CLIP 在一系列零样本提示下的随机零样本预测示例。这能让人了解模型的定性行为——当文本清晰渲染时,它可以执行类似 OCR 的任务,但在某些细粒度或非常专业的类别上会遇到困难。

36 个 CLIP 零样本分类器预测的可视化

图 21. 来自 36 个 CLIP 零样本分类器的预测可视化。所有示例均为随机抽取,唯独对仇恨表情包 (Hateful Memes) 重新抽取以避免冒犯性内容。展示了前 5 个类别的预测概率以及用于表示该类别的文本。当使用多个模板时,显示第一个模板。正确标签为绿色,错误预测为橙色。

局限性与失败模式

CLIP 是一个重大的进步,但它也有重要的局限性:

  • 跨任务表现不均衡: CLIP 在某些细粒度数据集 (一些花卉/飞机类别) 、计数任务 (CLEVRCounts) 以及与训练数据分布相距甚远的任务 (例如,手写 MNIST;原始像素上的 \(L_2\) 逻辑回归可以在 MNIST 上击败零样本 CLIP )上表现困难。
  • 零样本与少样本不匹配: 人类从一两个标记示例中获益良多; CLIP 的简单少样本方法 (基于特征的线性分类器) 无法匹配人类的单样本学习表现。作者建议,更好地整合先验知识或将零样本作为强先验是很有前景的方向。
  • 数据集污染的担忧: 在海量网络数据上训练,可能会导致评估图像出现在训练集中。作者进行了重复数据检测分析,报告了较低的重叠率 (中位数约 2.2%) ,对总体报告数字影响甚微 (通常 \(\leq\)0.1% 的变化) 。图 17 记录了只有少数数据集显示出统计学上显著的污染效应。

由于检测到的数据重叠导致准确率显著提高的统计结果

图 17. 由于检测到的数据重叠导致的准确率显著提高的情况很少。 (左) 尽管若干数据集在检测到的重叠样本与干净样本间的零样本准确率上表现出高达 ±20% 的表面差异,但在 35 个数据集中只有 5 个数据集的 99.5% Clopper-Pearson 置信区间排除了 0% 的准确率差异。其中 2 个数据集在重叠数据上表现更差。 (右) 由于检测到的重叠样本比例几乎总是在个位数,因此总体测试准确率因重叠带来的提升要小得多,估计的最大增加仅为 Birdsnap 上的 0.6%。同样地,仅在 6 个数据集中,当使用单边二项检验计算时,准确率提升是具有统计显著性的。

伦理考量与偏见

CLIP 从未经过滤的互联网文本和图像中学习,这反映并可能放大社会偏见。作者在人脸数据集 (FairFace) 和敏感标签集 (与犯罪相关的或非人化的标签) 上对 CLIP 进行了探测,发现了令人担忧的差异: 例如,在某些标签集下,某些人口群体不成比例地被错误分类为非人类或犯罪类别。图 18 可视化了在使用商业视觉 API 返回的标签时,国会成员数据集中男性和女性图像之间的标签分布差异;这些差异说明了类别设计和阈值如何放大偏见。

CLIP 在国会成员图像上的性能显示出按性别划分的标签分布

图 18. CLIP 在国会成员图像上的表现,当使用 Google Cloud Vision、Amazon Rekognition 和 Microsoft Azure Computer Vision 返回的组合标签集时。使用 \(\chi^2\) 检验并以 0.5% 为阈值,识别出对男性和女性性别区分最大的 20 个标签。标签按绝对频率排序。条形表示某一标签在不同性别图像上的百分比。

更广泛的影响: 监控、身份与滥用

  • CLIP 可以轻松地通过语言“自行构建”分类器,降低了为小众或敏感任务创建定制分类器的门槛。这既可以实现良性应用 (图像搜索、可访问性) ,也可能带来有害应用 (未经仔细评估的监控) 。
  • CLIP 具有显著的零样本身份识别能力 (CelebA 实验在 100 个类别上显示出约 59% 的 top-1 准确率) ,即使没有针对特定任务进行微调——这对隐私和监控风险而言是一个重要考虑。

总结: CLIP 为何重要

为什么 CLIP 令人兴奋?

  • 语言是一种富有表现力、可扩展的监督信号。 CLIP 没有将系统限制在固定的标签分类法中,而是利用世界上的自然描述来学习广泛有用的视觉概念。
  • 这种方法出奇地简单且能优雅地扩展: 在大型网络数据集上使用非常大的批次进行对比学习,可以得到能够以零样本方式泛化到许多任务的模型。
  • CLIP 改变了视觉系统的接口: 自然语言成为指定任务的方式,实现了灵活的零样本迁移,无需模型重新训练。

未来的工作应关注哪些方面?

  • 提高数据和计算效率,以便能够使用更少的硬件和网络规模资源来训练类似 CLIP 的能力。
  • 更好地结合零样本先验和少样本适应,以缩小与人类样本效率的差距。
  • 研究如何减少和缓解因未经过滤的网络数据而产生的社会偏见,并为安全部署开发标准化的描述和基准。

附录: 另外两个视觉总结

  • 图 8 显示零样本性能与线性探测性能高度相关 (\(r \approx 0.82\)),但通常低 10-25 个点——这表明通过语言监督改进任务学习仍有提升空间。

零样本性能与线性探测性能的相关性

图 8. 零样本性能与线性探测性能相关,但仍大多存在不足。比较跨数据集的零样本与线性探测性能表明两者高度相关,但零样本性能通常低 10 到 25 个点。仅在 5 个数据集中,零样本性能接近线性探测性能 (差异 \(\leq\) 3 个点) 。

  • 图 20 (论文中) 绘制了跨多个模型的每个数据集的线性探测性能;如果你想了解特定数据集的详细比较,请参考它。

各模型在每个数据集上的线性探测性能

图 20. 对 27 个数据集绘制的线性探测性能,使用表 10 中的数据。

结论

CLIP 证明了一个强大的理念: 在 (图像, 文本) 对上进行大规模对比学习,可以产生灵活、可迁移的视觉表示,这些表示通过语言理解许多视觉概念。这实现了一种新型的零样本泛化,其中自然语言充当指定任务的接口。该方法易于规模化,在许多领域都表现出色,并开启了令人兴奋的研究方向——既有技术上的 (提高效率和少样本行为) ,也有社会层面的 (管理偏见、隐私和滥用) 。作为一项学习练习,在一个精心策划的图像-标题数据集上训练一个小型 CLIP 式模型是一个非常有启发性的项目: 它结合了表示学习、对比目标和提示工程的实践艺术。这类视觉系统的灵活性和能力引发了重要的伦理问题,值得仔细考虑和持续研究。