CLIP论文笔记:Learning Transferable Visual Models From Natural Language Supervision
导语
- 会议:ICML 2021
- 链接:https://proceedings.mlr.press/v139/radford21a/radford21a.pdf
现有的计算机视觉系统往往仅限于预定义的对象类别识别能力
1 引言与动机
近年来

在此基础上, 本文提出了一种新的模型CLIP(Contrastive Language-Image Pre-training),作为ConVIRT的一个简化版本, 其主要目标是利用大规模自然语言监督进行图像表示学习. 本文构建了包含4亿图像-文本对的新数据集, 并表明CLIP在从自然语言监督中学习方面表现出显著的效果. 通过对比训练多个模型分析转移性能与计算投入之间的关系
CLIP具备在预训练过程中完成OCR、地理定位及动作识别等多样化任务的能力,并且其在超过30个现有数据集上的零样本迁移性能与先前的任务专用监督模型具有可比性。此外,在固定模型参数的情况下仅微调分类头进行测试分析后发现,CLIP的表现超越了现有最优公开可用的ImageNet基准模型,并展现出更高的计算效率。进一步地,在固定模型参数的情况下仅微调分类头进行测试分析后发现

2 方法
2.1 自然语言监督
尽管已有一定基础表明自然语言可作为训练信号的一种手段,但相关工作中所使用的术语却种类繁多且存有明显分歧。尽管多数研究均采用了从文本学习视觉表征的技术手段进行探索与实践,但这些方法却分别被系统性地归纳为无监督学习、自监督学习、弱监督学习以及传统监督学习等多种类型。本文认为,在这些研究中共同关注的核心问题在于如何有效利用自然语言作为训练信号这一技术手段,并未对具体的技术实现细节作出深入探讨。
在深度上下文表示研究方面取得进步后,我们如今获得了在这一丰富监督源上进行有效应用的强大工具。相较于基于传统众包图像分类标注的方法,自然语言监督展现出更高的扩展性,它使得我们可以从海量互联网文本中被动地获取知识而不需遵循典型的机器学习格式。相比之下,在多数无监督或自监督学习方法面前,自然语言技术不仅能够习得一种表征形式,更能建立起该表征与语言之间的联系,从而实现灵活迁移的能力。接下来的部分将详细介绍本研究确定的具体方法。
2.2 创建足够大的数据集
现有的图像-文本对数据集包括MS-COCO、Visual Genome以及YFCC100M等。然而这些数据集在规模上相对较小且元数据质量参差不齐。例如YFCC10M数据集尽管拥有YFCC10M高达一亿多张图片但它经过筛选仅保留约一千五百万张高质量图片这与其规模相去甚远
为了充分利用自然语言监督的能力,在本文中我们创建了一个全新的数据集WIT(WebImageText),它收录了高达4亿对图像和文本配对。这些数据源自互联网广泛可访问的资源库,并旨在囊括尽可能多样的视觉概念。在构建过程中我们采用了基于5百万搜索查询的方法每个查询最多生成2万对图像和文本从而实现各分类间的均衡分布这样累积形成了与GPT-2训练所用WebText数据集相当的语言词汇量同时也为自然语言视觉监督提供了一个前所未有的规模
2.3 选择高效的预训练方法
基于先前研究如ResNeXt101-32x48d和Noisy Student EfficientNet-L2等模型,在计算资源上存在较高需求的前提下
为此
CLIP的简单伪代码实现如下:
# image_encoder - ResNet or Vision Transformer
# text_encoder - CBOW or Text Transformer
# I[n, h, w, c] - minibatch of aligned images
# T[n, l] - minibatch of aligned texts
# W_i[d_i, d_e] - learned proj of image to embed
# W_t[d_t, d_e] - learned proj of text to embed
# t - learned temperature parameter
# extract feature representations of each modality
I_f = image_encoder(I) #[n, d_i]
T_f = text_encoder(T) #[n, d_t]
# joint multimodal embedding [n, d_e]
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)
# scaled pairwise cosine similarities [n, n]
logits = np.dot(I_e, T_e.T) * np.exp(t)
# symmetric loss function labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2
AI写代码python
运行

