先这样答
CLIP 是一个基于对比学习的双塔模型,包含独立的图像编码器和文本编码器。它的核心机制是将图像和文本映射到共享的向量空间中。训练阶段,模型使用海量图文对进行对比学习。在一个批次的数据中,互相匹配的图文对作为正样本,模型会拉近它们在向量空间中的距离;批次内不匹配的图文组合作为负样本,模型会推远它们的距离。这种基于 InfoNCE 类损失的方法,让模型学会了理解图文的语义对应关系。其效果高度依赖于图文对数据的规模和质量。
它能做零样本分类,是因为把传统的分类问题转换成了图文检索问题。推理时,不需要重新训练分类头。它的做法是把所有候选类目名称套用在文本模板里,比如写成「一张猫的照片」,用文本编码器将这些提示转换成文本向量。接着,用图像编码器提取待分类图片的向量。最后,计算图像向量与所有候选文本向量的相似度,相似度最高的文本对应的类目就是分类结果。这里的分类器实际上被替换成了文本提示,类目不需要在训练集中出现过,这就是零样本能力的来源。
这种机制也带来了一些局限。CLIP 对细粒度分类任务表现一般,通常需要针对特定领域做提示工程。同时,它在处理计数和复杂的空间位置关系时能力较弱,且对提示的措辞敏感。不过它已成为检索任务和视觉语言模型的基础组件,很多大模型的视觉塔用的就是 CLIP 系列。总结来说,CLIP 的核心机制就是两点——双塔对比对齐与提示即分类器。
面试官会怎么追问
- 「CLIP 训练时的负样本是怎么构造的?」 负样本直接来自同一个批次内的其他样本。在一个批次中,除了互相匹配的正样本,其余不匹配的交叉组合都作为负样本计算对比损失,不需要额外挖掘负样本。
- 「现在的多模态大模型里还会用到 CLIP 吗?具体怎么用的?」 依然会使用。CLIP 的图像编码器常被用作视觉语言模型的视觉塔,提取图像特征。这些视觉特征会经过投影层转换到大语言模型的输入空间中,让语言模型理解视觉信息。
- 「如果用 CLIP 做细粒度分类效果不好,该怎么解决?」 效果不好是因为模型对提示措辞敏感且缺乏细粒度对齐。解决方向是进行领域提示工程,把类目描述写得更具体,或者在特定领域数据上对模型微调。
回答的坑
误以为 CLIP 是生成模型,正确方向是明确指出它是双塔结构的对比学习模型,不具备生成能力。
解释零样本分类时没有提到文本模板,正确方向是强调必须把类目名称构造成类似「一张某某的照片」的文本提示,这是替代传统分类器的关键。
同系列的题