CLIP学习笔记:Learning Transferable Visual Models From Natural Language Supervision
Multimodal pre-trained model CLIP: Acquiring Transferrable Visual Models Through Natural Language Supervision. Derived from natural language supervision, the CLIP model acquires transferrable visual models.
-
摘要
- 1. 引言
- 2. 方法
- 2.1 自然语言处理中的监督学习任务被系统性地分解为多个基础性任务。
- 2.2 通过构建大规模的数据集来提供充足的训练样本。
- 2.3 采用先进的预训练技术以提升模型的基础能力。
- 2.4 优化模型的结构参数与超参数配置。
- 2.5 通过逐步优化损失函数使其稳定收敛至理想状态。
-
3. 实验
-
3.1 Zero Shot 迁移
-
3.1.1 与Visual N-Grams的对比
- 基于提示工程和集成的方法
- CLIP在Zero Shot分类中表现如何
- CLIP在Few Shot分类中的应用情况
-
3.2 表示学习
-
- 3.2.1 与SOTA模型对比
- 3.2.2 与Noisy Student EfficientNet-L2 对比
-
3.3 对自然分布偏移的鲁棒性
-
-
4. 与人的表现对比
-
5. 数据重叠分析
-
6. 局限性
-
7. 总结
-
学术资源出处:https://arxiv.org/abs/2103.00020
软件开发位置:https://github.com/OpenAI/CLIP
学术视频解析:CLIP论文逐段精读
摘要
当前最先进的计算机视觉系统经过训练以预测一组提前定义好的物体类别。
1. 引言
- 近年来,在NLP领域中直接从原始文本中学习的预训练方法已经带来了革命性的影响。无论是基于自回归预测的自监督学习还是基于掩码完形填空的方法,在这些与下游任务无关的目标上进行训练(计算资源、模型容量和数据规模均实现了多个数量级的增长),模型的能力也得到了显著提升。通过"文本进文本出"的方式并利用自监督信号进行模型训练的方法使得预训练好的模型能够实现zero-shot迁移至下游任务中(无需针对特定任务设计输出头或对特定数据集进行特殊处理)。一些先进的NLP模型(例如BERT、GPT)正是利用大规模无监督数据实现了这一目标,在多个下游任务中表现优异(甚至超越了基于人工标注的数据集所训练的模型)。
- 现有的计算机视觉(CV)模型主要依赖于人工标注的数据集进行训练(例如ImageNet),这些模型通常只能识别已知的图像类别(对于未曾见过的新类别的图像无法直接识别),这就限制了其可迁移性和泛化能力的表现。然而文本能够提供额外的信息,在计算机视觉领域能否通过直接从文本中学习构建一种扩展的预训练方法来实现类似突破呢?
- 在使用自然语言监督进行图像表示学习的研究方面目前成果尚不显著,并且效果往往不如有监督学习的模型表现理想。作者认为其中一个关键原因是现有研究在这一领域的样本规模较为有限。
2. 方法
本文开发了结合语言与图像预训练模型Contrastive Language-Image Pretraining(CLIP)。该体系结构较为简单明了地基于经典的双塔架构设计。在训练过程中,CLIP协同优化了图像编码器与文本编码器以实现一批样本中的正确配对关系。在测试阶段,则利用学习后的文本编码器从目标数据集的类别信息中提取特征并构建零样本线性分类器。
训练:
每个批次中包含N个图像-文本配对;这些配对的图像-文本就是正样本;而未配对的就是负样本;这样就能获得N组正样本以及(N²−N)组负样本;在特征矩阵中;剩下的非主对角线上的元素全部属于负样本;模型可以通过对比学习的方式进行训练;完全不需要任何人工标注。
首先,在图像编码器中输入图像,在文本编码器中输入文本。接着,在经过线性变换层后,从两个编码器中获得的图像与文本特征被映射至同一嵌入空间。随后,在对提取的特征向量进行L2归一化处理后保证了数据在尺度上的一致性。其中I_1…I_NT_1…T_N$分别代表一个批次中的所有图像与对应的文本的嵌入表达式。
随后将图像嵌入特征与文本嵌入特征进行矩阵相乘操作,并计算任意两者的余弦相似度。通过联合优化图像编码器与文本编码器的学习过程,在多模态嵌入空间中寻求最大化N组正样本配对间的余弦相似度的同时,则尽量减少其余N²-N组负样本配对间的余弦相似度。
对于每个图像输入沿行轴相当于一个分类器而言,在这种设置下