这些方法的改进揭示出自然语言监督在学习图像表示方面的潜力,并证明了在大规模数据集上的训练中过度拟合并非主要挑战,从而使得整个训练过程更加高效且易于实施.
2.4 选择和扩展模型
本文研究了图像编码器中采用的两种不同架构方案。首先作为基础架构模型,在现有应用领域得到了广泛应用,并且经过性能验证。随后对该模型原有的网络结构进行了系统性优化设计。具体而言,在原有基础上增加了ResNetD优化模块,并在池化操作中引入了注意力机制辅助策略。此外,在实验部分中尝试应用最新的Transformer架构(ViT),并对其实现过程做了适度优化调整。
文本编码器则应用了基于Transformer架构的设计,并对模型进行了微调以提升性能。本文采用了拥有63 million parameters的Transformer模型,在小写字节对编码(BPE)表示的基础上进行处理,并设置了最大序列长度以优化计算效率。此外,在文本序列处理中采用[SOS]和[EOS]作为标记符,并将特征表示嵌入到多模态嵌入空间中进行处理
相较于传统的单一维度增强方法而言,在模型扩展过程中作者采取了在宽度、深度和分辨率上实现了计算资源的均衡配置的方法
2.5 训练
研究者训练了五种ResNet架构以及三种Vision Transformer模型。
其中针对每一种ResNet架构的研究包含以下内容:
一方面单独构建了一个基础级 ResNet-50 模型;另一方面则发展出两个改进级 ResNet-101 模型;此外还设计出了三种基于EfficientNet风格扩展设计的不同变体。
所有实验均采用了一定程度上与 ResNet-50 平台相匹配的计算资源配置:具体而言分别是约 4 倍、16 倍及 64 倍于后者(即 ResNet-50)的能力水平。
而对于 Vision Transformer 的研究,则聚焦于构建三个不同分辨率的基础级 ViTs:
一个是 ViT-B/32 分辨率版本;
一个是 ViT-B/16 分辨率版本;
还有一个是 ViT-L/14 较长序列版本。
每个模型均经历了32个完整的Epoch训练过程。采用Adam优化器并结合解耦权重衰减策略进行正则化处理,在所有非增益层或偏差层的所有权重上实施正则化措施,并采用余弦衰减策略来逐步降低学习率。初始设置采用了基于1个Epoch训练后的基线ResNet-50模型,并综合运用网格搜索、随机搜索以及手动微调的方法来确定各超参数的具体值。
由于计算资源限制,在处理更大规模的模型时,默认采用启发式方法来设定超参数。可学习温度参数τ被设定为初始值为0.07,并通过引入约束机制来限定其范围,在一定程度上避免了对数因子值超出100的可能性这一做法已被证实对于防止训练过程中的不稳定性至关重要。为了提高训练效率与内存利用率,在实验中采用了较大的批量大小(32,768),并在训练过程中采用混合精度算术以加速收敛并节省内存资源。为了避免不必要的内存消耗,在梯度更新过程中引入了检查点机制,并分别采用了半精度Adam优化器以及半精度随机舍入策略来提升权重更新效率。此外,在嵌入相似性计算过程中采用了分片处理技术,在保证各GPU负载均衡的同时实现了局部批次范围内的成对相似性计算需求。
该变体则仅在256台V100 GPU上耗时约12天完成训练。此外,在完成主模型训练后又进行了额外一轮的预训练(每轮约9天),其主要目的是提升性能幅度与FixRes相媲美)。此外,在完成主模型训练后又进行了额外一轮的预训练(每轮约9天),其主要目的是提升性能幅度与FixRes相媲美)。此外,在完成主模型训练后又进行了额外一轮的预训练(每轮约9天),其主要目的是提升性能幅度与FixRes相媲美)。此外,在完成主模型 training后又进行了额外一轮 的 pre-training (每轮 约 9 days), 其主要目的是 提升 performance 幅度与 FixRes 相媲美)。此外,在完成主 model training 后又进行了额外一轮 的 pre-training (每轮 约 9 days), 其主要目的是 提升 performance 幅度与 FixRes 相媲美)。此外,在完成主 model training 后又进行了额外一轮 的 pre-training (每轮 约 9 days), 其主要目的是 提升 performance 幅度与 FixRes 相媲美)。此外,在完成主 model training 后又进行了额外一轮 的 pre-training (每轮 约 9 days), 其主要目的是 提升 performance 幅度与 FixRes 相媲美)。除非另有特别说明, 此研究中的所有 CLIP评估结果均基于该最优性能版本。
3 实验
3.1 零样本迁移
3.1.1 动机
零样本学习常被定义为在图像分类任务中推广至未曾见过的对象类别的一种方法。本文则扩展了这一术语的应用范围,并重点探究了其在网络环境下处理未知数据集的能力。Visual N-Grams最先探索了这一思路在现有图像分类基准数据集上的迁移效果。此外,在现有技术中尚无其他系统能够实现基于通用预训练模型实现标准基准数据集上的零样本迁移效果,并且其已成为当前最优用于指导CLIP模型进行情境适应的最佳参考资料。
本文探讨零样本迁移作为一种任务学习评估工具的可能性起源于NLP领域对任务学习的关注与探索。Liu等人最先将任务学习归类为当一个训练语言模型用于生成维基百科文章时,在不同语言间可靠地转换名称这一"意外副作用"。尽管GPT-1主要用作预训练模型来提升监督微调能力,并包含了一个深入分析研究这一特性。然而该研究表明:四种启发式的零样本迁移方法在预训练过程中表现出稳定提升趋势,并不需要任何监督性适应过程。这一发现为GPT-2奠定了理论基础,并且后者专门专注于通过零样本迁移探索语言模型的任务学习潜力。
3.1.2 使用CLIP进行零样本转移
CLIP的预训练旨在识别数据集中图像与文本片段之间的配对关系。在每个数据集上,通过各自的编码器分别提取图像特征向量以及一组潜在的文本特征向量,并计算各嵌入间的余弦相似度。经过τ缩放处理后,利用softmax函数将其标准化为一个概率分布。该预测层采用了多项式逻辑回归模型作为分类器结构,并对输入与权重均进行了L2范数标准化处理、无偏置设计及τ缩放操作。从构建角度来看,在视觉感知层面采用了计算机视觉主干网络来表示图像特征,在语言建模层面则基于指定类别所代表的视觉概念设计了一个超网络式的文本生成线性分类器权重模块。CLIP预训练过程可被看作是在不同数据集上优化代理模型性能的过程,在该过程中每个代理对应一个特定的数据集:每个类别只有一个样本实例(总共有32768个类别),其规模达到了1:1的比例关系。针对零样本评估任务,在获取文本编码器输出后会立即缓存该零样本分类器,并将其用于后续所有推断阶段中直接调用以完成推理任务。这种设计策略使得生成零样本分类器的成本得以在前期一次性投入并被后续所有推断任务分摊承担。

