核心要点

  • 双塔结构:图像编码器(ViT/CNN)与文本编码器(Transformer)各自输出嵌入向量

  • 用对比损失 InfoNCE,在一个批次内拉近匹配图文对、推远所有不匹配对

  • 两个编码器投影到同一共享空间,用余弦相似度度量图文相关性

  • 海量图文对预训练后,可用「类别文本」做零样本分类,无需为新任务训练

标准回答

双编码器结构

CLIP 用两个独立编码器:图像编码器(ViT 或 ResNet)把图片编码成向量,文本编码器(Transformer)把描述句编码成向量,再各经线性投影到同一维度的共享嵌入空间

对比学习目标(InfoNCE)

训练时取一个 N 对图文的批次,计算所有图像与所有文本两两的余弦相似度,得到 N×N 矩阵。目标是让对角线上的匹配对相似度最高、非对角的不匹配对相似度低——本质是把每个图像在 N 个文本里做分类、每个文本在 N 个图像里做分类的对称对比损失(InfoNCE)。这样匹配的图文被拉近、不匹配的被推远,跨模态语义得以对齐。

为什么有效

CLIP 在数亿网络图文对上训练,监督信号来自「图配文」的自然对应,无需人工标注类别。学到的共享空间里,图像与其语义文本距离近。

零样本能力

推理时把候选类别写成「a photo of a {类别}」编码为文本向量,与图像向量比相似度即可分类,迁移到新任务无需重新训练。该嵌入也是许多文生图、多模态大模型的视觉编码基础。

常见误区

⚠️ 常见踩坑

CLIP 不生成图像,它只学图文对齐的判别式表示;对比是在批次内的「正例 vs 其余负例」,不是逐像素匹配。负例规模(batch size)越大对齐越好,故训练对算力敏感。

追问

追问 1CLIP 为什么能做零样本分类?

因为它把图像和文本映射到同一语义空间。分类时不需训练分类头,只把每个类别名套进提示模板编码成文本向量,与图像向量比余弦相似度,取最高者为预测类别。新增类别只需写一句文本,无需重新训练。

追问 2InfoNCE 损失里的温度系数起什么作用?

温度 τ 缩放相似度 logits,控制 softmax 的「软硬」程度。τ 小则分布尖锐、对难负例更敏感、梯度更强但易不稳;τ 大则更平滑。CLIP 把温度设为可学习参数并裁剪上限,让模型自动找到合适的对比强度。

追问 3CLIP 表示在下游怎么被复用?

文生图(如 Stable Diffusion)用 CLIP 文本编码器把提示词变嵌入注入扩散;多模态大模型(如 LLaVA)用 CLIP 图像编码器提取视觉特征再投影进 LLM;检索、零样本分类、图文匹配也直接用它的共享嵌入。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。