推理:
取ImageNet数据集为例,在CLIP模型中使用了图中使用的文本编码器与图像编码器组合而成的整体架构设计;旨在将来自ImageNet的数据集进行分类任务;大多数数据集中的标签通常是以单一单词形式给出;而在预训练过程中,默认使用的是完整的句子描述;为了适应这一分布差异;需要将单个词标签扩展成完整的描述形式;如图所示;可以采用"一张图片展示着{object}"的形式作为输入端内容;其中{object}即为目标识别对象名称;
通过文本编码器和L2标准化处理后获得一系列向量表示集合{T₁, T₂,…, T_N};同时对需要进行预测的图像应用图像编码器并进行标准化处理以生成其对应的向量表示I₁;随后计算I₁与{T₁, T₂,…, T_N}之间的余弦相似度;其中具有最高相似度的就是该待预测图像对应的原始文本数据。

2.1 自然语言监督
本文方法的主要创新点是基于监督学习完成文本分析。相较于传统方法而言, 从自然语言中学习具有哪些潜在的优势: 首先, 该种方式能够有效捕捉复杂的人类认知模式; 其次, 其适应性强, 能够根据实际数据进行调整; 最后, 其结果具有较高的可解释性, 便于后续优化与改进.
与用于图像分类的标准标签相比,在自然语言处理领域实现扩展要更为容易, 这是因为该系统无需采用经典的机器学习兼容标注格式
相较于大多数基于无监督或自监督的学习方法而言,自然语言处理不仅掌握了一种表征方式,并且将其与语言特性相联系,进而支持零样本学习的语言模型具备良好的迁移能力。
2.2 创建足够大的数据集
本文创建了新的WebImageText(WIT)数据集... 该集合包含了来自互联网上可获取的各种公开资源中提取的四亿对图像-文本配对... 这些配对都基于与图片相关联的完整句子... 而不仅仅是单独的单词... 因此从而提供了丰富的自然语言学习素材
由于WIT数据集足够庞大,因此单一的数据增强技术仅限于随机性地进行裁剪操作。
2.3 选择一种有效的预训练方法
作者发现训练效率对于多模态预训练的成功是非常重要的。

图中的蓝色线条基于Transformer模型用于图像到文本的推断;橙色线条采用了词袋模型进行预测;绿色线条则采用了CLIP模型进行对比学习。
使用基于Transformer架构的预测型任务(如OpenAI的GPT模型)旨在根据输入图像生成相应的文本描述。然而一张图片通常可以被多种不同的方式描述,在这种情况下这些文本之间的差异性非常显著。若采用该类预训练方法进行模型训练,则存在大量的可能性需要考虑。
词袋预测并不需要对句子中的每个词都进行精确的顺序和位置预测,在这种方法下只需识别出这些词语即可,并且即使这些词语出现的顺序有所颠倒也不会影响结果的有效性。例如,在处理一张图片时,只要模型能够识别并输出如"cat"、"my"和"cute"等词汇(尽管它们的位置可能有误),这种情况下结果同样被视为正确。与之相比,在保持原有架构的前提下(如基于Transformer的模型),采用该方法可以使整体处理效率提升到原来的3倍左右。
将此任务转化为对比型的任务后,则只需判断这张图片与这段文本是否匹配。这一约束条件变得更为宽松。研究表明,在目标函数由预测转向对比时,训练效率提升了4倍。这表明基于对比学习的方法在提升训练效率方面表现出色。
2.4 选择和缩放模型
模型的选择:
图像编码器采用了两种结构:
基于ResNet-50构建基础架构,并对其进行了双重改进措施;取代了传统全局平均池化层;其中池的操作由单层Transformer-style架构实现,该架构采用多头QKV注意力机制。
(2)对Vision Transformer实施轻微的调整,在Transformer之前的pixel-wise和位置编码中添加了一个新的归一化层,并采用了稍有不同的初始化策略。
该编码器模块基于Transformer架构设计。其规模参数共计63 million parameters,并包含12层隐藏层,并且每层的宽度为512个单元格。该架构还具备8个独立的注意力头机制。
模型的缩放:

