第 3 章面试题库:90 秒答案与追问¶
用途:把第 3 章知识压缩成面试语言。
方法:先自己答,再看参考;每题至少练 3 遍,第 3 遍录音。标记:S = 必须熟练;A = 高频;B = 加分。
1. 本章 7 道核心题¶
| 题号 | 题目 | 重要度 | 主材料 |
|---|---|---|---|
| A2 | AE/VAE/VQ-VAE 的区别 | S | 3.1 |
| A3 | 重参数技巧 | A | 3.1 |
| A5 | SD 的核心优化 | S | 3.2 |
| A6 | SD 怎么训练 | S | 3.4 |
| A8 | SD 中的交叉注意力 | S | 3.3 |
| A16 | self/cross attention 的区别 | S | 3.3 |
| D7 | Offset Noise | A | 3.4 |
2. A2:AE/VAE/VQ-VAE 的区别(S)¶
90 秒版¶
“AE 是确定性自编码器,只学重建,隐空间没有先验,不能直接采样。VAE 把隐变量建模成高斯,用 ELBO 训练,重参数化让采样可导,隐空间连续平滑,但重建容易模糊、可能 posterior collapse。VQ-VAE 把连续特征量化到 codebook,得到离散 token,损失是重建 + codebook + commitment,用 straight-through 传梯度;它需要额外先验来生成。Stable Diffusion 用的是连续 VAE,不是 VQ-VAE,因为扩散更适合连续 latent。”
追问 1:VAE 为什么模糊?¶
像素级重建 + KL 压缩;后验被约束到先验,细节容易丢。
追问 2:VQ-VAE 为什么需要先验?¶
它只是 tokenizer;生成要在离散 token 上训练 PixelCNN/Transformer 等先验。
追问 3:SD 为什么不用 VQ-VAE?¶
扩散在连续空间更自然;量化会丢细节;连续 latent 更适合高斯去噪。
易错点¶
- 说 AE 能直接采样;
- 说 VQ-VAE 仍用高斯 KL;
- 说 SD 的 VAE 是 VQ-VAE。
3. A3:重参数技巧(A)¶
90 秒版¶
“把随机采样写成确定性变换加外部噪声。\(z\sim\mathcal N(\mu,\sigma^2)\) 写成 \(z=\mu+\sigma\odot\epsilon\),\(\epsilon\sim\mathcal N(0,I)\),随机性只来自 \(\epsilon\),梯度可以对 \(\mu,\sigma\) 反传。VAE 用它训练编码器;Diffusion 的前向加噪也是同一个技巧,所以 \(x_t\) 可以直接从 \(x_0\) 采样。VQ-VAE 的离散选择不能用普通重参数化,通常用 straight-through。”
追问 1:为什么不用 REINFORCE?¶
方差大;重参数化是低方差的路径导数。
追问 2:VQ-VAE 为什么不用它?¶
离散选择不可导;straight-through 有偏。
4. A5:SD 的核心优化(S)¶
90 秒版¶
“核心是 Latent Diffusion:先用 VAE 把图像压到 8 倍下采样、4 通道 latent,扩散在 latent 上做,而不是像素空间。512×512×3 变成 64×64×4,空间元素少约 48 倍,注意力和卷积成本大幅下降。然后 UNet 去噪,文本通过 CLIP + cross-attention 注入,推理用 CFG 增强 prompt 跟随。VAE 只编码/解码一次,所以整体比像素扩散快很多。代价是 VAE 重建质量会成为上限。”
追问 1:为什么不用像素扩散?¶
计算量太大;latent 压缩后可以在有限算力下训练大模型。
追问 2:VAE 是瓶颈吗?¶
是;VAE 重建差会限制最终质量,所以 SD3 用 16 通道 VAE。
追问 3:文本怎么进去?¶
CLIP token → cross-attention 的 K/V;图像特征做 Q。
5. A6:SD 怎么训练(S)¶
2 分钟版¶
“分两阶段。第一阶段训练 VAE:编码器把图像压到 8 倍下采样、4 通道 latent,解码器重建,损失是重建 + perceptual + adversarial;训练好后冻结。第二阶段在 latent 上训练扩散 UNet:图像编码成 \(z_0\),加噪得到 \(z_t\),CLIP 编码文本,UNet 预测噪声,用 MSE 训练。文本编码器通常冻结,训练时以约 10% 概率丢弃文本条件,支持 CFG;还用 EMA、混合精度、分辨率分桶和数据过滤。推理时从噪声开始,用 UNet 逐步去噪,再 VAE 解码。”
追问 1:为什么冻结 VAE?¶
联合训练不稳定、计算大;VAE 负责压缩,扩散负责去噪。
追问 2:为什么要 CFG dropout?¶
让同一网络同时有条件/无条件能力,推理时才能做 CFG。
追问 3:为什么要分辨率分桶?¶
多宽高比训练,减少裁剪/变形,提升多比例生成。
6. A8:SD 中的交叉注意力(S)¶
90 秒版¶
“在 SD 里,cross-attention 的图像特征提供 Query,文本 token 提供 Key/Value。具体是 \(Q=XW_Q\),\(K=CW_K\),\(V=CW_V\),然后 softmax 注意力加权。这样每个图像位置都能关注 prompt 里的不同词,实现 token 级条件注入。它通常放在 UNet 的低分辨率层,文本编码只做一次,每个 block 有自己的投影。局限是 77 token、组合性弱、单向;SD3 改用 MMDiT 的联合注意力。”
追问 1:Q/K/V 形状?¶
图像 \(N\times d\),文本 \(L\times d\);注意力矩阵 \(N\times L\)。
追问 2:为什么放低分辨率?¶
\(N\) 小,\(O(NL)\) 成本低;高分辨率用卷积/self-attn。
追问 3:attention map 能干什么?¶
可视化 token 关注区域;prompt-to-prompt/attention edit。
7. A16:self/cross attention 的区别(S)¶
90 秒版¶
“核心是 Q/K/V 的来源。Self-attention 的 Q/K/V 都来自同一个序列,建模模态内部依赖;cross-attention 的 Q 来自目标序列,K/V 来自条件序列,建模跨模态对齐。复杂度上 self 是 \(O(N^2)\),cross 是 \(O(NM)\)。在 SD 里,self-attention 建模图像内部关系,cross-attention 让图像查文本。SD3 的 MMDiT 把两种 token 拼起来做联合 self-attention,但不同模态用不同投影。”
追问 1:cross-attention 能看成条件 self-attention 吗?¶
可以,把条件 token 拼进序列并加 mask 就是联合注意力的一种形式。
追问 2:为什么 MMDiT 更强?¶
双向交互、Transformer 易扩展、不同模态独立投影。
8. D7:Offset Noise(A)¶
90 秒版¶
“标准高斯噪声每个像素独立、均值为 0,整张图的低频/平均分量很小。SD 训练时很少见到整体偏亮或偏暗的 latent,所以模型倾向于生成中间亮度,极暗/极亮不稳定。Offset Noise 在噪声上加一个每通道共享、空间不变的偏移,让训练样本出现全局亮度变化,模型就学会去噪任意直流偏移。推理时仍用标准噪声。它改善亮度和对比度,但可能影响多样性,是微调技巧,不是扩散理论必需。”
追问 1:为什么普通噪声低频分量小?¶
空间独立、均值为 0,平均后方差按 \(1/N\) 缩小。
追问 2:Offset Noise 和 zero terminal SNR 一样吗?¶
不一样。前者补低频亮度分布;后者解决 \(t=T\) 端点不一致。
追问 3:推理时要加 offset 吗?¶
不需要;它只改变训练分布。
9. 延伸题:10 个高频追问¶
Q1:VAE 的 ELBO 怎么理解?¶
重建项 + KL 正则;KL 让后验靠近先验,保证可采样。
Q2:VQ-VAE 的 straight-through 是什么?¶
前向用量化结果,反向把梯度直接传给编码器输出;有偏但有效。
Q3:为什么 SD 的 VAE 是 4 通道?¶
压缩率/重建质量的折中;8 倍下采样后 4 通道足够表达,计算又可接受。
Q4:SD 的文本编码器为什么冻结?¶
降低训练成本,保留 CLIP 语义能力;只训练 cross-attn 和 UNet。
Q5:CFG 在 SD 中怎么用?¶
训练 dropout 条件;推理组合条件和无条件预测;\(w\) 控制强度。
Q6:Self-Attention 为什么不加位置编码?¶
SD 的 UNet 有卷积提供空间结构;特征图本身保留空间排列。
Q7:Cross-Attention 为什么是单向的?¶
Q 来自图像,K/V 来自文本;文本不反看图像。SD3 的联合注意力才是双向。
Q8:Offset Noise 为什么是每通道共享?¶
要模拟全局亮度偏移,而不是每个像素独立噪声;空间相关才能形成低频分量。
Q9:SDXL 和 SD1.5 的 VAE 一样吗?¶
架构类似(4 通道/8 倍),SDXL 训练了更好的 VAE;SD3 改用 16 通道。
Q10:SD 训练最难的是什么?¶
数据质量/caption、VAE 重建、文本条件、训练稳定性/算力;不是单一 trick。
10. 追问树:A5¶
SD 核心优化
├── 为什么快?
│ ├── VAE 8x 下采样
│ ├── latent 4 通道
│ └── 注意力 N 变小
├── 条件怎么进?
│ ├── CLIP 文本
│ └── cross-attention K/V
├── 怎么增强?
│ └── CFG
└── 瓶颈?
├── VAE 重建
├── 文本编码器
└── 采样步数
11. 15 分钟模拟面试脚本¶
| 时间 | 内容 | 目标 |
|---|---|---|
| 0–2 | 自我介绍 | 建立上下文 |
| 2–5 | A5/A6 | 架构与训练 |
| 5–8 | A8/A16 | attention |
| 8–12 | A2/A3/D7 | 基础与细节 |
| 12–15 | 追问 + 反馈 | 深度与表达 |
12. 练习方法¶
- 看答案,标关键词;
- 遮住答案,90 秒复述;
- 录音,回听卡壳;
- 找人追问“为什么”。
背“结构 + 3 个关键词 + 1 个公式”,不要背全文。