📑 本页目录(点开跳转)
附录A · 速查
⏱ 18 分钟 | ⭐ 公式、数字、症状反查 —— 用到哪查哪,不用从头读
🧭 怎么用这一页
四张表各管一件事:公式用来回忆推导落点,数字用来判断量级对不对, 症状反查用来定位问题,旋钮用来调参。每一行都能点回本板块的某一章。
🔢 一、公式速查
| 在做什么 | 式子 | 出处 |
|---|---|---|
| 前向加噪(一步) | $x_t = \sqrt{1-\beta_t}\,x_{t-1} + \sqrt{\beta_t}\,\varepsilon$ | 02 · 加噪与去噪 |
| ⭐ 闭式采样(一步跳到任意 $t$) | $x_t = \sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\varepsilon$,其中 $\bar\alpha_t=\prod_s \alpha_s$ | 02 |
| 训练损失 | $L_{\text{simple}} = \|\varepsilon - \varepsilon_\theta(x_t, t)\|^2$ | 03 · 训练目标 |
| 从 $\varepsilon$ 反推干净图 | $\hat x_0 = (x_t - \sqrt{1-\bar\alpha_t}\,\varepsilon_\theta)/\sqrt{\bar\alpha_t}$ | 04 · DDIM |
| CFG 合成 | $\tilde\varepsilon = \varepsilon_{\text{uncond}} + s\,(\varepsilon_{\text{cond}} - \varepsilon_{\text{uncond}})$ | 06 · 条件控制与 CFG |
| LoRA 旁路 | $W' = W + B(Ax)$,中间宽度就是 rank | 08 · ControlNet 与风格 LoRA |
⭐ 闭式采样那一行是整套东西的支点:它是恒等不是近似(靠「独立高斯相加、方差相加」), 所以训练能并行 —— 不必为 batch 里每张图各跑几百步。
📐 二、数字速查(都是本板块实测出来的)
| 量 | 值 | 它说明什么 |
|---|---|---|
| $\beta_t$ 的范围(DDPM linear) | 0.0001 → 0.02,$T=1000$ | 一张写死的表,零个可训练参数 |
| 闭式 vs 迭代($t{=}1000$) | 0.29 ms vs 182.5 ms | 闭式不随 $t$ 增长,迭代线性涨 |
| $x_T$ 与 $x_0$ 的相关系数 | 0.0031 | 终点和原图基本无关 —— 所以采样能凭空起手 |
| 8 倍下采样后的高频保留 | 0.0000 | U-Net 跳跃连接救的就是这个 |
| 512²×3 → 64²×4 | 786432 → 16384,压缩 48 倍 | 但卷积省 64 倍、注意力省 4096 倍 |
| 一个潜空间格子 | 8×8=64 个像素,192 个数压成 4 个 | 💀 画不好小字的第一层原因 |
| CLIP ViT-L/14 文本输出 | 77 × 768 | 77 就是「提示词太长后面不起作用」的根 |
| CFG 训练时丢条件的概率 | 约 10% | free 指的是不用额外分类器 |
| ControlNet 零初始化(第 0 步) | 输出差 0.0,而梯度 2501.0 | ⭐ 不破坏原模型,但学得动 |
| 同样位置用默认初始化 | 第 0 步就把主干改动 2.217 | 对照组:为什么必须零初始化 |
| LoRA rank(768→320 那层) | r=4 → 1.77% 参数,r=64 → 28.33% | 常见取值 4~64 |
| FID:同分布、真值应为 0 | n=100 → 21.4,n=10000 → 0.214 | 💀 样本量不够时 FID 毫无意义 |
| FID:高斯 vs 每维 ±1 | 0.1127(同分布基线 0.1088) | 💀 两个天差地别的分布,得分没区别 |
🚨 三、症状反查
| 现象 | 先怀疑 | 去哪一章 |
|---|---|---|
| 训练 loss 降了但采样出来一团糊 | 采样器的调度表和训练时的 $\bar\alpha$ 对不上 | 02、04 |
| 数据没归一化就开训 | ⚠️ 方差保持只在输入方差为 1 时成立,方差 3 的数据会从 3.00 漂到 1.00 | 02 |
| 采样太慢 | 步数,不是图大。DDIM 20~50 步就够 | 04 |
| 同一个种子出的图不一样 | 模型 / 步数 / 调度 / 提示词要全同,连浮点归约顺序都算 | 04 |
| 两个噪声之间插值出来是糊的 | ⚠️ 必须走球面:线性中点范数只有 90.51,掉出了那个半径 128 的球壳 | 04 |
| 小字、远景人脸、手指画不好 | 💀 在 VAE 编码那一步就丢了,扩散再准也补不回来 | 05 · Latent Diffusion |
| 提示词后半段像没生效 | 文本编码器只有 77 个 token 位 | 06 |
| 出图过饱和、构图崩、每次都差不多 | CFG 的 s 太大 —— ⚠️ s>1 是外推不是插值 |
06 |
| 加了 ControlNet 显存爆了 | 它要多跑一份主干副本 | 08 |
| 两个 LoRA 一起用互相打架 | 权重要调,叠加会干扰 | 08 |
| FID 比别人论文高/低很多 | ⚠️ 先问三件事:样本量、真图取自哪、resize 方式 | 09 · 怎么评估 |
🎚️ 四、你会调到的旋钮
| 旋钮 | 调大会怎样 | 调小会怎样 |
|---|---|---|
| 采样步数 | 慢;收益会饱和 | 快;太少则细节垮掉 |
CFG scale s |
更听话,但过饱和、构图崩、多样性塌缩 | s=1 等于不引导,出图发散 |
| η(DDIM 随机性) | 越接近 1 越像 DDPM,少步数下越吃亏 | η=0 确定性,种子可复现 |
| strength(图生图) | 改动越大,越不像原图 | 越贴近原图 |
LoRA rank r |
表达力强、参数多(r=64 → 28.33%) | 省参数(r=4 → 1.77%),但学不动复杂风格 |
| LoRA 权重 | 风格越重,容易盖掉提示词 | 风格若隐若现 |
📖 五、术语对照
| 词 | 一句话 |
|---|---|
| 前向过程 | 加噪。固定的、不用学,$\beta$ 是一张写死的表 |
| 反向过程 | 去噪。这才是学出来的那一半 |
| $\bar\alpha_t$ | 从 0 到 $t$ 的 $\alpha$ 连乘。它一个数就决定了「这一步还剩多少原图」 |
| 方差保持 | $(1-\beta)+\beta=1$,所以输入方差是 1 时每步都还是 1 |
| ELBO / 变分下界 | 损失的出处。⚠️ 前置在数学原理 01b · KL 散度 |
| $L_{\text{simple}}$ | 把 ELBO 的系数直接扔掉的损失 —— 等于给 $t$ 大的样本更高权重 |
| 参数化(ε / x₀ / v) | 三种等价写法,选预测 ε 是梯度量级的决定 |
| DDIM | 非马尔可夫的采样器。⭐ 不用重训,因为它和 DDPM 的边缘分布一样 |
| η | DDIM 的随机性总开关:0 确定性、1 退回 DDPM |
| Latent Diffusion | 把扩散搬进 VAE 的潜空间。Stable Diffusion 名字里的 "Latent" |
| 交叉注意力 | 条件进入去噪的通道:Q 来自图像、K/V 来自文本 |
| CFG | 同一步跑两次(带条件/不带),再外推。s 就是 UI 上的 guidance scale |
| U-Net | U 形去噪主干。跳跃连接是拼接不是相加 |
| DiT | 把潜空间切 patch 当 token,用 Transformer 当去噪主干 |
| adaLN-Zero | DiT 里那个零初始化的门控 —— 和 ControlNet 是同一个想法 |
| ControlNet | 复制一份编码器当可训练支路,零初始化卷积接回主干 |
| FID | 两堆特征各当高斯,算 Fréchet 距离。⚠️ 只用了均值和协方差 |
| CLIP Score | 图文两个编码器输出的余弦相似度。⚠️ 只测对不对,不测好不好看 |
🔗 这一页连到哪里
| 去哪 | 为什么 |
|---|---|
| 00 · 怎么用这份教程 | 三条读法路线,以及这个板块不讲什么 |
| 大模型全景导论 10b · 图像生成 | ⭐ 索引版,14 分钟。本板块就是它深挖清单上那条「📕 整块要外找」 |
| 机器学习的数学原理 01b · KL 散度 | ELBO 的地基 —— 03 章那段推导建在它上面 |
| 大模型全景导论 06c · 解码参数怎么调 | ⭐ CFG 的 s 和语言模型的 temperature 是同一类旋钮:都在「多听话 vs 多自由」之间取舍 |
| AI基础设施 09 · 显存优化全家桶 | 潜空间省下来的那笔账,在训练侧还有一整套别的省法 |