3.1.3 与Visual N-Grams的初次对比
研究者对比分析了CLIP架构与Visual N-Grams结构。实验数据显示,在ImageNet基准测试中,该方法实现了显著的分类精度提升(从11.5%大幅提升至76.2%),其性能水平与未经预训练的ResNet-50架构相当。此外,在前五分类指标上,则进一步研究表明,在零样本学习环境下与其完全监督学习方案相比具有同等竞争力,并展现了作为灵活且实用零样本视觉分类器的优势
此外亦然,在其他两个基准数据集中表现出了超越性。在Yahoo的数据集中, CLIP降低了95%的错误发生率,而在SUN平台上,其准确度为其视觉N-Grams模型的近两倍. 作者进一步扩大了评估规模, 将测试范围扩大至超过30个不同的标准数据集,并与其所在领域的主流计算机视觉系统进行了系统对比分析, 旨在从多个维度全面评估和展现其性能水平.
3.1.4 提示工程与集成
CLIP模型旨在判断图像与文本片段间的匹配关系进行训练,并凭借这一能力实现零样本分类任务。具体而言,在实际应用中,则是基于图像与潜在文本配对的特征向量计算其余弦相似度,并随后将这些相似度值转换为概率分布形式,并预测出最有可能匹配的一组(图像ID, 文本ID)。
该研究提出了"提示工程"及模型集成方法以提升零样本迁移性能。通过基于特定的提示工程设计了结构化的指示符形式,在CLIP系统中实现了对图像内容识别能力的显著增强。该系统在图像识别任务中表现出更高的准确性,并通过针对性优化提升了分类效果。具体而言,在Oxford-IIIT Pets数据集上基于宠物类别进行了优化,并在FGVC Aircraft数据集上实现了针对飞机类别的优化处理。
templates = [
'a photo of a {}.',
'a blurry photo of a {}.',
'a black and white photo of a {}.',
'a low contrast photo of a {}.',
'a high contrast photo of a {}.',
'a bad photo of a {}.',
'a good photo of a {}.',
'a photo of a small {}.',
'a photo of a big {}.',
'a photo of the {}.',
'a blurry photo of the {}.',
'a black and white photo of the {}.',
'a low contrast photo of the {}.',
'a high contrast photo of the {}.',
'a bad photo of the {}.',
'a good photo of the {}.',
'a photo of the small {}.',
'a photo of the big {}.',
]
AI写代码

作者还进行了基于不同上下文提示计算多组零样本分类器集成的研究,并期望由此获得进一步提升性能水平的机会。该集成方法则着重于在嵌入空间而非概率空间构建模型架构,并成功使得其生成的成本能够被多处预测分摊。例如,在ImageNet数据集上通过整合80种不同的上下文信息(如文中所述),CLIP的表现获得了较大地提升(提升幅度达3.5%)。总体而言,在提示工程与集成策略的应用下,“ImageNet”的准确率得以显著提高(提升了约4.7%)。这一研究方案不仅显著提升了模型本身的鲁棒性表现,并且展现了其对多样化数据集适应性的增强能力。

