多模态

CLIP 与对比学习:多模态的基石

CLIP 用「图文对」做对比学习,把图像和文本映射到同一向量空间,从而实现零样本分类。它是现代多模态(VLM、扩散、图文检索)的共同地基。本文讲清双塔、对比损失与零样本机制。

一句话回答

CLIP(Contrastive Language–Image Pre-training)用海量「图片+文字」配对做对比学习:让「配对的图文」向量相近、「不配对」的相远。结果图像和文本被塞进同一个向量空间——于是用文字就能检索图、图也能零样本分类。它是多模态时代的地基。

动机:摆脱固定标签

传统视觉模型在固定标签集(如 ImageNet 1000 类)上训,换任务就重训。CLIP 改用自然语言监督:互联网上现成的「图+描述」对就是免费标注,监督信号丰富得多,且天然支持开放词汇。

核心洞察:文字能描述任意概念,用「图文对齐」替代「类别 one-hot」,模型学到的表示更通用。

双塔结构

两个独立编码器,分别把图像和文本编码成同维向量:

Image Encoder
ViT 或 ResNet,输出图像向量。
Text Encoder
Transformer,输出文本向量。
两塔分别编码 → 映射到同一空间 → 算相似度 图像 Image Enc 文本 Text Enc → 同一向量空间 ←

对比损失(InfoNCE)

一个 batch 内有 N 个图文对。对每对 (i,i),正样本是它自己,其余 N−1 个图文组合是负样本。目标:对角线上的相似度最高。

L = −log [ exp(sim(i,i)/τ) / Σ_{j} exp(sim(i,j)/τ) ]
相似度矩阵:对角线=正样本(配对),应最大 正样本=绿(配对图文) 负样本=其余组合 温度 τ 调对比锐度

零样本分类(Zero-shot)

推理时不需任何训练样本:把候选类别名写成 prompt(如 "a photo of a {class}"),与图像编码算余弦相似度,取最相似的类别。

这意味着 CLIP 能分类它从没专门训过的类别——只要能用文字描述,就能识别。开放词汇、泛化极强。

为什么是多模态基石

VLM 初始化
LLaVA 等把 CLIP 图像编码器接进 LLM,作为视觉输入。
图文检索 / RAG
图文映射到同空间,直接向量检索。
扩散模型条件
用文本编码器(同族)给文生图提供条件。
开放词汇检测
Region-CLIP、GLIP 等把检测转成图文匹配。

局限

  • 细粒度/抽象弱:对复杂关系、罕见概念、带歧义文字的图仍易错。
  • 依赖图文对质量:网页图文常不齐,噪声影响表示。
  • 不真正"理解":是对齐向量,不是世界模型。

总结