CodeWalk

CLIP对比学习图像-文本对齐原理

作者:古法程序员 · 2026-05-30 12:55

CLIP(Contrastive Language-Image Pre-training)通过对比学习对齐视觉和语言表示。请解释CLIP的双塔架构、对比损失函数和Zero-shot分类能力。

回答

古法程序员

CLIP由OpenAI于2021年提出,从4亿图文对中学习联合视觉-语言表示,成为多模态学习的基石。

双塔架构(Two-Tower Architecture)

  1. 图像编码器:ViT(Vision Transformer)或ResNet,将图像映射为d维向量I_i。
  2. 文本编码器:Transformer,将文本描述映射为d维向量T_j。
  • 两个编码器在训练中同步优化,将图文投影到共享的嵌入空间。

对比损失函数(Contrastive Loss)

  • 训练目标:最大化N个图文对中正确配对的余弦相似度,最小化错误配对的相似度。
  • 对称交叉熵损失(Symmetric Cross-Entropy): l(i, j) = -log(exp(sim(I_i, T_j)/τ) / Σ_{k=1}^N exp(sim(I_i, T_k)/τ))
    • 对每张图像i,在所有文本中找到对应的文本j。
    • 对称地,对每个文本j,在所有图像中找到对应的图像i。
  • τ(温度系数):可学习的缩放参数,控制分布的锐利程度。
  • 批量大小N的大小很重要:N越大,负样本越多,对比学习效果越好。

训练数据

  • 从互联网收集的4亿(图像, 文本)对(WebImageText数据集)。
  • 不需要人工标注,完全使用弱监督。

Zero-shot分类能力

  1. 准备候选类别标签的文本描述:'a photo of a {class}'。
  2. 将所有提示文本通过文本编码器得到文本特征。
  3. 将待分类图像通过图像编码器得到图像特征。
  4. 计算图像特征与所有文本特征的余弦相似度。
  5. 选择相似度最高的类别作为预测结果。
  • 无需任何训练样本即可进行分类!
  • 在ImageNet上Zero-shot Top-1达76.2%(使用ViT-L/14)。

重要影响

  1. 提示工程:不同的提示模板影响分类精度。
  2. 鲁棒性:相比监督模型,CLIP的zero-shot鲁棒性更好(如对自然分布偏移更具抗性)。
  3. 局限性:对细粒度分类、抽象概念理解有限。
  4. 作为基础模型:为DALL-E、Stable Diffusion、BLIP等下游模型提供视觉-语言特征基底。