论文解读-CLIP:Learning Transferable Visual Models From Natural Language Supervision
论文总结:Learning Transferable Visual Models From Natural Language Supervision
主要内容
这篇论文主要探讨了如何通过自然语言监督来训练可迁移的视觉模型,提出了一种名为 CLIP(Contrastive Language-Image Pre-training,对比语言-图像预训练)的创新方法。传统的计算机视觉模型通常依赖于固定类别的监督训练,而 CLIP 通过利用互联网上大规模的图像-文本对数据,采用自然语言作为监督信号,实现了无需特定数据集训练即可在多种下游任务上进行零样本(zero-shot)迁移的能力。
核心算法
CLIP 的核心算法基于 对比学习(Contrastive Learning),具体步骤如下:
- 模型架构:
- CLIP 包含两个编码器:
- 图像编码器:可以是 ResNet 或 Vision Transformer(ViT),用于提取图像特征。
 - 文本编码器:基于 Transformer 的模型,用于提取文本特征。
 
 - 两个编码器将图像和文本映射到一个共享的多模态嵌入空间。
 
 - CLIP 包含两个编码器:
 - 训练目标:
- 在一个批次中,给定 N 个图像-文本对,CLIP 训练模型预测哪些图像和文本是配对的(N 个正确对),哪些不是(N²-N 个错误对)。
 - 通过最大化正确配对的图像和文本嵌入之间的余弦相似度,最小化错误配对的相似度,使用对称交叉熵损失(Symmetric Cross-Entropy Loss)进行优化。
 
 - 零样本分类:
- 在测试时,利用文本编码器根据任务的类别名称生成分类器的权重,结合图像编码器的特征进行预测,无需额外训练。
 
 
这幅图用来概括 CLIP 算法的核心流程与框架,主要分为三个阶段:

对比学习预训练(Contrastive Pre-training)
- 图像编码器和文本编码器分别将图像、文本输入映射为向量表示,然后在同一个嵌入空间中进行对比学习。
 - 模型会最大化正确图文配对的相似度,最小化错误配对的相似度,从而让图像和对应文本在向量空间中“对齐”。
 
根据标签文本创建分类器(Create dataset classifier from label text)
- 在有下游数据集时,可以将每个类别的名称或描述(例如“dog”或“A photo of a dog.”)输入文本编码器,得到一组文本向量。
 - 这相当于直接用文本生成了一个线性分类器的权重,无需对该数据集做额外微调或训练。
 
零样本预测(Use for zero-shot prediction)
- 对于一张新图像,先用图像编码器得到图像向量,再分别与各类别文本向量计算相似度,选取相似度最高的类别作为预测结果。
 - 这种方法实现了零样本分类:不需要任何标注样本就能对新任务(数据集)做推断,因为类别信息是由文本描述来提供的。
 
总结来说,这张图描述了 CLIP 的核心思路:先用大规模的图文对进行对比学习,学到统一的图像-文本表示空间;然后在下游任务里,通过简单的文本提示(label text)来生成一个零样本分类器,直接进行推断。
训练效率对比

- 描述:比较不同训练目标(语言模型预测标题 vs. 对比学习)在零样本ImageNet分类上的效率。
 - 作用:证明对比学习目标(CLIP)比传统生成式目标(如预测标题)更高效,训练速度提升4倍。
 
CLIP伪代码核心思想

这段伪代码设计了一个多模态学习框架,旨在通过对比学习的方法,将图像和文本的特征表示映射到一个统一的嵌入空间,使得匹配的图像-文本对具有高相似度,而不匹配的对具有低相似度。其核心思想可以概括为以下几点:
- 多模态特征提取:
- 使用独立的编码器分别处理图像和文本数据,提取各自的特征表示。
 - 图像编码器(如ResNet或Vision Transformer)和文本编码器(如CBOW或Text Transformer)的选择体现了灵活性,可以根据任务需求选用不同的模型。
 
 - 共享嵌入空间的对齐:
- 通过学习到的投影矩阵将图像和文本特征投影到一个共同的维度空间,并进行归一化处理。
 - 这种对齐使得图像和文本的表示可以直接比较,从而支持跨模态任务。
 
 - 相似度计算与对比损失:
- 使用余弦相似度(通过点积计算)衡量图像和文本嵌入之间的相似性,并引入温度参数来调节相似度的分布。
 - 通过对称的对比损失函数(contrastive loss)训练模型,使得匹配对的相似度被最大化,非匹配对的相似度被最小化。
 
 - 端到端优化:
