文生图与扩散模型
从 GAN 到 Diffusion 再到 DiT,图像生成是 multi-modal 面试的高频区。核心问题往往是:扩散模型在「扩散」什么?Stable Diffusion 为什么快?它和 LLM 的自回归有何不同?
01生成模型谱系
GAN
生成器/判别器对抗,出图快但训练不稳、模式易崩塌。
VAE
把图编码到潜空间再解码,可生成但偏模糊。
自回归 (AR)
像 LLM 一样逐像素/分块生成,质量高但慢。
Diffusion ✅
逐步去噪,训练稳、质量高,是当前主流(SD / DALL·E 3 / 即梦)。
02扩散模型在「扩散」什么
扩散模型的训练分两步:前向加噪(把真实图逐步加高斯噪声直到变成纯噪声)与反向去噪(学一个网络,从噪声一步步还原出图)。推理时,从随机噪声出发,重复「预测并去掉一点噪声」,最终得到图像。
关键直觉:与其「直接学怎么画图」(难),不如「学怎么把噪声擦掉」(简单且处处可定义目标)。
03DDPM 去噪数学
前向过程在时刻 t 的加噪图有闭式解:
x_t = √(ᾱ_t)·x_0 + √(1−ᾱ_t)·ε , ε ~ N(0, I)
即 x_t 是「原图信号」与「纯噪声」的加权混合,权重由调度系数 ᾱ_t 控制(t 越大越接近纯噪声)。网络 ε_θ 被训练去预测这一步加进去的噪声 ε,损失就是简单的 MSE:
L = E[ ‖ ε − ε_θ(x_t, t) ‖² ]
x_t 可由 x_0 和 ε 一步算出来(重参数化技巧),所以训练目标纯净、稳定,不像 GAN 那样需要博弈。这是扩散模型比 GAN 好训的根本原因。04Stable Diffusion:潜空间扩散
直接在像素上 diffusion 太贵。Stable Diffusion 的巧思是先在潜空间(latent)里扩散:
- VAE 把 512×512 像素压到 64×64 的潜变量,去噪在 1/8 分辨率上做,算力骤降。
- UNet 是去噪主力,带噪声预测 + 文本交叉注意力。
- Classifier-Free Guidance (CFG):同时算「带提示」与「空提示」的预测,拉开差距以强化文本贴合度。guidance scale 越大越听话、但越易过饱和。
05条件控制:不只是文字
Text / Image
文生图、图生图(img2img:先加噪再重建)。
ControlNet
冻结原 UNet,外接可训练分支,用边缘/姿态/深度图精确控构图。
LoRA(图像)
用小权重注入特定画风/角色,和 LLM 的 LoRA 思想一致。
06DiT 与加速采样
DiT(Diffusion Transformer)
用 Transformer 替换 UNet 做去噪骨干,Sora、SD3、即梦均基于此,可规模化、质量高。
采样加速
原生 DDPM 要上千步;DDIM、DPM-Solver 等确定性/常微分方程采样器把步数压到 20–50 步,速度数量级提升。
07面试速记卡
扩散 = 学去噪
不直接学生成分布,学「擦掉噪声」;训练目标纯净稳定。
SD 快在潜空间
VAE 压缩 + UNet 在 latent 去噪 + CLIP 文本条件。
CFG
带/不带提示双预测拉开差距,控制「听话程度」。
DiT
用 Transformer 替 UNet,是新一代文生图/视频底座。