CLIP: Learning Transferable Visual Representations
Radford et al.
4 亿图文对 + 对比学习——零样本图像分类能和监督训练的 ResNet 匹敌。
arXiv:2103.00020核心贡献
- 01双塔架构:Image Encoder + Text Encoder,独立处理
- 02对比学习目标:真实图文对相似度高,错配图文对相似度低
- 034 亿规模网络图文对训练(WIT dataset)
- 04零样本分类:把类名变成 prompt("a photo of a {class}"),和图像向量比余弦相似度
- 05成为所有现代多模态模型的视觉基础(LLaVA、BLIP、Stable Diffusion 都用 CLIP encoder)
架构与训练
双塔结构
1Image → [ViT/ResNet] → image_emb2Text → [Transformer] → text_emb3→ cosine_sim(image_emb, text_emb)
两个 encoder 独立;训练时共享 temperature τ 的 softmax。
对比损失(InfoNCE)
一个 batch 的 N 对 (image, text) 构成 N×N 相似度矩阵。对角线是正样本,其他都是负样本:
前一项:每张图要匹配到正确文本;后一项:每段文本要匹配到正确图。两个方向对称。
零样本分类
训练完不做下游微调。分类任务:
- 把类名变 prompt:
["a photo of a cat", "a photo of a dog", ...] - 用 text encoder 编码所有 prompt
- 给定测试图,用 image encoder 编码
- 余弦相似度最高的 prompt 对应的类即预测
关键因素
- 规模:4 亿图文对(之前最大数据集只 1500 万)
- 覆盖面:网络上几乎所有视觉概念都覆盖
- 对比学习 vs 生成式:对比学习只需判断对错,比生成高效得多
面试考点
"对比学习为什么 work?" 信号来自"什么应该相似"和"什么不应该相似"——比纯监督信号丰富。本质是在学一个语义对齐的联合向量空间。
"为什么 batch size 对 CLIP 这么重要?" 对比学习每个正样本需要大量负样本。batch=1024 比 batch=256 效果显著好。这也是 CLIP 训练基础设施要求高的原因。
"CLIP 的局限?"
- 细粒度不敏感(难区分"金毛"和"拉布拉多")
- 组合能力弱("红色的球在绿色的桌子上" 不一定理解)
- 文字识别弱(不能 OCR)
"CLIP vs BLIP vs ALIGN?"
CLIP: 双塔对比,零样本分类强BLIP: 加生成头,同时做图像 caption 和对齐- ALIGN: 和
CLIP思路一样但更大规模(10 亿)
"CLIP 在 VLM 里扮演什么角色?" CLIP 的 vision encoder 被几乎所有现代 VLM 用作视觉主干(LLaVA、Qwen-VL、InternVL 都用)。CLIP-ViT-L/14 是事实标准选择。
"为什么 LLaVA 不用纯 ViT 而用 CLIP-ViT?" CLIP-ViT 已经和语言对齐,和 LLM 的表征空间更接近,仅需一层 projection 就能用。纯 ViT 要从头对齐。