第一部分:核心机制、架构演进与 DDPM 基础
1.1 扩散模型 vs. VAE:范式的转移
虽然同为生成模型,扩散模型与变分自编码器(VAE)在处理潜变量的方式上存在根本差异:
| 维度 | VAE (Variational Autoencoder) | Diffusion Models (DDPM) |
|---|---|---|
| 核心逻辑 | 映射与压缩:将数据编码为低维分布,再一步解码。 | 渐进式去噪:通过多步马尔可夫链,逐步剔除噪声。 |
| 潜空间 | 低维:zzz 的维度远小于 xxx。 | 同维:潜变量 xtx_txt 与数据 x0x_0x0 维度一致。 |
| 瓶颈 | 容易出现“后验坍塌”,生成图像常有模糊感。 | 采样速度慢(需多步迭代),但生成质量极高,Mode Coverage 好。 |
1.2 网络架构剖析:U-Net 与 Transformer 的博弈
扩散模型本身只是一个算法框架,它的核心是一个“预测噪声”的神经网络。
A. U-Net:经典的工匠
DDPM 及 Stable Diffusion v1.5 均采用 U-Net。
- 结构特点:
- Encoder-Decoder:先下采样提取语义,再上采样恢复尺寸。
- 跳跃连接 (Skip Connections):这是 U-Net 的灵魂。它将 Encoder 层的浅层特征(高频纹理、边缘)直接拼接到 Decoder 对应层。这使得模型在生成图像时不会丢失细节。
- 局限性:CNN 的归纳偏置(Inductive Bias)使其关注局部像素,难以处理极长距离的语义依赖。
B. Transformer (DiT):宏观的建筑师
以 Sora 和 Stable Diffusion 3 为代表,架构正向 DiT (Diffusion Transformer) 演进。
- 区别:DiT 将图像切成 Patch(如 16×1616\times1616×16 的块),完全抛弃卷积,使用 Attention 机制。
- 优势:
- Scaling Law:参数量和数据量越大,效果提升越明显(U-Net 容易遭遇瓶颈)。
- 全局视野:能更好地处理复杂的画面布局和时空一致性(视频生成)。
1.3 Stable Diffusion:为什么叫 “Stable”?
“Stable” 指的是 Latent Diffusion Model (LDM) 技术,核心在于引入了 感知压缩。
- Pixel Space 的痛点:直接在 512×512512 \times 512512×512 像素空间扩散,计算量巨大且浪费(大量计算用于处理人眼不敏感的高频噪声)。
- Latent Space 的解法:
- 使用 VAE Encoder 将图像压缩为潜变量 zzz(如 64×6464 \times 6464×64)。
- 在 zzz 空间进行扩散训练(计算量降低数十倍,训练更稳定)。
- 最后用 VAE Decoder 还原。
- 比喻:Pixel Diffusion 是拿着显微镜堆原子;Stable Diffusion 是先画好构图草稿(Latent),再让助手填色放大(Decode)。
1.4 DDPM 全流程数学表达
1.4.1 变量定义表
- x0x_0x0: 真实数据(无噪声图像)。
- xTx_TxT: 纯高斯噪声(TTT 时刻的状态)。
- ttt: 时间步,从 000 到 TTT(通常 T=1000T=1000T=1000)。
- βt\beta_tβt: 方差调度 (Variance Schedule)。预设的超参数,控制每一步加噪的幅度(通常很小,如 10−410^{-4}10−4)。
- αt=1−βt\alpha_t = 1 - \beta_tαt=1−βt: 保留原信息的比例系数。
- αˉt=∏i=1tαi\bar{\alpha}_t = \prod_{i=1}^t \alpha_iαˉt=∏i=1tαi: 累积保留系数。表示从 000 到 ttt 时刻,原图信息还剩多少。
1.4.2 前向过程 (Forward Process): 加噪
这是一个固定的马尔可夫链,无需训练。每一步都向数据添加微量高斯噪声。
单步公式:
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I})q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
- 含义: ttt 时刻的图像是 t−1t-1t−1 时刻图像乘以衰减系数 1−βt\sqrt{1-\beta_t}1−βt,再加上方差为 βt\beta_tβt 的噪声。
任意步公式 (Reparameterization Trick):
我们不需要一步步加噪,可以直接算出任意 ttt 时刻的状态:
xt=αˉtx0+1−αˉtϵ,ϵ∼N(0,I)x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, \mathbf{I})xt=αˉtx0+1−αˉtϵ,ϵ∼N(0,I)
- 含义: xtx_txt 由两部分组成:一部分是残留的原图信号 (αˉtx0\sqrt{\bar{\alpha}_t} x_0αˉtx0),另一部分是累积的噪声 (1−αˉtϵ\sqrt{1 - \bar{\alpha}_t} \epsilon1−αˉtϵ)。
1.4.3 反向过程 (Reverse Process): 去噪
这是我们需要训练的部分。我们需要构建分布 pθ(xt−1∣xt)p_\theta(x_{t-1}|x_t)pθ(xt−1∣xt) 来逼近真实的逆后验 q(xt−1∣xt)q(x_{t-1}|x_t)q(xt−1∣xt)。
pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t))pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))
- DDPM 简化策略:固定方差 Σθ\Sigma_\thetaΣθ,只学习均值 μθ\mu_\thetaμθ。
- 根据贝叶斯公式推导,真实的均值 μ~t\tilde{\mu}_tμ~t 与噪声 ϵ\epsilonϵ 有如下关系:
μθ(xt,t)=1αt(xt−βt1−αˉtϵθ(xt,t))\mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(x_t, t) \right)μθ(xt,t)=αt1(xt−1−αˉtβtϵθ(xt,t)) - 核心: 只要神经网络 ϵθ\epsilon_\thetaϵθ 能预测出当前图像里包含的噪声 ϵ\epsilonϵ,就能算出均值,从而还原出 xt−1x_{t-1}xt−1。
1.4.4 损失函数 (Loss Function)
基于变分下界 (ELBO) 推导,最终简化为均方误差 (MSE):
Lsimple(θ)=Ex0,t,ϵ[∣∣ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)∣∣2]L_{simple}(\theta) = \mathbb{E}_{x_0, t, \epsilon} \left[ || \epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, t) ||^2 \right]Lsimple(θ)=Ex0,t,ϵ[∣∣ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)∣∣2]
- 通俗解释: 随机抽取一张原图 x0x_0x0,随机加噪生成 xtx_txt,让神经网络看 xtx_txt,试图把刚才加进去的噪声 ϵ\epsilonϵ 预测出来。
第二部分:理论核心 —— Score Matching 与 Flow Matching
2.1 什么是 Score?
Score 定义为对数概率密度的梯度:s(x)=∇xlogp(x)s(x) = \nabla_x \log p(x)s(x)=∇xlogp(x)。它指示了数据密度增加最快的方向。
2.2 证明推导
我们需要证明预测的噪声 ϵθ\epsilon_\thetaϵθ 与 Score ∇xtlogpt(xt)\nabla_{x_t} \log p_t(x_t)∇xtlogpt(xt) 存在线性关系。
第一步:写出 xtx_txt 的边缘分布
根据前向公式,给定 x0x_0x0,xtx_txt 服从高斯分布:
q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)q(x_t | x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1 - \bar{\alpha}_t)\mathbf{I})q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)
第二步:计算对数密度梯度
该高斯分布的概率密度函数 (PDF) 为:
p(xt∣x0)∝exp(−∣∣xt−αˉtx0∣∣22(1−αˉt))p(x_t|x_0) \propto \exp \left( - \frac{|| x_t - \sqrt{\bar{\alpha}_t} x_0 ||^2}{2(1 - \bar{\alpha}_t)} \right)p(xt∣x0)∝exp(−2(1−αˉt)∣∣xt−αˉtx0∣∣2)
对其取对数 log\loglog,再对 xtx_txt 求梯度 ∇xt\nabla_{x_t}∇xt:
∇xtlogp(xt∣x0)=∇xt(−∣∣xt−αˉtx0∣∣22(1−αˉt))=−xt−αˉtx01−αˉt\nabla_{x_t} \log p(x_t|x_0) = \nabla_{x_t} \left( - \frac{|| x_t - \sqrt{\bar{\alpha}_t} x_0 ||^2}{2(1 - \bar{\alpha}_t)} \right) = - \frac{x_t - \sqrt{\bar{\alpha}_t} x_0}{1 - \bar{\alpha}_t}∇xtlogp(xt∣x0)=∇xt(−2(1−αˉt)∣∣xt−αˉtx0∣∣2)=−1−αˉtxt−αˉtx0
第三步:代入重参数化公式
回顾前向公式:xt=αˉtx0+1−αˉtϵx_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilonxt=αˉtx0+1−αˉtϵ。
这意味着噪声 ϵ\epsilonϵ 可以表示为:
ϵ=xt−αˉtx01−αˉt\epsilon = \frac{x_t - \sqrt{\bar{\alpha}_t} x_0}{\sqrt{1 - \bar{\alpha}_t}}ϵ=1−αˉtxt−αˉtx0
第四步:联立
观察第二步和第三步的结果:
∇xtlogp(xt∣x0)=−1−αˉt⋅ϵ1−αˉt=−ϵ1−αˉt\nabla_{x_t} \log p(x_t|x_0) = - \frac{\sqrt{1 - \bar{\alpha}_t} \cdot \epsilon}{1 - \bar{\alpha}_t} = - \frac{\epsilon}{\sqrt{1 - \bar{\alpha}_t}}∇xtlogp(xt∣x0)=−1−αˉt1−αˉt⋅ϵ=−1−αˉtϵ
结论:
ϵ=−1−αˉt⋅∇xtlogp(xt)\epsilon = - \sqrt{1 - \bar{\alpha}_t} \cdot \nabla_{x_t} \log p(x_t)ϵ=−1−αˉt⋅∇xtlogp(xt)
(注:此处略去了对 x0x_0x0 积分的期望步骤,在去噪得分匹配 Denoising Score Matching 中结论一致)
物理含义:
神经网络预测的 ϵθ\epsilon_\thetaϵθ,本质上是在计算 Score(数据密度梯度)的负方向。
- Score 指向数据密度高的地方(山顶)。
- 噪声 ϵ\epsilonϵ 是我们要减去的东西,减去噪声 ≈\approx≈ 加上负噪声。
- 所以,去噪的过程 = 沿着 Score 方向爬山的过程。
2.3 Score Matching:梯度的几何直觉
为什么扩散模型能让数据从无序变有序?数学本质是梯度流。
- Score 定义:数据对数密度的梯度。
s(x)=∇xlogp(x)s(x) = \nabla_x \log p(x)s(x)=∇xlogp(x) - 为什么是这个式子?(推导与解释)
- 直觉:将数据分布看作一座山。山顶是真实数据,山谷是噪声。我们需要一个指南针,无论在山里何处,都能指向山顶。
- 为什么用 log\loglog:直接用概率密度 ∇p(x)\nabla p(x)∇p(x) 会遇到数值下溢(p(x)≈0p(x) \approx 0p(x)≈0)。log\loglog 将乘法变加法,数值稳定且单调递增(不改变极值点位置)。
- 梯度场:s(x)s(x)s(x) 是一个向量场。在低密度区域(山谷),∇logp(x)=∇p(x)p(x)\nabla \log p(x) = \frac{\nabla p(x)}{p(x)}∇logp(x)=p(x)∇p(x),分母 p(x)p(x)p(x) 极小,实际上放大了梯度信号。这保证了即使在全是噪声的地方,模型也能收到强烈的“回家”信号。
2.4 Flow Matching:从“随机”到“直线”
Flow Matching 是扩散模型的广义化与升级(如 Flux, SD3 均采用此技术)。
- 扩散 (SDE):路径是随机的(布朗运动)。像一个醉汉回家,虽然大方向对,但走得弯弯绕绕。
- 流 (ODE) / Flow Matching:路径是确定的。
- 机制:建立噪声 x1x_1x1 与数据 x0x_0x0 之间的速度场 (Velocity Field) vt(x)v_t(x)vt(x)。
- Optimal Transport (最优传输):在训练时,强行构建一条从噪声直达数据的直线路径 (Rectified Flow)。
- 关系:Diffusion 是 Flow 的一种特殊形式。Flow Matching 允许更灵活的路径规划,使得生成效率大幅提升。
第三部分:采样的机制
3.1 为什么要采样?
训练好的网络 ϵθ\epsilon_\thetaϵθ 只是一个“去噪器”或“指南针”,它本身不包含图像。采样是利用指南针走出迷宫的过程。
3.2 为什么必须迭代式采样?
- 病态问题:从纯噪声 xTx_TxT 直接预测 x0x_0x0 极其困难,结果通常是所有可能图像的模糊平均值。
- 分解难度:将“一步登天”分解为 1000 个小步。当步长 Δt→0\Delta t \to 0Δt→0 时,每一步的逆变换在数学上严格近似于高斯分布,这使得神经网络可以精确拟合。
3.3 Flow Matching 的采样机制 (Euler Method)
不同于 DDPM 的祖先采样(加噪去噪),Flow Matching 的采样是在解常微分方程(ODE):
- 当前状态:xtx_txt(噪声)。
- 查询地图:输入网络,得到当前位置的速度向量 v=Model(xt,t)v = \text{Model}(x_t, t)v=Model(xt,t)。
- 欧拉更新 (Euler Step):
xt−Δt=xt−v×Δtx_{t - \Delta t} = x_t - v \times \Delta txt−Δt=xt−v×Δt
逻辑:新位置 = 旧位置 - 速度 ×\times× 时间步长。 - 优势:因为训练时强迫路径为直线,所以 vvv 在大部分时间是恒定的。这意味着我们可以用极大的步长(Δt\Delta tΔt 很大)进行采样,甚至几步就能生成高质量图像。
3.4 DDPM与FM采样机制对比
- DDPM (Ancestral Sampling):
xt−1=μθ(xt)+σtzx_{t-1} = \mu_\theta(x_t) + \sigma_t zxt−1=μθ(xt)+σtz- 为什么这么采: 每一步减去预测的噪声(确定性),再加上一点随机噪声 zzz(随机性)。这是模拟朗之万动力学,随机项有助于模型跳出局部最优解,增加生成的多样性。
- Flow Matching (Euler Sampling):
xt−Δt=xt−vt(xt)⋅Δtx_{t-\Delta t} = x_t - v_t(x_t) \cdot \Delta txt−Δt=xt−vt(xt)⋅Δt- 为什么这么采: 这是解 ODE 最简单的欧拉法。因为训练强迫路径变直,所以 vtv_tvt 变化平缓,数值误差极小。
第四部分:物理场景映射与大一统思想
4.1 扩散模型学到了什么?
- 数学上:学到了高维空间中数据流形的梯度场(Gradient Field)。
- 本质上:学到了如何将高熵状态(无序)逆转为低熵状态(有序)的能力。
4.2 物理场景的统一映射
AI 模型的设计深受物理学启发,不同的模型对应不同的物理分支:
| 模型范式 | 物理对应 | 核心思想 |
|---|---|---|
| Diffusion Models | 非平衡热力学 (Non-equilibrium Thermodynamics) | 扩散与逆扩散。模拟墨水滴入水中的熵增过程(前向),并训练“麦克斯韦妖”耗能逆转这一过程(反向)。 |
| VAE / EBM | 统计力学 (Statistical Mechanics) | 玻尔兹曼分布。系统倾向于停留在能量最低的状态。训练过程即优化自由能(Free Energy),寻找最稳态。 |
| Normalizing Flows | 流体力学 (Fluid Dynamics) | 变换流。通过一系列可逆变换,像控制水流或揉捏泥巴一样,将简单分布连续形变为复杂分布。 |
| GAN | 动力系统 (Dynamical Systems) | 博弈平衡。力的对抗与制衡,寻找纳什均衡点,而非单纯的能量极小值。 |
4.3 为什么都使用物理理论?:能量模型 (Energy-Based Models)
所有这些生成模型的终极统一思想是 “能量” (Energy)。
- Idea:宇宙万物都对应一个能量值 E(x)E(x)E(x)。自然图像是低能量(高概率),噪声是高能量(低概率)。
- 目标:我们都在试图拟合这个能量地貌 (Energy Landscape)。
- 扩散模型是通过计算“坡度”(Score/Gradient),学会直接从山顶滑向山谷。
- 结论:物理学研究了数百年“如何从微观随机性涌现出宏观秩序”,这正是生成式 AI “从噪声生成图像”的本质解释。
4万+

被折叠的 条评论
为什么被折叠?



