跳转至

4.1 CLIP 全解:架构、训练、损失与特征

所属章节:第 4 章 条件控制与个性化
课时:90 分钟
前置:Transformer 基础、对比学习直觉
对应面试题:A1、A15
一句话目标:学完能写 CLIP 双塔结构和对称 InfoNCE,解释零样本,并分析 CLIP 特征在 AIGC 中的优缺点。


1. 学习目标

学完本节,你应该能够:

  1. 画出 CLIP 的双塔架构;
  2. 写出 对称 InfoNCE 损失;
  3. 解释 大 batch、温度、L2 normalize 的作用;
  4. 说明 CLIP 如何做零样本分类;
  5. 列出 CLIP 特征的 5 个局限;
  6. 解释 SD 为什么用 CLIP、SD3 为什么加 T5;
  7. 用 90 秒回答 A1/A15。

2. 为什么 AIGC 面试总问 CLIP

CLIP 在 AIGC 里有四个位置:

  1. 文本编码器:SD1.x/2.x 用 CLIP 把 prompt 变成 token 特征;
  2. 图像编码器:IP-Adapter 用 CLIP 图像特征做 image prompt;
  3. 评估:CLIPScore 衡量图文对齐;
  4. 检索/零样本:多模态应用的基础模型。

所以 CLIP 不是“一个分类模型”,而是图文语义空间的基础设施。


3. 双塔架构

3.1 图像编码器

  • ResNet-50/101;
  • 或 ViT-B/32、ViT-B/16、ViT-L/14;
  • 输出图像特征 \(u\)。

3.2 文本编码器

  • Transformer;
  • BPE tokenizer;
  • 取 [EOS]/末位 token 的表示;
  • 输出文本特征 \(v\)。

3.3 投影与归一化

  • 图像/文本特征分别线性投影到共享维度(如 512/768);
  • L2 normalize;
  • 用 cosine 相似度。

3.4 温度

  • 可学习的 logit scale;
  • 控制 softmax 的锐度;
  • 常写成 \(\exp(t)\) 或 \(1/\tau\)。

3.5 架构图

图像 ──Image Encoder──> u ──project──> u/||u||
文本 ──Text Encoder───> v ──project──> v/||v||
                                      │
                                      ▼
                              cosine 相似度矩阵

4. 训练方法与损失

4.1 数据

  • 约 4 亿图文对;
  • 网络爬取;
  • 图像只做随机裁剪/缩放等轻量增强;
  • 文本用 BPE tokenizer,截断/填充。

4.2 大 batch

  • 典型 batch 32,768;
  • 每个 batch 内,图像和文本两两计算相似度;
  • 对角线是正样本,其余是负样本;
  • batch 越大,负样本越多,对比信号越强。

4.3 对称 InfoNCE

设图像特征 \(u_i\)、文本特征 \(v_j\),温度 \(\tau\):

\[ s_{ij}=\frac{u_i^\top v_j}{\tau}. \]

损失:

\[ \mathcal L =-\frac{1}{2N}\sum_{i=1}^{N} \left[ \log\frac{e^{s_{ii}}}{\sum_{j=1}^{N}e^{s_{ij}}} + \log\frac{e^{s_{ii}}}{\sum_{j=1}^{N}e^{s_{ji}}} \right]. \]
  • 第一项:image-to-text;
  • 第二项:text-to-image;
  • 对角线正样本;
  • 其余为负样本。

4.4 为什么用对比学习

  • 不需要人工类别标签;
  • 图文对天然提供正样本;
  • 大 batch 提供负样本;
  • 学到的空间适合零样本/检索。

5. 零样本分类

步骤:

  1. 为每个类别构造 prompt,如 “a photo of a {class}”;
  2. 文本编码器得到每个类别的文本特征;
  3. 图像编码器得到图像特征;
  4. 算 cosine 相似度;
  5. 取最高分。

提升技巧:

  • prompt ensemble:多个模板取平均;
  • 类别同义词;
  • 领域 prompt。

6. CLIP 特征的优点

  1. 语义强:大规模图文对比学习,捕捉对象/场景/风格;
  2. 零样本:不需要下游标签;
  3. 共享空间:图像/文本可直接算相似度;
  4. 鲁棒:对域偏移通常比 ImageNet 监督模型稳;
  5. 工程友好:可冻结、推理快、生态成熟;
  6. 图像特征适合全局条件:IP-Adapter、风格参考、图文评估。