- 整个模型通过一个统一的损失函数进行端到端训练,确保图像和文本编码器以及投影矩阵协同优化。
 
 
这种方法的核心在于利用对比学习的无监督特性,通过正样本(匹配对)和负样本(非匹配对)的对比,让模型自动学习图像和文本之间的语义关联,而无需显式的标签。
伪代码的逻辑步骤
以下是伪代码中每个步骤背后的思想:
- 模型组件定义:
- 编码器选择:图像编码器(image_encoder)可以是ResNet或Vision Transformer,文本编码器(text_encoder)可以是CBOW或Text Transformer。这种灵活性允许模型适应不同的数据类型和任务需求。
 - 输入数据:图像输入为I[n, h, w, c](批量大小为n,高度h,宽度w,通道数c),文本输入为T[n, l](批量大小为n,序列长度为l)。这表明模型能够处理批量数据,提高训练效率。
 - 投影矩阵和温度参数:W[i,d,i]和W[t,d,t]是学习到的投影矩阵,用于将特征映射到共享空间;t是一个可学习的温度参数,用于控制相似度的尺度。
 
 - 特征提取:
- 图像特征:I_f = image_encoder(I)将图像输入编码为特征向量I_f,形状为[n, d_i],其中d_i是图像特征的维度。
 - 文本特征:T_f = text_encoder(T)将文本输入编码为特征向量T_f,形状为[n, d_t],其中d_t是文本特征的维度。
 - 思想:这一步的目的是将原始的图像和文本数据转化为高维特征表示,捕捉各自模态的关键信息,为后续对齐做准备。
 
 - 特征归一化与相似度计算:
- 投影与归一化:
- I_e = l2_normalize(np.dot(I_f, W[i,d,i]), axis=-1):将图像特征I_f通过投影矩阵W[i,d,i]映射后进行L2归一化,得到I_e。
 - T_e = l2_normalize(np.dot(T_f, W[t,d,t]), axis=-1):类似地,将文本特征T_f投影并归一化,得到T_e。
 - 归一化确保特征向量位于单位超球面上,使得点积等价于余弦相似度,便于比较。
 
 - 相似度计算:logits = np.dot(I_e, T_e.T) * np.exp(t)计算图像嵌入I_e和文本嵌入T_e的转置之间的点积,并用指数化的温度参数np.exp(t)进行缩放。
 - 思想:通过余弦相似度和温度参数,模型能够量化每对图像和文本之间的关系,温度参数则调节了相似度分布的“锐度”,影响正负样本的区分度。
 
 - 投影与归一化:
 - 对比损失函数:
- 标签生成:loss_i = 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:最终损失取两个方向损失的平均值。
 
 - 思想:这种对称损失设计确保模型在图像到文本和文本到图像两个方向上都学习到一致的对齐关系,增强了跨模态表示的鲁棒性。
 
 
总体思想与应用
伪代码的总体思想是通过对比学习构建一个多模态模型,将图像和文本表示对齐到一个共享嵌入空间。其关键创新在于:
- 灵活性:支持多种编码器选择(如ResNet、Vision Transformer、CBOW、Text Transformer),适应不同任务和数据集。
 - 对比学习:利用正负样本的对比,无需显式标签即可学习跨模态关联。
 - 温度参数:通过可学习的 t调节相似度分布,提升模型的区分能力。
 
这种方法在实际应用中非常强大,例如:
- 图像-文本检索:给定文本查询返回相关图像,或给定图像查询返回相关文本。
 - 零样本分类:利用文本描述对未见过类别的图像进行分类。
 - 视觉问答:结合图像和文本回答问题。
 
零样本CLIP vs. 全监督基线

- 描述:在27个数据集上,零样本CLIP与基于ResNet-50特征的全监督线性分类器的性能对比。
 - 作用:证明零样本CLIP在多数任务上优于传统监督方法,展示了自然语言监督的泛化能力。
 
模型规模与性能关系

- 描述:不同规模的CLIP模型(从ResNet-50到ViT-L/14)在零样本任务上的性能随计算量增长的规律。
 - 作用:证明模型性能随计算量和数据规模平滑提升,符合“缩放定律”(scaling law)。
展示了CLIP模型在零样本学习(Zero-shot Learning)任务中的性能如何随着计算能力(以GFLOPs为单位)的增加而变化。零样本学习是指模型在没有针对特定任务进行训练的情况下,仅通过自然语言描述完成任务的能力。这种评估方法关注模型的泛化能力和对新任务的适应性。 
图表的主要内容包括:
- X轴:模型的计算能力(GFLOPs),范围从6.1到265.9 GFLOPs。
 - Y轴:零样本任务的错误率(Error %),范围从25%到45%,错误率越低表示性能越好。
 - 数据点:展示了不同ResNet模型配置(RN50、RN101、RN50x4、RN50x16、RN50x64)的性能。
 - 趋势线:一条平滑的蓝色曲线,显示错误率随着计算能力增加而下降。
 - 置信区间:趋势线周围的浅蓝色阴影,表示性能数据的变异范围。
 
