Learning Transferable Visual Models From Natural Language Supervision (CLIP)
Radford et al. (OpenAI) · ICML 2021 · 2021
阅读原文用 4 亿图文对做对比学习,把图像与文本嵌入同一向量空间,零样本图像分类能力横空出世——现代多模态的地基。
核心要点
- 对比学习的对齐魔力:不需要物体级标注,「这张图配这段文字」的弱监督就足以学出语义空间——标注成本被互联网自身消化。
- 零样本迁移是核心卖点:自然语言作为类别接口,分类器从「训练固定」变成「运行时拼装」——prompt 即程序。
- CLIP 的嵌入空间成了整个生成生态的通用坐标:检索、DALL·E 2 的文本条件、Stable Diffusion 的文本编码器都建在它上面。
- 致命弱点是细粒度与组合性:数数、属性绑定、空间关系(「红方块在蓝球左边」)系统性失败——这些缺口至今定义了 VLM 研究议程。
背景
2020 年的视觉预训练被 ImageNet 的范式锁定:1000 个人工定义的类别、每图一个标签、one-hot 监督。这个范式的三个缺陷众所周知:类别空间封闭(新类别要重训)、语义稀疏(一张「小狗冲浪」的图只贡献「dog」一个 bit 的监督,丢掉了「冲浪」「海滩」的全部语义)、标注昂贵。Yann LeCun 多年呼吁「zero-shot 迁移」应该成为视觉的核心目标,但当时所有尝试(VSE++、VirTex 等用自然语言监督的工作)都被 ImageNet 监督基线碾压——原因后来被 CLIP 证明:规模不够。
另一条平行线是对比学习(Contrastive)在自监督视觉的爆发(SimCLR/MoCo,2020):InfoNCE 损失证明了「拉近正样本、推开负样本」能学出强表征——但正样本来自同一张图的两个增广,语义上限低。
动机
把两条线拧在一起:用自然语言本身作为监督信号,用对比损失作为学习机制。互联网上的图文对(alt text 等)是「免费且语义稠密」的监督源——一张图配一段描述,监督信号是完整句子而不是 one-hot。假说是:当规模足够大(论文选 4 亿对,比此前同类工作大一个数量级以上),视觉表征会学到与语言对齐的语义空间,分类就退化为「图像嵌入与文本嵌入的相似度比较」——零样本迁移自然发生。
方法
数据先行:构建 WIT-400M(WebImageText)——从网络抓取的 4 亿图文对。工程大头是数据清洗:按 50 万查询词平衡采样(避免「狗的照片」统治数据集),去重、NSFW 过滤。这个数据集的构建比模型架构重要得多。
双塔结构:
- 图像编码器:两个家族——ResNet(改用 Attention Pooling 替代全局平均池化)与 ViT;从 ResNet-50 到 ViT-L/14 多档规模
- 文本编码器:Transformer(63M,取 [EOS] token 的输出做句子嵌入)
- 两个嵌入各自线性投影到共享的 512 维空间(模态对齐层),再做 L2 归一化
对比目标(InfoNCE 的对称版):batch 内 N 个图文对组成 N×N 相似度矩阵;对角线是正样本对。图像→文本方向的交叉熵 + 文本→图像方向的交叉熵(对称损失,双向都学)。有效 batch size 32,768——跨 GPU 收集 embedding 的「梯度缓存」工程是关键实现。
Prompt 工程(推理侧的关键设计):零样本分类时,类别名填入模板「a photo of a {label}」,与所有类别的文本嵌入比相似度。更进一步:对 ImageNet 用 80 个模板的 prompt 集成(「a photo of a {}」「a bright photo of a {}」……),把「标签作为孤立句子」的分布失配问题消解掉——这个细节带来 ~3.5% 的提升,是「文本侧数据增广」思想的起点。
训练配方:AdamW、5 epoch、大 batch、512 V100 训 18 天(ViT-L/14 版);温度系数可学习。
实验设置
- 预训练:WIT-400M,4 亿对;模型矩阵从 ResNet-50 到 ViT-L/14(最大 ~400M 参数级)
- 零样本评测协议:27 个数据集(ImageNet、CIFAR/SVHN、OCR 类、细粒度识别、视频动作、地理识别……),每个数据集手工设计 prompt 模板;评测前不看测试集(避免「在基准上调参」的嫌疑——这是零样本协议的诚信条款)
- 对照:全监督 ResNet-50(ImageNet 1.2M 训练)、word2vec 标签嵌入基线(证明不是「语言先验」的功劳)、自监督 SimCLR/BiT 线性探测
- 维度分析:规模(1M→400M 数据)、监督信号类型(对比 vs 生成式caption)、few-shot 曲线(CLIP 的 few-shot 是「往上下文里加标签」的独特形式)
结果
- 零样本 ImageNet top-1 达 76.2%——与全监督 ResNet-50(76.4%)打平,且没看过 ImageNet 的任何训练图;对比只用 word2vec 的标签嵌入基线(11.5%)——语义来自视觉-语言联合学习,不是语言先验
- 27 个数据集中 16 个上,零样本 CLIP 超过全监督 ResNet-50 的线性探测——「不训练就赢过训练」的历史性时刻
- 弱项同样清晰:细粒度分类(花、汽车型号)、OCR/计数类任务(MNIST 只有 88%——网络图文里手写数字罕见,数据分布决定能力)、需要系统性组合推理的任务
- few-shot 评测:1-shot 起步就很高(标签即上下文),2→16 shot 缓慢爬升、20 shot 后被「传统迁移微调」反超(线性探测 BiT)——CLIP 的能力「前重后轻」
- 规模曲线:零样本能力随数据 1M→400M 平滑上涨且不饱和;文本塔去掉对比损失(改生成式 caption)在等效算力下明显更差——对比目标对「对齐」更高效
有趣的洞见
分类器的形态被改变了:从「训练时固定」到「运行时拼装」。传统视觉系统里,类别集合焊死在输出层权重里;CLIP 把分类变成检索——文本嵌入就是分类器权重,「苹果」「狗」「油画风格的柯基」可以任意组合、任意粒度地即时生成。开放词汇检测(OWL-ViT、Grounding DINO)与后来的「提示即接口」范式都从这里出发。
「免费监督」的真实成本。WIT-400M 的监督确实免费(alt text 自带),但账单延迟支付:网络图文对把社会的性别/种族刻板印象(护士-女、CEO-男的统计关联)原样搬进嵌入空间,后来的偏见审计(如「CLIP 显微镜」系列)证明这是系统性而非随机的。「数据是互联网的采样」既是 CLIP 的超能力(规模)也是它的原罪(偏见与毒性)。
CLIP 空间成了多模态的「世界语」。后续生态几乎都建在它的几何之上:DALL·E 2 用 CLIP 空间做先验与解码器、Stable Diffusion 1.x 直接把冻结 CLIP 文本塔当条件编码器、检索/重排序/分类产品链无数。甚至「用 CLIP 相似度当文生图裁判」成了事实标准评测。学到的嵌入空间比模型本身更长寿——ViT 权重换了一代又一代,CLIP 的对齐空间语义沿用至今。
批判性评价
最弱的一环:双塔的「最后一公里」交互缺失。图文各自编码、只在最后做一次点积——这意味着词与区域级的细粒度对应(「红方块左边的蓝球」)在架构上就表达不出来,数数与组合推理的系统性失败是结构性的而非数据性的。补这个洞需要交叉注意力(ALBEF/BLIP/Flamingo 路线),而那要付出推理成本——「编码效率 vs 交互深度」的权衡至今没有终局。另外「零样本」的说法有营销成分:prompt 模板与类名设计本身就是一种 few-shot 工程。
依然重要的理由:它证明了「监督信号可以从世界的自然配对中免费获得」,这个思想直接孵化了后续一切「用自然语言监督 X」的工作(AudioCLIP、PointCLIP、ProteinCLIP、SigLIP……),也是 GPT-4V 时代「一切模态向语言对齐」格局的地基。理解 CLIP 空间的几何(用提示相似度即可操纵概念的位置),就理解了现代文生图为什么会「听懂」文字。