第 4 章练习与答案¶
目标:用纸笔检查理解,不写代码。
建议:先做,再看答案;错题标记,回到对应讲义。题量:概念 8 + 推导 5 + 计算 5 + 面试复述 5。
一、概念题(8 题)¶
- CLIP 为什么不是生成模型?
- CLIP 的对称 InfoNCE 两个方向分别是什么?
- 为什么 CLIP 需要大 batch?
- CLIP 的 77 token 限制会带来什么问题?
- ControlNet 的零卷积为什么重要?
- IP-Adapter 为什么要解耦 cross-attention?
- LoRA 和 DreamBooth 是什么关系?
- Textual Inversion 为什么文件很小?
二、推导题(5 题)¶
- 写出 CLIP 的对称 InfoNCE。
- 写出 LoRA 的权重更新公式,并解释 \(A,B,\alpha,r\)。
- 写出 DreamBooth 的 prior preservation 损失。
- 写出 IP-Adapter 的解耦 cross-attention 输出。
- 写出 ControlNet 的简化数据流(locked/trainable/zero conv)。
三、计算题(5 题)¶
- 设 \(d=k=768\),LoRA rank \(r=8\),求 LoRA 参数量;原矩阵参数量是多少?占比多少?
- 若 \(r=16\),重算 LoRA 参数量与占比。
- CLIP 图像特征 \(u=(1,0)\),文本特征 \(v=(0.6,0.8)\),求 cosine 相似度。
- 若 IP-Adapter 文本 attention 输出为 1.0,图像 attention 输出为 0.8,\(\lambda=0.5\),求总输出。
- 若 CLIP 最多 77 token,prompt 有 100 token,有多少 token 会被截断?
四、面试复述题(5 题)¶
- 用 90 秒回答 A1。
- 用 90 秒回答 A13。
- 用 90 秒回答 A14。
- 用 90 秒回答 A12。
- 用 90 秒回答 A15。
答案与解析¶
一、概念题答案¶
1. CLIP 为什么不是生成模型¶
它学习图文匹配/共享嵌入空间,不建模 \(p(x)\),也不生成图像。
2. 对称 InfoNCE 两个方向¶
- image-to-text:图像找对应文本;
- text-to-image:文本找对应图像。
3. 为什么大 batch¶
每个 batch 内其他样本是负样本;batch 越大,负样本越多,对比信号越强。
4. 77 token 限制¶
长 prompt 被截断,复杂描述/多对象/长文本会丢信息;SD3 加 T5 缓解。
5. 零卷积为什么重要¶
初始输出为 0,训练开始时不影响原模型,稳定训练,之后逐渐注入条件。
6. IP-Adapter 为什么解耦¶
文本/图像条件分布不同,共享 K/V 会互相干扰;解耦后可独立调强度。
7. LoRA 和 DreamBooth 的关系¶
DreamBooth 是少样本主体定制的训练配方;LoRA 是参数高效方法;可以组合成 DreamBooth LoRA。
8. TI 为什么文件小¶
只存一个新 token 的 embedding,不存模型权重。
二、推导题答案¶
9. CLIP 对称 InfoNCE¶
\[
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 e^{s_{ij}}}
+
\log\frac{e^{s_{ii}}}{\sum_j e^{s_{ji}}}
\right].
\]
10. LoRA¶
\[
W'=W+\frac{\alpha}{r}BA.
\]
- \(A\in\mathbb R^{r\times k}\):降维/投影;
- \(B\in\mathbb R^{d\times r}\):升维;
- \(r\):秩,控制容量;
- \(\alpha\):缩放,控制增量强度。
11. DreamBooth prior loss¶
\[
\mathcal L
=\mathbb E\left[
\|\epsilon-\epsilon_\theta(x_t,c)\|^2
+\lambda\|\epsilon'-\epsilon_\theta(x_t',c_{\mathrm{prior}})\|^2
\right].
\]
12. IP-Adapter 解耦 cross-attn¶
\[
h'
=\mathrm{Attn}(Q,K_t,V_t)
+\lambda\,\mathrm{Attn}(Q,K_i,V_i).
\]
13. ControlNet 数据流¶
\[
h_{\mathrm{base}}
=\mathrm{LockedEncoder}(z_t),
\]
\[
h_{\mathrm{cond}}
=\mathrm{TrainableEncoder}
\left(z_t+\mathrm{CondEncoder}(c)\right),
\]
\[
h_{\mathrm{out}}
=h_{\mathrm{base}}
+\mathrm{ZeroConv}(h_{\mathrm{cond}}).
\]
三、计算题答案¶
14. LoRA 参数量(r=8)¶
LoRA 参数:
\[
r(d+k)=8(768+768)=8\times1536=12{,}288.
\]
原矩阵:
\[
768\times768=589{,}824.
\]
占比:
\[
12{,}288/589{,}824\approx2.08\%.
\]
15. LoRA 参数量(r=16)¶
\[
16\times1536=24{,}576.
\]
占比:
\[
24{,}576/589{,}824\approx4.17\%.
\]
16. Cosine 相似度¶
\[
\frac{u\cdot v}{\|u\|\|v\|}
=\frac{1\times0.6+0\times0.8}{1\times1}
=0.6.
\]
17. IP-Adapter 输出¶
\[
1.0+0.5\times0.8=1.4.
\]
18. 截断 token 数¶
\[
100-77=23.
\]
四、面试复述题自评¶
19. A1¶
- 是否说双塔?
- 是否写对称 loss?
- 是否解释大 batch/温度/零样本?
20. A13¶
- 是否说 frozen base + trainable copy?
- 是否解释 zero conv?
- 是否说只训分支?
21. A14¶
- 是否说 image prompt?
- 是否写解耦 cross-attn?
- 是否区分 ControlNet?
22. A12¶
- 是否说清四种方法训练对象?
- 是否解释 DreamBooth prior?
- 是否能选型?
23. A15¶
- 是否列 5 个局限?
- 是否解释 SD3 加 T5?
- 是否避免把 CLIPScore 当唯一指标?
五、错题归因¶
| 错题 | 可能原因 | 回到 |
|---|---|---|
| 9、16 | CLIP 损失/相似度 | 4.1 |
| 10、14、15 | LoRA 公式/参数 | 4.4 |
| 11、22 | DreamBooth | 4.4 |
| 12、17 | IP-Adapter | 4.3 |
| 13、20 | ControlNet | 4.2 |
六、下一步¶
- 公式错:重写 CLIP/LoRA/IP-Adapter;
- 结构错:重画 ControlNet/IP-Adapter;
- 选型弱:做“需求—方法—代价”表;
- 表达卡:用 05 的 90 秒答案录音。