2.5 训练
作者总共实施了5种ResNets模型和3种Vision Transformers模型进行训练,并经历了超过一定数量 epoch 的学习过程,并采用了超大规模 min-batch 设置
五种ResNets包括ResNet-50、ResNet-101以及基于EfficientNet风格的模型缩放策略下的RN50x4、RN50x16和RN50x64架构。(其中RN50x4、RN50x16和RN50x64均采用了与基础ResNet-50计算量成比例的扩展策略
3个Vision Transformers:ViT-B/32、ViT-B/16 和ViT-L/14。(这里的32、16、14指的是patch的大小)
3. 实验
3.1 zero-shot 迁移
3.1.1 与Visual N-Grams对比
作者对比分析了CLIP与Visual N-Grams在zero-shot迁移场景下的图像分类效果,并指出Visual N-Grams是首次将zero-shot迁移技术应用于图像分类任务的研究模型。从表中可以看到,CLIP显著提升了这三个数据集上的分类性能,值得注意的是,CLIP无需微调的情况下在ImageNet上的表现与ResNet-50基本相当

3.1.2 Prompt Engineering and Ensembling
作者还评估了使用prompt的有效性。在本文中所指的prompt是提示上下文,并承担着指示作用。同时它也负责引导文本的作用
对于某些数据集而言,在单独使用一个标签的情况下无法充分表征图像信息。同一术语在不同数据集中的含义可能存在差异(例如,在 Oxford-IIIT Pets 数据集中,“boxer”一词被识别为狗的一种动物类别,在另一些数据集中则指代拳击运动员)。这种术语的多义性往往源于对标签上下文背景缺乏明确描述所致
一般情况下,在数据集中用于描述图片内容的文本通常不是单个单词,而是完整的句子。
针对上述两个主要问题,研究者设计了一个十分简单的方案来实现prompt engineering。具体而言,他们通过构建一个提示模板将标签词扩展为完整的句子,并根据不同的应用场景进行相应调整以提升性能。例如,在处理Oxford-IIIT Pets数据集时(如A photo of a {label}),其中{label}代表不同的类别标签;而在OCR任务中(如寻找特定的文字或数字),可以在提示中加入双引号以限定目标内容。
作者采用了prompt ensembling的方法处理文本内容。在此处尝试将多个零样本分类器集成到同一系统中。这些分类器采用不同提示模板构建各自的特征向量。因为集成操作发生在向量空间而非概率空间中,从而降低了计算开销。实验结果表明,在大多数数据集上应用这种技术能够显著提升模型性能。

横轴代表模型计算能力,在不同数据集上进行比较时采用了平均得分作为评价指标;其中绿色曲线显示本文通过prompt工程化和集成方法获得的结果;而蓝色曲线则基于无提示上下文直接命名类别的结果。
从图表数据可以看出,在计算能力达到75.3时(C=75.3),采用提示(Prompt)模型所获得的结果平均分高出约5个百分点;而当平均分达到55%(F1=0.64)时,在不使用提示的情况下所需计算能力将需提升约4倍(即从C=69增至C=108),才能与采用提示方法的效果持平。这一发现表明,在提供标签上下文信息方面的能力显著提升了模型实现zero-shot任务的效果。
3.1.3 CLIP的zero-shot分类
为了评估CLIP在zero-shot分类任务中的表现如何,研究者采用了27个公开数据集进行实验,并通过对比分析展示了CLIP与基于ResNet-50进行Linear Probe时的表现比较。
该方法指的是将一个已经预先经过训练好的模型保持不变状态,并仅从其中抽取特征来实现监督学习任务中的分类目标。
具体而言,在ImageNet数据集上采用监督式的方式对ResNet50进行预训练后,
随后去除其最后的全连接层,
将其剩余部分作为特征提取器,
并在此基础上对各个下游任务重新进行分类器的重新训练。

绿色 + 表示相比ResNet-50提升了多少,蓝色 - 表示相比ResNet-50降低了多少。
通过观察图形数据,在基于27个不同的数据集测试中发现
在常规的物体分类任务中, CLIP能够显著地实现zero-shot迁移能力, 并且这一能力得到了多个数据集的支持. 包括车辆、食物以及CIFAR10等典型的数据集为例, 在这些场景下, 由于图像中含有可描述的对象(即可描述的对象), 这些对象对应的文本中也会存在相应的词汇表述(即相应的词汇表述会存在). 因此, 在这种情况下,"物像与文本之间的匹配度自然会得到显著提升."
然而,在处理更为复杂的或高度抽象的任务时,CLIP的表现相对较差。如卫星图像分类和淋巴结肿瘤检测等专门依赖领域知识的分类任务便暴露了这一局限性。
3.1.4 CLIP的few-shot分类
本文同样采用CLIP技术应用于few-shot分类任务中,并对zero-shot CLIP与 few-shot Linear Probe方法进行了详细分析与对比实验展示

横轴代表每个类别中使用的标注样本数量进行Linear Probe分类器的训练过程;纵轴则代表在20个不同数据集上进行评估得到的平均分类精度
zero-shot CLIP的性能超过了很多few-shot learning的模型性能;
以蓝色曲线标记的模型是BiT-M版本,在当前场景中经过ImageNet-21k数据集的预训练,并包含的数据量也相当可观。因此具有很高的代表性意义,并可以作为强有力的基础模型参考。然而,在每类样本数量达到16的情况下,在性能上与zero-shot CLIP达到了同等水平。
紫色曲线代表的是在CLIP图像编码器上应用Linear Probe的效果分析。当每个类别仅包含1个或2个训练样本时,在表现上并不优于zero-shot CLIP;然而,在每个类别拥有8至16个训练样本时,则显著超越了zero-shot CLIP的表现,并且明显优于其他模型。这进一步印证了作者先前的观点:对于难度较高的数据集而言,在某些情况下仍有必要具备一定数量的训练样本。
当CLIP进行Linear Probe任务时,
它需要舍弃其文本编码器模块,
随后在其图像编码器之后附加了一层线性变换模块。
这也就意味着传统的基于相似度匹配的方法不再适用。
因此系统必须重新训练一个新的线性分类器模型。
其中新增的一层全参数随机初始化的线性变换模块
也使得每个类别仅凭一个标注样本就无法获得良好的表现能力。
这也解释了为何初始阶段模型的表现较为有限。
然而随着训练样本数量的有效增加
其分类能力也随之得到提升。
3.2 表示学习
3.2.1 与SOTA模型对比
无论是无监督还是自监督的特征学习方法都包括先进行模型预训练然后在下游任务中利用全部数据进行微调因此当采用全部数据时就能与基于单独特征学习的传统方法进行公平比较
当使用全部数据集进行下游任务时
主要原因是微调会完全释放整个网络结构并进行全连接学习;而使用Linear probe的方法仅在顶层加入线性分类器,在大部分网络层均保持固定参数不参与优化(即冻结),仅最后一层全连接层具备学习能力,在可调节空间上相对缩减;此外,在预训练模型性能不佳的情况下即使进行长时间的下游任务优化也难以获得理想效果;因此采用Linear probe能够更加客观地评估预训练模型的质量。

横轴代表在处理单张图像时进行一次前向传播所需的计算量大小;纵轴则反映在多个数据集上的平均准确率。各条曲线分别对应不同的模型架构设计,在本研究中涵盖基于不同图像编码器架构(如CLIP系列)以及多种学习范式的建模方法。具体而言,“有监督学习版本”的EfficientNet架构、“利用伪标签辅助训练”的改进型EfficientNet设计、“弱监督学习下的Instagram预训练”CLIP变体、“扩展到Instagram之外的数据集”的对比学习框架以及若干经典有监督基准方法均被纳入比较范围。研究结果显示,在距离左上角越近的位置,则表明该模型性能越优。左图基于12个与ImageNet相似的数据集展示了平均性能(其中包含10个新领域数据集),右图则基于额外添加了27个数据集进行了扩展。
从图中可以看到,在12个数据集中采用基于ViT结构的CLIP方法表现最佳,并且ResNet方法也优于大多数其他方法;在另外27个数据集中测试发现,在所有这些数据集中CLIP的表现均远超其他任何方法。这些结果充分验证了CLIP模型的强大性能
本文还详细报道了这些模型在27个数据集上的单一得分结果。如需进一步了解,请参考本文的附录部分。
3.2.2 与Noisy Student EfficientNet-L2 对比
作者不仅还在27个数据集上进行了详细展示CLIP模型与基于伪标签训练的EfficientNet网络在性能上的对比分析。

可从图表中观察到,在多数数据集上CLIP均显著优于EfficientNet。对于剩下的6个数据集而言,在这些场景下CLIP仅高出约5%的一点差距即可达到与之相当的性能水平。
3.3 对自然分布偏移的鲁棒性
作者不仅进行了zero-shot CLIP与现有ImageNet模型在自然分布偏移场景下的性能分析,并以此评估其鲁棒性。

左图中的x轴和y轴为ImageNet数据集中的分布偏移情况。其中理想鲁棒架构由一条黑色虚线段表示,在理论分析中被假设为严格线性关系。普通模型的表现则明显不足,在图像分类任务中所生成的概率分布曲线全部位于该基准曲线之下。通过实验对比发现,在零样本学习任务中,CLIP模型展现了超越基于标准ImageNet预训练方法的优势。
右侧图表展示了zero-shot CLIP与基于ImageNet监督微调的ResNet-101性能的对比结果。其中 ImageNetV2 是从 ImageNet 数据集中精选出的一份新数据集,并且这一新数据集与原始测试集更为接近。然而,在 ImageNet 上经过微调的模型在该新数据集上的测试准确率却有所下降(76.2%降至64.3%)。此外本文还构建了更具挑战性的数据集类型:例如,在 ImageNet Sketch 中使用的是素描风格图片,在 ImageNet-A 中则包含了许多对抗样本;尽管这些特殊的数据类别依然为香蕉等基础分类任务服务。值得注意的是,在 ImageNet 上训练得到的模型仍然能够有效分类这些图片类型。通过实验结果可以看出零样本CLIP的表现与有监督训练得到的Res Net-101在 Image Net 上分类精度相当一致。但随着数据集难度系数增加 Res Net-101 的分类精度正在急剧下降 而相比之下 零样本CLIP的表现并未像前者那样随数据难度增加而显著降级 因此这表明CLIP具备更强的鲁棒性
4. 与人的表现对比
该研究团队从Oxford-IIIT Pets 数据集中招募了五人小组,在测试图像中进行分类识别的表现与zero-shot CLIP方法进行了详细对比研究。具体对比结果见下表所示。

另外,在分析过程中,作者不仅关注了不同类别的分类准确度,并且进行了详细的比较研究。通过查看图表可以看出,在那些对CLIP这类难以识别的对象而言,在分类任务中表现依然不够理想。

5. 数据重叠分析
在大规模互联网数据集中进行预训练可能会无意中与下游评估任务的数据产生重叠。这一现象至关重要,在最坏情况下可能会导致评估数据集中的完整样本泄露至预训练数据集。研究者考察了训练集与下游任务相关数据之间的重合程度,并深入分析了这种关联对模型性能的影响。

- 左:然而,在35个数据集中仅有5组(仅占约14.3%)达到了99.5%置信区间水平,并且这些结果完全排除了零差异的可能性。其中两组在重叠样本上表现更为劣弱。
- 右:鉴于重叠样本的比例通常仅为个位数水平,在这种情况下由重叠引起的整体测试准确度提升相对较小。具体而言,Birdsnap方法的最大提升幅度仅为0.6%.此外,采用单边二项式检验时,仅有6组研究显示出统计学意义上的准确性提高。
由此可以得出结论,这样的数据重叠不会带来明显的准确率提升。
6. 局限性
CLIP在多个数据集上整体表现与ResNet-50相当,在多数情况下接近或略逊一筹。最新的大型Vision Transformer或MAE领先约15分。达到这一水平可能需要现有计算能力的100倍以上;鉴于此,“受限于现有的计算能力”,这样的提升难以实现。
(2)CLIP在处理一些更具抽象性或复杂性的任务时,在零样本学习效果上表现不佳。例如,在计算图片中物体的数量以及判断监控画面中的当前帧是否为异常状态时。
(3)面对自然图像的数据分布偏移问题,在使用CLIP模型时仍能表现出相当稳定的性能水平。然而,在执行推理任务时若训练集与测试集之间的数据分布存在较大差距,则会导致模型泛化能力显著下降。以MNIST数据集为例,在这样的场景下普通的分类器往往能够超越其性能。
尽管CLIP能够执行zero-shot分类任务,在给定类别中进行选择时仍然无法直接生成图像标题。
(5)在数据利用率方面存在不足,在本研究中经过了4亿样本完成32轮迭代训练工作。经过测试发现相当于处理了大约1.28×10^8的数据量,请注意这一规模的数据量非常庞大。
(6)本文在研发CLIP时一直用ImageNet测试集做指导,并非真正的zero-shot。
自行搭建的数据集未进行清洗处理;由于是从网络上抓取而来;模型可能带有社会偏见,并且具体涉及性别与肤色等类型。
(8)存在许多难以通过纯文本精确描述的任务与概念,在这种情况下通常需要向模型提供一定数量的训练样本。然而,在CLIP中仅使用少量示例进行分类的效果往往不如zero-shot学习策略。如前所述,在3.1.4节中讨论了CLIP采用的少样本分类方法
7. 总结
本文提出了一种基于双塔架构的设计框架,并命名为CLIP(Contrastive Loss Inversion),该框架采用了图像-文本配对关系作为对比学习的基础。当处理的数据量充足时,在经过预训练过程后能够有效学习到丰富的视觉语义知识。经过微调后,在零样本条件下(Zero-Shot Learning),该模型能够通过简单的自然语言提示信息指导其完成跨数据集的任务推理与执行。研究表明,在大规模的数据集上进行优化后的方法表现已经接近甚至超越了某些特定领域中的监督学习基准模型(Supervised Learning Baselines)。然而该方法仍面临着较大的改进潜力和局限性。
