CLIP、图文对齐与跨模态表示学习
1. 基本架构:双塔模型与对比目标
CLIP(Contrastive Language-Image Pre-training)由 OpenAI 提出,其核心思想极为简洁:用两个编码器分别将图像和文本映射到同一个共享语义空间,使得配对的图文样本在该空间中彼此接近,未配对的样本则相互远离。
关键组件:
- 图像编码器
:通常为 ViT 或 ResNet,将图像 映射为特征向量 - 文本编码器
:通常为 Transformer,将文本 映射为特征向量 - 投影层:将
和 投影到统一的空间 ,并进行 归一化:
为什么需要归一化? 归一化后,点积等价于余弦相似度:
。这样相似度被压缩到 区间,学习目标更加稳定。同时,归一化消除了特征向量模长的干扰,使得相似度完全由方向决定。
2. 对比学习的数学推导
2.1 相似度矩阵
给定一个 batch 包含
相似度矩阵(logits)为双塔输出的点积:
在第
为什么负样本出现在这里? 对比学习的核心假设是:一个 batch 中只有对角线上的
是配对的。任何 都是噪声负样本——文本描述的并非图像内容。这使得我们可以在不需人工标注的情况下,从海量互联网数据中自动构造正负样本。
2.2 InfoNCE 损失函数
从互信息的角度,CLIP 最大化配对图文之间的互信息下界(InfoNCE)。对于图像
其中
对称地,文本到图像的损失为:
总损失:
这就是对称损失(symmetric loss)——同时优化图像→文本和文本→图像两个方向。为什么要对称?因为仅优化单一方向时,一个模态的信息可能主导另一个模态的表达,对称结构强迫两个模态的表示空间相互一致。
2.3 温度系数 的作用
温度系数控制 softmax 分布的锐利程度,直接影响模型区分正负样本的能力:
较大(如 ):指数函数输出趋于平滑,模型学习较慢,但对困难负样本的梯度更大 较小(如 ):分布锐利,容易区分正负样本,但可能导致梯度消失于简单样本
实践中,
2.4 对比学习为什么能将两个模态对齐到同一空间
理解这一点的关键在于对比学习的归纳偏置:如果图像编码器和文本编码器各自独立地学习,那么只有当两个模态的表示空间在几何上对齐时,配对样本的相似度才能同时高于所有非配对样本。
直观上:对于每对正样本
3. 零样本分类的原理
3.1 从文本生成监督信号
传统分类需要固定的标签集合
推理时,图像
3.2 为什么零样本分类有效
核心原因:预训练阶段模型已经学会了将”图像内容”与”描述该内容的文本”映射到共享空间。当我们用新的类别文本构造提示(prompt)时,这些文本描述的概念与预训练时见过的概念高度重叠(因为预训练数据本身就是从互联网采集的图文对)。
具体地,零样本分类可以理解为在嵌入空间中的最近邻搜索。类别文本的嵌入定义了空间中的一些方向/区域,图像嵌入落在哪个区域就属于哪个类别。
重要洞察:CLIP 本身并不是一个分类器,而是一个开放的视觉-语言对齐模型。分类能力是从对齐空间中”派生”出来的——这与传统的监督分类器有本质区别。
4. 开放词汇识别与图文检索
4.1 开放词汇识别
传统视觉模型只能识别训练集中出现过的类别,而 CLIP 通过自然语言 supervision 获得了开放词汇能力:
- 文本描述可以是任意词汇组合
- 新类别只需提供文本描述,无需重新训练模型
- 本质是利用语言模型的泛化能力和视觉表征的组合性
4.2 图文检索
图文对齐的另一个直接应用是跨模态检索:
- 图像检索文本:给定图像,在文本库中搜索最匹配的描述
- 文本检索图像:给定文本,在图像库中搜索最匹配的图像
CLIP 将两个模态映射到同一空间后,检索问题被转化为简单的相似度排序问题。
5. 训练流程与工程实践
5.1 数据收集与清洗
互联网上采集的图文数据存在严重噪声,质量控制是训练成功的关键:
| 噪声类型 | 具体表现 | 处理方法 |
|---|---|---|
| 图文不匹配 | 文本描述与图像内容无关 | 使用 CLIP 本身对图文对打分,过滤低分样本 |
| 垃圾文本 | 无意义标题、SEO 关键词堆砌 | caption 质量过滤,移除过短或过长的文本 |
| 重复数据 | 近似重复的图像或文本 | 去重(图像指纹或文本相似度) |
| 分布偏置 | 某些类别过度代表 | 类别平衡采样或重加权 |
5.2 Caption 质量过滤
原始 alt 文本和互联网标题质量参差不齐,通常需要:
- 长度过滤:移除过短(如 < 3 词)或过长(如 > 77 tokens)的文本
- CLIP Score 过滤:用预训练的 CLIP 模型计算图文相似度,过滤低于阈值的样本
- 语言识别:仅保留目标语言的文本(如英语)
- 语法检验:移除包含乱码、特殊字符堆积的文本
5.3 Batch 构造与大批量训练
CLIP 的对比学习目标要求每个 batch 包含足够多的负样本:
- batch size 的重要性:负样本数量 =
(对于每个正样本对)。 越大,搜索空间越丰富,表示学习越充分 - 典型配置:单个 GPU batch size 为 64-128,多卡训练时总 batch size 可达 4096-8192
- 内存优化:混合精度训练(FP16/BF16)、梯度累积、DeepSpeed ZeRO Stage 2/3
5.4 多 GPU 通信与吞吐量
大规模训练中的通信开销是不可忽视的瓶颈:
- 梯度同步:数据并行下,每个 GPU 计算本地梯度后需要 AllReduce 同步
- 通信带宽:高分辨率图像编码器和长文本编码器的梯度通信量巨大
- DeepSpeed ZeRO:分片优化器状态以减少显存和通信量
- 通信-计算重叠:使用异步梯度同步掩盖通信延迟
- Megatron-LM:如果使用模型并行,需仔细设计张量切分策略
6. CLIP 与相关模型的关系
6.1 CLIP 与分类器
| 维度 | 传统分类器 | CLIP |
|---|---|---|
| 监督信号 | 固定标签 | 自由文本描述 |
| 类别数量 | 训练时确定 | 推理时自由扩展 |
| 开放词汇 | 否 | 是 |
| 表征性质 | 任务特定 | 通用视觉-语言对齐 |
CLIP 的预训练表征可以作为通用特征用于各种下游任务,而传统分类器的特征是针对固定任务优化的。
6.2 CLIP 与生成模型
- CLIP 作为判别式对齐模型:学习的是”什么图像配什么文本”,直接优化的是匹配度量
- 生成模型(如 DALL-E、Stable Diffusion):学习的是”文本生成图像的条件分布”,优化的是生成质量
- 互补关系:CLIP 的视觉编码器常被用作生成模型的文本编码器(如 Stable Diffusion 2.0 使用 OpenCLIP);而 CLIP 分数也被用于引导生成过程(Classifier-Free Guidance 的思想来源之一)
6.3 CLIP 与视觉语言模型(VLM)
CLIP 是现代 VLM 的基础组件:
- 视觉编码器:CLIP 的图像编码器提供了与文本对齐的视觉表征
- 表示空间:CLIP 的对齐空间使得跨模态信息融合成为可能
- 预训练权重:OpenCLIP 等开源模型的权重直接被 LLaVA、Blip-2 等模型用作视觉塔
从 CLIP 到 VLM 的演进路径:
CLIP(双塔图文对齐)
→ ALIGN(更大规模的CLIP)
→ Flamingo(冻住CLIP视觉编码器,训练LLM与视觉对齐)
→ LLaVA(将CLIP视觉特征注入LLaMA)
→ GPT-4V 等多模态大模型
7. CLIP 的局限性
7.1 细粒度理解不足
CLIP 的表征是全局性的、对齐导向的,对于需要局部细节理解的任务表现不佳:
- 物体计数:难以准确数出图像中物体的个数
- 空间关系推理:无法理解”左边的物体”vs”右边的物体”
- 局部特征匹配:无法精确对应图像局部与文本描述的片段
7.2 推理能力有限
CLIP 本身不具备逻辑推理能力:
- 无法处理多跳推理问题
- 无法处理复杂的数学问题
- 无法理解需要 world knowledge 的问题
7.3 分布偏置与公平性问题
- 训练数据偏置:互联网图文数据存在系统性偏置(如西方文化主导、英语为主)
- 虚假相关性:模型可能学习到表层的统计关联而非真正的语义理解
- 长尾分布:某些稀有事物的图文对数量少,表征质量差
7.4 标注噪声的影响
互联网图文数据中必然存在大量噪声:
- 文本可能只描述了图像的一个局部
- 图像可能包含多个文本未提及的元素
- 某些图像-文本对来自自动生成的元数据而非真实描述
这些噪声直接影响模型学到的对齐质量,数据清洗的重要性再怎么强调都不为过。
8. CLIP 训练注意事项
-
数据质量 > 数据数量:原始 CLIP 使用的 4 亿图文对经过了多轮清洗。在数据质量有限的情况下,盲目增大 batch size 或模型规模并不能弥补数据噪声带来的影响。
-
Batch Size 与负样本数量:每个 GPU 的 batch size 直接决定负样本数量。分布式训练时,建议确保总 batch size 在 4096 以上,以获得足够的对比学习搜索空间。
-
温度系数初始化:
不要初始化得太小(如 < 0.01),否则初始化阶段梯度几乎为零。可以使用可学习的 (原始 CLIP 的做法),或固定在 0.07 左右。 -
图像分辨率:CLIP 的 ViT 图像编码器通常使用 224×224 输入。更高的分辨率能提升细粒度任务表现,但显著增加训练成本。建议根据下游任务需求在 224/336/512 中选择。
-
文本编码器的处理:文本 tokenizer 后通常截断到 77 tokens。caption 质量比文本长度更重要,过长但无信息量的文本同样有害。
-
混合精度训练:梯度在 FP16/BF16 下计算,注意 loss scaling 以避免下溢。DeepSpeed ZeRO 配合混合精度是当前主流实现方式。
-
学习率调度:CLIP 通常使用 cosine annealing 或 constant + warmup 的调度。图像编码器通常需要更小的学习率(尤其当使用预训练权重时)。
-
训练不稳定的处理:大规模 CLIP 训练偶尔会遇到 loss spike。使用梯度裁剪(gradient clipping)并监控 token 级别的梯度范数。
-
评估协议的一致性:零样本分类的 prompt 设计对结果影响显著。务必使用与论文一致的 prompt 集合(如 80 类 ImageNet 分类使用的 80 个 prompt)进行公平比较。
-
分布式训练通信:使用 NCCL 后端确保高效的 GPU 间通信。ZeRO Stage 2 在精度和通信开销之间有较好平衡,Stage 3 进一步降低显存但通信量增加。
9. Image-Text Alignment 评估 Checklist
9.1 表征对齐质量评估
- 图文相似度分布:配对样本的相似度应显著高于非配对样本(Gap 检验)
- CLIP Score 分布:可视化正负样本的相似度直方图,Gap 应清晰可分
- 最近邻检索精确率:在验证集中,图像→文本和文本→图像的 Recall@K 为多少
- 对称性检验:图像编码器空间中文本最近邻的分布 vs 文本编码器空间中图像最近邻的分布是否一致
9.2 下游任务评估
- 零样本分类:在 ImageNet、CIFAR、Caltech 等标准数据集上测试 top-1/5 精确率
- 细粒度分类:在鸟类、汽车、花卉等细粒度数据集上评估
- 图文检索:MS COCO Captions、Flickr30k 等标准检索benchmark的 Recall@1/5/10
- 分布迁移测试:在非自然分布的图像(如艺术画、漫画)上测试零样本能力
- 多语言迁移:验证多语言 CLIP 模型在非英语图文对上的表现
9.3 工程与稳健性评估
- Prompt 敏感性:不同 prompt 措辞对零样本分类结果的影响幅度
- 噪声鲁棒性:在人造噪声图文对(随机打乱配对)上测试模型的区分能力
- 公平性评估:在不同人口属性子群体上的表现差异
- Cross-modal 检索延迟:在线服务场景下,图文检索的 P99 延迟是否满足需求
- 模型规模扩展性:从 ViT-S → ViT-B → ViT-L → ViT-H 的 scaling curve 是否符合预期
9.4 生成模型集成评估
- 作为文本编码器的效果:将 CLIP 视觉编码器集成到生成模型后的 FID/CLIP Score
- Guidance 权重敏感性:Classifier-free guidance 权重对生成质量的影响
10. 总结
CLIP 的核心贡献在于证明了大规模图文对比学习可以自发地在视觉和语言之间建立语义对齐。通过双塔架构和 InfoNCE 损失,模型无需人工标注即可学习到开放词汇的视觉概念。从这个共享表示空间出发,零样本分类、开放词汇识别、跨模态检索等能力自然涌现。
理解 CLIP 的关键是理解对比学习”为什么能对齐两个模态”:当正负样本以(batch, pair)的方式组织时,唯一能让所有正样本的相似度同时高于负样本的数学条件,就是两个模态的表示空间在语义几何上高度一致。这个约束强制图像编码器和文本编码器学习彼此兼容的特征空间。
CLIP 作为多模态大模型时代的基础组件,其影响力远超其本身的分类和检索任务。几乎所有现代 VLM 的视觉编码器都直接或间接继承了 CLIP 的视觉-语言对齐范式。