对比学习 · 图文对齐到同一空间
传统视觉模型是"给图打标签"——1000 个固定类别。CLIP 不预设类别,它学的是"图和字的关系"。
训练时,一个 batch 拿 N 对(图,描述文字)。图过图像编码器得向量 I,字过文本编码器得向量 T。目标是:让匹配的 Iᵢ 和 Tᵢ 余弦相似度大,不匹配的(Iᵢ 和 Tⱼ, i≠j)相似度小。这就是 InfoNCE 对比损失。
训练完,两个编码器把图和字映射到同一空间。零样本分类:给一张图,把它和"一只猫""一只狗""一辆车"等候选文字各算相似度,取最大的——不用训练就能分类新类别。这是 CLIP 的革命性:类别随文字自由扩展。
选一张图,看 CLIP 怎么把它和候选文字对齐——匹配的相似度高,不匹配的低。
Stable Diffusion 生成时,用户输入"一只赛博朋克猫"。这段文字先过 CLIP 文本编码器(或其变体),得到一个条件向量,注入 U-Net 的每一步去噪,引导生成方向。没有 CLIP,扩散模型听不懂你要画什么。
一个常见坑:CLIP 的对齐是统计对齐不是语义对齐。"一只猫"和猫图向量近,是因为训练数据里它们共现,不是因为模型"懂"猫是什么。所以 CLIP 会犯反常识的错——把反讽文字对齐错、把抽象概念对齐偏。它是强大的相似度工具,不是真正的理解。