3.1.5 零样本CLIP性能分析
鉴于目前计算机视觉领域对于无监督学习类别的研究仍存在不足,在这一背景下

随后对零样本分类器进行了性能评估,并与其基于ResNet-50规范特征训练的一般监督、正则化逻辑回归基准模型的表现进行了对比。研究发现该模型在包含27个数据集中的其中16个领域取得了更好的效果。值得注意的是,在微粒度分类任务中发现该模型表现出显著的优势,在Stanford Cars和Food101等场景下其优势超过20%;但在Flowers102和FGVCAircraft等场景下的优势则低于10%以上。对于广泛应用于计算机视觉的任务如ImageNet和CIFAR系列等通用对象分类数据集而言,在零样本学习框架下该模型表现出色
尽管CLIP在某些复杂、专门化的任务中表现欠佳(如卫星图像分类和淋巴结肿瘤检测等),这些结果表明,在处理更为复杂的任务时,CLIP的能力显得较为有限)。研究者认为,在评估学习者应对全新任务的能力时,默认使用零样本转移的方法可能不够全面。

此外,在对比不同图像模型特征上的少样本逻辑回归方法时,本研究发现,在4个样本来比时,两者的性能表现相当。其主要原因在于Zero Shot CLIP(ZS-CLIP)能够直接指定视觉概念;而传统的监督学习依赖于从训练数据中推导出这些概念。进一步地,在探讨如何利用Zero Shot CLIP(ZS-CLIP)作为少量类别分类任务中的先验权重设置时,作者还发现了一个有趣的现象:研究发现,在超参数优化过程中,默认情况下倾向于将Zero Shot CLIP(ZS-CLIP)作为最终结果。

接着,作者进一步对零样本CLIP与在不同数据集上训练的完全监督线性分类器进行了性能对比分析。研究结果表明,在多数情况下零样本分类器的表现优于或接近完全监督分类器(约低10%-25%),但在STL10和CIFAR10等特定数据集上表现尤为突出,在这些场景下其性能几乎可与完全监督方法相媲美)。这不仅验证了该方法在连接底层表示与任务学习方面展现出一致性的潜力,并且也揭示了尽管CLIP的任务学习能力还有待进一步提升,在某些领域其表现仍具有显著优势。

最后,在CLIP架构下进行零样本学习所展现出的能力正在逐渐增强,在计算资源持续增长的情况下这一现象呈现出明显的提升趋势。这一观察结果与其说相符的是GPT系列模型的研究发现。作者认为,在现有研究基础上系统性地探究零样本与小样本学习方法的融合路径将有助于进一步增强其以及类似技术的表现水平。
3.2 学习表示
本节主要关注于在模型提取的表示维度上训练线性分类器模型,并评估该分类器在不同数据集的表现水平,而非通过全面微调全局模型来优化。

图10展示了实验的主要发现

CLIP模型在任务多样性方面表现出色,在单一计算机视觉模型中首次实现了端到端训练所能涵盖的任务集合相较于以往有了显著拓展与深化。这些任务涉及多个关键领域:地理定位、字符识别、面部情感分析以及动作捕捉技术等核心方向都被纳入建模范畴。值得注意的是,在这一更为广泛的评估框架下,默认规模的所有CLIP架构均展现了超越同类系统的高效性;其中最优版本的表现提升了显著水平(从原始值提升至更高水平)。进一步研究发现,在特定条件下自监督学习体系能够实现更好的推广效果:尽管SimCLRv2在部分基准数据集上的平均性能略低于BiT-M体系(基于Kornblith等人提出的12个基准测试),但其在更为全面的数据集中展现出超越性优势(基于独立测试中的全部27项指标)。这些观察结果充分说明了持续丰富任务谱系并扩大知识覆盖范围对于深入理解体系通用性能的重要意义