模型评估方法
图表通过 零样本学习性能 来评估模型,具体测量的是CLIP模型在未经过任务特定训练的情况下,在多种任务上的错误率。这种方法强调:
- 泛化能力:模型能否在未见过的数据或任务上表现良好。
 - 适应性:模型通过自然语言提示适应新任务的能力。
 
评估覆盖了 36个数据集上的39项任务,这表明结果具有一定的广泛性和代表性,能够反映模型在不同场景下的表现。
性能分析要点
图表揭示了模型性能与计算能力之间的关系,以下是具体分析:
- 计算能力与性能的关系
- 随着计算能力(GFLOPs)增加,零样本错误率呈现 平滑下降趋势。
 - 具体数据:
- RN50(6.1 GFLOPs):错误率约为42%。
 - RN101(9.9 GFLOPs):错误率约为40%。
 - RN50x4(21.5 GFLOPs):错误率约为37%。
 - RN50x16(75.3 GFLOPs):错误率约为32%。
 - RN50x64(265.9 GFLOPs):错误率约为29%。
 
 - 从最小的RN50(6.1 GFLOPs)到最大的RN50x64(265.9 GFLOPs),计算能力增加了约44倍,错误率从42%下降到29%,降低了约13个百分点。
 
 - 趋势线的特性
- 趋势线显示计算能力与错误率之间存在 对数-对数线性关系。这意味着性能提升是可预测的,随着计算能力增加,错误率以对数形式逐渐减小。
 - 这种平滑的趋势表明,模型性能的提升与计算能力的扩展密切相关,且不存在明显的性能瓶颈或突变。
 
 - 置信区间与变异性
- 趋势线周围的浅蓝色阴影表示 置信区间,反映了性能数据的变异性。
 - 尽管整体趋势平滑,但阴影的存在说明在具体任务或数据集上,模型性能可能会有波动。这提示我们,个体评估的结果可能受到任务复杂性或数据集特性等其他因素的影响。
 
 - 模型架构的影响
- 图表中的数据点对应不同的ResNet模型变体(如RN50、RN101等),这些模型在架构上有所不同,但计算能力是性能提升的关键驱动因素。
 - 例如,RN50x64相比RN50增加了更多的计算单元(可能是更深的层或更宽的通道),显著提升了性能。
 
 
图表的核心结论
这张图表说明了以下几点关于CLIP模型的评估和性能:
- 性能的可扩展性
- 随着计算能力的增加,零样本性能持续提升,且提升趋势平滑、可预测。这表明CLIP模型具有良好的可扩展性,增加计算资源(如更大的模型规模)可以有效提高性能。
 
 - 计算能力的重要性
- 计算能力是影响零样本性能的关键因素。从RN50到RN50x64,计算能力提升直接带来了错误率的下降,验证了“更大模型更好”的假设。
 
 - 性能变异性的存在
- 尽管整体趋势清晰,但置信区间的阴影表明,模型在不同任务上的表现并非完全一致。某些任务可能因数据分布或任务难度而表现出更高的错误率。
 
 - 广泛的适用性
- 评估覆盖了39项任务和36个数据集,说明CLIP模型在多种场景下都具备一定的零样本能力,体现了其泛化能力。
 
 
总结
这张图表在模型评估和性能分析方面说明了:
CLIP模型的零样本性能随着计算能力(GFLOPs)的增加而平滑提升,从错误率42%降低到29%,显示出良好的可扩展性和预测性。评估方法聚焦于零样本学习,测试模型在未训练任务上的泛化能力,覆盖了36个数据集的39项任务。性能与计算能力之间呈现对数-对数线性关系,表明计算能力是提升性能的关键驱动因素。然而,置信区间显示了个体任务性能的变异性,提示具体表现可能受任务或数据集特性影响。总体而言,图表表明通过增加计算资源,CLIP模型能够显著提高零样本任务的准确性,同时保持较强的适应性。
分布偏移鲁棒性