7. CLIP 特征的缺点

  1. 77 token 限制:长 prompt 被截断;
  2. bag-of-words:弱词序、否定、数量、空间关系;
  3. 组合性弱:属性绑定容易错;
  4. 细粒度空间弱:图像特征是全局语义,不适合密集预测;
  5. 计数弱:不擅长“几个物体”;
  6. 提示词敏感:模板/同义词/标点影响结果;
  7. 数据偏差:性别、种族、文化偏见;
  8. 模态 gap:图像/文本特征仍存在分布差异;
  9. CLIPScore 可被刷:相似度高不等于生成质量好。

7.1 一个例子

Prompt:“a red cube on a blue sphere.”

CLIP 可能捕捉到 red/blue/cube/sphere,但不一定正确绑定“红方块在蓝球上”。这就是组合性/属性绑定问题。


8. CLIP 在 SD 中的使用

8.1 SD 1.x/2.x

  • CLIP 文本 token → cross-attention 的 K/V;
  • 文本编码器冻结;
  • 77 token。

8.2 SDXL

  • CLIP-L + OpenCLIP bigG;
  • token 特征拼接;
  • pooled text embedding 加入时间步条件;
  • 更强语义/风格。

8.3 SD3

  • CLIP-L + OpenCLIP bigG + T5-XXL;
  • T5 补长文本/组合推理/文字渲染;
  • CLIP 仍提供强语义。

8.4 IP-Adapter

  • CLIP 图像编码器提取参考图特征;
  • 投影后做 image prompt;
  • 不需要文本描述风格。

9. 90 秒回答:CLIP 的架构、训练、损失

面试官问:介绍 CLIP 的模型架构、训练方法与损失函数。

参考回答:

“CLIP 是双塔模型:图像编码器用 ResNet 或 ViT,文本编码器用 Transformer,输出分别投影到共享维度并 L2 normalize。训练用约 4 亿图文对,在一个大 batch 里做对称 InfoNCE:图像和文本两两算 cosine 相似度,对角线是正样本,其余是负样本,两个方向的交叉熵取平均。温度是可学习的 logit scale。它不需要分类标签,学到的共享空间可以做零样本分类和检索,也常作为 SD 的文本编码器。”


10. 90 秒回答:CLIP 特征的优缺点

面试官问:谈谈 CLIP 编码特征的优缺点。

参考回答:

“优点是语义强、零样本、图像和文本共享空间、工程上好冻结,适合做 SD 的文本条件、IP-Adapter 的图像条件和图文评估。缺点主要是 77 token 限制、bag-of-words、组合性弱、计数/空间/否定不行、细粒度不足,还有数据偏差和 prompt 敏感。CLIPScore 也容易被刷,不能单独当生成质量指标。所以 SD3 会加 T5 补长文本和组合推理。”


11. 常见误区

  1. 把 CLIP 当生成模型:它是图文匹配/表示模型。
  2. 只写单向交叉熵:CLIP 是对称的。
  3. 忽略 L2 normalize:相似度是 cosine。
  4. 认为 CLIP 理解复杂空间关系:它弱于组合推理。
  5. 把 CLIPScore 当唯一指标:它不衡量图像质量。
  6. 说 SD3 不用 CLIP:SD3 仍用 CLIP-L/OpenCLIP,只是加了 T5。

12. 课堂练习

答案见 06 章节练习与答案。

  1. 画 CLIP 双塔结构。
  2. 写对称 InfoNCE。
  3. 解释大 batch 和温度。
  4. 列 5 个 CLIP 局限。
  5. 解释 SD3 为什么加 T5。
  6. 用 90 秒回答 A1/A15。

13. 自测清单

  • [ ] 能画 CLIP 架构;
  • [ ] 能写 loss;
  • [ ] 能解释零样本;
  • [ ] 能说 5 个局限;
  • [ ] 能解释 SD/SDXL/SD3 的文本编码器差异;
  • [ ] 能 90 秒回答 A1/A15。

14. 本节材料为什么这样设计

  • 先架构再损失:面试常先问“怎么搭”,再问“怎么训”。
  • 对称 loss 单列:最容易写错。
  • 优缺点分点:A15 需要结构化表达。
  • SD 使用场景:把 CLIP 和 AIGC 连起来。
  • 不写代码:本节是模型/公式,不是实现。

详细设计理由见 08 材料设计理由。


15. 下一节

4.2 ControlNet