除了上述所做的综合分析之外,在图11中作者进行了可视化展示最佳CLIP模型与本文评估基准下的最优模型在全部27个测试用例上的性能对比结果 CLIP模型在21个测试用例中展现出显著优势于Noisy Student EfficientNet-L2模型
3.3 自然分布变化下的鲁棒性
于2015年时, 研究人员宣布深度学习模型在ImageNet测试集上的表现超过了人类. 然而, 随后进一步的研究发现这些模型仍然会犯下许多简单的错误, 并且在新的基准测试中, 这些系统的表现通常显著低于它们在ImageNet上的准确率以及人类的水平. 造成这种差异的原因可能在于, 深度学习模型具备极强的能力去识别训练数据集中存在的相关性和模式, 但这些模式并不适用于其他分布的数据, 因此导致了其在外测数据集上的性能下降.
Taori及其团队对这一行为展开了深入研究,并特别关注ImageNet模型在自然分布变化下的性能。他们的研究表明,虽然存在一些技术已被证实能提升对合成分布变化的效果(即提高其性能),但这些方法在实际应用中往往无法达到在真实环境中的一致性改进效果。通过对七种不同的自然分布变化进行分析后发现,在ImageNet验证集预期水平之下(即低于预期),该模型的表现显著低于预期水平。

本研究建议将鲁棒性分析分为两类:有效鲁棒性和相对鲁棒性。其中的有效鲁robustness特指的是系统在面对数据分布变化时展现出的性能提升幅度超出预设范围的能力;而相对robustness则侧重于系统在外推数据集上的性能提升情况。此外本文深入探讨了零样本模型相较于其他方法的优势主要体现在其更高的有效性上这是因为这类模型无需基于特定数据集进行训练从而能够避免因过度依赖特定场景所带来的潜在问题

尽管CLIP模型显著提升了有效抗扰能力。但这并不意味着其监督学习过程导致了抗扰性能的差异。由于CLIP采用了大规模和多样化的预训练数据集,并且采用了基于自然语言的监督学习方法。研究者尝试通过使CLIP模型适应ImageNet的分布特征来缩小这一差距。然而发现虽然这种方法使其在ImageNet上的分类精度有所提升,在分布变化的情况下,平均准确率略微下降。图14中可视化了从零样本分类器到性能变化的情况

以上结果显示,在广泛不可知的任务转向大规模预训练的同时,并注重在通用评估基准上进行零样本与小样本测试,则有助于提升系统鲁棒性,并提供更为可靠的性能指标。研究人员就这些成果是否同样适用于NLP领域中的零样本模型(如GPT系列)持开放态度。然而目前的研究数据显示,在情感分析等任务上预训练模型的相对鲁棒性有所提升,在自然分布变化下问答模型的有效鲁棒性改进证据仍不足
4 与人类性能的比较
为了更好地理解人类在类似CLIP评估环境中的表现, 本研究进行了相关评估, 并旨在探讨这些任务中人类的零样本学习能力有多强。通过展示少量图像实例来观察其性能提升情况, 有助于分析两者在任务难度上的对比及其内在关联性。

研究人员安排五位不同背景的专业人士审阅了该数据集的测试集包含了3,669张宠物照片,并指示他们识别出哪种宠物(猫或狗)更能匹配这些图片。在无示例的情况下,默认无法获得任何具体样例信息,默认并被要求尽力标注其中的对象特征与行为表现。随后,在单个样本与双个样本实验设计下,默认每位研究对象均接收到了各自指定范围内的训练样例支持
人们在零样本情况下的平均表现约为54%,而在每个类别只有一个训练示例的情况下则跃升至76%。从单个到两个样本的边际提升相对较小。准确率的显著提高主要集中在人类对于不确定图像的认知能力上。这一发现表明人类能够识别自身知识范围以外的知识盲区,并可通过单个实例显著更新对最不确定图像的先验认知。值得注意的是,尽管CLIP在零样本性能方面展现出良好的前景(图5),并在自然分布偏移测试中表现出色(图13),但其学习能力与本文所述的小样本方法间仍存在较大差距。

将人类准确率与CLIP在零样本条件下的准确率进行对比分析(如图16所示),研究发现,在错误一致性方面,作者认为这一现象至少由两个因素造成:数据集中的误标图像以及难以区分的人类与模型对于分布外图像的感受。在错误一致的程度上而言,在某种程度上可以认为这一现象至少归因于两个因素:首先,在数据集中存在误标图像的问题;其次,在面对分布外图像时,无论是人类还是模型都表现出较高的难度。
5-8 数据集重叠、影响、局限与相关工作
略
9 总结
本文探讨了如何将自然语言处理领域中与任务无关的网络规模预训练成功应用于其他领域。研究者发现采用这种方法在计算机视觉领域呈现出类似的行为模式,并深入探讨了这一研究方向的社会意义。为了优化其训练目标,CLIP模型在预训练阶段被设计为执行多项任务。随后通过提供自然语言提示的方法进行任务学习后,则可实现对大量现有数据集的零样本迁移。当规模足够大时,在某些特定任务上这种方法的表现可与有监督模型相媲美,并仍存在较大的提升潜力。