这张图主要展示了 零样本 CLIP 模型 和 标准 ImageNet 训练模型 在遇到分布偏移(distribution shift)时的表现差异,体现出以下几个关键点:
纵轴:在 ImageNet 上的准确率
横坐标是模型在新分布(比如 ImageNetV2、ImageNet-R、ObjectNet 等各种自然分布偏移数据集)上的准确率,纵坐标则是它们在原始 ImageNet 验证集上的准确率。理想的鲁棒模型基准线
图中用一条“基准线”表示「如果一个模型在 ImageNet 上表现为 x%,那么在分布偏移的数据集上大约能达到多少准确率」。若模型点落在这条线附近,就意味着它在分布偏移场景的表现与其 ImageNet 准确率相匹配;若点落在此线之下,说明它在分布偏移时比预期表现更差;而点在此线之上,则表示它比通常的 ImageNet 模型更鲁棒。零样本 CLIP 更加鲁棒
- 相比于常规的 ImageNet 训练模型(图中灰色或蓝色标记),零样本 CLIP(绿色标记)在横坐标(新分布准确率)上显著高于同等 ImageNet 准确率的模型。
 - 这意味着:当分布改变时,CLIP 的准确率下降幅度更小,也就是它在各种真实场景下更具「有效鲁棒性(effective robustness)」。
 
性能差距缩小
- 具体而言,作者发现零样本 CLIP 能将标准模型在分布偏移下的性能损失最多减少 75%(文中所说“robustness gap”被缩小了约 3/4)。
 - 这说明在完全未见过下游分布的情况下,CLIP 的表现仍能保持相对较高水准,显著优于只在 ImageNet 监督下训练的模型。
 
简言之,这张图突出了零样本 CLIP 在应对新数据分布或偏移场景时比传统 ImageNet 模型更具鲁棒性。它不太依赖 ImageNet 上的“局部”模式或偏差,而是通过自然语言监督学习到更通用、能更好适应分布变化的视觉特征。
核心思路
CLIP 的核心思路是将自然语言作为一种灵活且广泛的监督信号,替代传统的固定类别标签:
- 大规模数据利用:通过从互联网收集 4 亿个图像-文本对(WebImageText,WIT 数据集),提供丰富的监督信息。
 - 任务无关性:不像传统模型针对特定任务预训练,CLIP 通过对比学习在预训练阶段学习广泛的视觉概念,能够通过自然语言提示(prompt)直接适配新任务。
 - 零样本迁移:利用自然语言的描述能力,CLIP 可以在没有见过训练数据的情况下,通过文本描述完成分类任务。
 
做了什么事
论文中,作者进行了以下主要工作:
- 数据集构建:
- 创建了 WIT 数据集,包含 4 亿个图像-文本对,覆盖广泛的视觉概念。
 
 - 模型训练与扩展:
- 训练了多个 CLIP 模型,包括基于 ResNet 和 Vision Transformer 的变体,计算规模跨度达两个数量级。
 - 对比了不同预训练方法(如生成式 vs 对比式)的效率,选择了对比学习作为最终方法。
 
 - 性能评估:
- 在超过 30 个现有计算机视觉数据集上测试了 CLIP 的零样本迁移性能,涵盖 OCR、动作识别、地理定位、细粒度分类等多种任务。
 - 与全监督基线(如 ResNet-50)和已有零样本方法(如 Visual N-Grams)进行了对比。
 
 - 鲁棒性与偏差分析:
- 研究了 CLIP 在自然分布偏移(distribution shift)下的鲁棒性。
 - 分析了模型的社会偏差(bias),特别是在人脸分类和监控任务中的表现。
 
 - 代码与模型公开:
- 发布了代码和预训练模型权重(https://github.com/OpenAI/CLIP)。
 
 
总结出的结论
通过实验和分析,论文得出了以下主要结论:
- 高效性与可扩展性:
- CLIP 证明了通过自然语言监督预训练是学习高质量图像表示的一种高效、可扩展的方法,性能随着计算量增加呈平滑可预测的提升。
 
 - 零样本性能:
- 在大多数任务中,CLIP 的零样本性能与全监督基线相当,甚至在某些任务(如 ImageNet)上达到原始 ResNet-50 的水平,且无需使用其 128 万训练样本。
 
 - 广泛适用性:
- CLIP 在预训练中学到了多种任务能力(如 OCR、地理定位、动作识别),表现出较强的任务无关性。
 
 - 鲁棒性提升:
- 零样本 CLIP 比同等精度的 ImageNet 监督模型在自然分布偏移下更鲁棒,缩小了分布内与分布外的性能差距。
 
 - 局限性与改进空间:
- CLIP 在某些复杂任务(如细粒度分类、计数)上表现较弱,对真正分布外的 generalization 能力有限。
 - 数据效率仍需改进,需结合自监督或自训练方法。
 
 - 社会影响:
- CLIP 的灵活性可能带来潜在的社会风险(如监控中的滥用、偏差放大),需要进一步研究和规范。
 
 
总体评价
CLIP 开启了利用自然语言监督训练通用视觉模型的新范式,其零样本迁移能力和对大规模互联网数据的利用展示了巨大的潜力。然而,其在特定任务上的不足和潜在的社会影响也提示了未来研究的方向,包括提升数据效率、减少偏差和设计更公平的应用方式。







