扩散模型 (Diffusion Models) 深度研究

部署运行你感兴趣的模型镜像

第一部分:核心机制、架构演进与 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 的解法
    1. 使用 VAE Encoder 将图像压缩为潜变量 zzz(如 64×6464 \times 6464×64)。
    2. zzz 空间进行扩散训练(计算量降低数十倍,训练更稳定)。
    3. 最后用 VAE Decoder 还原。
  • 比喻:Pixel Diffusion 是拿着显微镜堆原子;Stable Diffusion 是先画好构图草稿(Latent),再让助手填色放大(Decode)。

1.4 DDPM 全流程数学表达

1.4.1 变量定义表

  • x0x_0x0: 真实数据(无噪声图像)。
  • xTx_TxT: 纯高斯噪声(TTT 时刻的状态)。
  • ttt: 时间步,从 000TTT(通常 T=1000T=1000T=1000)。
  • βt\beta_tβt: 方差调度 (Variance Schedule)。预设的超参数,控制每一步加噪的幅度(通常很小,如 10−410^{-4}104)。
  • α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: 累积保留系数。表示从 000ttt 时刻,原图信息还剩多少。

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(xtxt1)=N(xt;1βtxt1,βtI)

  • 含义: ttt 时刻的图像是 t−1t-1t1 时刻图像乘以衰减系数 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θ(xt1xt) 来逼近真实的逆后验 q(xt−1∣xt)q(x_{t-1}|x_t)q(xt1xt)

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θ(xt1xt)=N(xt1;μθ(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(xt1αˉtβtϵθ(xt,t))
  • 核心: 只要神经网络 ϵθ\epsilon_\thetaϵθ 能预测出当前图像里包含的噪声 ϵ\epsilonϵ,就能算出均值,从而还原出 xt−1x_{t-1}xt1

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)=∇xlog⁡p(x)s(x) = \nabla_x \log p(x)s(x)=xlogp(x)。它指示了数据密度增加最快的方向。

2.2 证明推导

我们需要证明预测的噪声 ϵθ\epsilon_\thetaϵθ 与 Score ∇xtlog⁡pt(xt)\nabla_{x_t} \log p_t(x_t)xtlogpt(xt) 存在线性关系。

第一步:写出 xtx_txt 的边缘分布
根据前向公式,给定 x0x_0x0xtx_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(xtx0)=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(xtx0)exp(2(1αˉt)∣∣xtαˉtx02)
对其取对数 log⁡\loglog,再对 xtx_txt 求梯度 ∇xt\nabla_{x_t}xt
∇xtlog⁡p(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(xtx0)=xt(2(1αˉt)∣∣xtαˉtx02)=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

第四步:联立
观察第二步和第三步的结果:
∇xtlog⁡p(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(xtx0)=1αˉt1αˉtϵ=1αˉtϵ

结论:
ϵ=−1−αˉt⋅∇xtlog⁡p(xt)\epsilon = - \sqrt{1 - \bar{\alpha}_t} \cdot \nabla_{x_t} \log p(x_t)ϵ=1αˉtxtlogp(xt)
(注:此处略去了对 x0x_0x0 积分的期望步骤,在去噪得分匹配 Denoising Score Matching 中结论一致)

物理含义:
神经网络预测的 ϵθ\epsilon_\thetaϵθ,本质上是在计算 Score(数据密度梯度)的负方向

  • Score 指向数据密度高的地方(山顶)。
  • 噪声 ϵ\epsilonϵ 是我们要减去的东西,减去噪声 ≈\approx 加上负噪声。
  • 所以,去噪的过程 = 沿着 Score 方向爬山的过程

2.3 Score Matching:梯度的几何直觉

为什么扩散模型能让数据从无序变有序?数学本质是梯度流

  • Score 定义:数据对数密度的梯度。
    s(x)=∇xlog⁡p(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) 是一个向量场。在低密度区域(山谷),∇log⁡p(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Δt0 时,每一步的逆变换在数学上严格近似于高斯分布,这使得神经网络可以精确拟合。

3.3 Flow Matching 的采样机制 (Euler Method)

不同于 DDPM 的祖先采样(加噪去噪),Flow Matching 的采样是在解常微分方程(ODE):

  1. 当前状态xtx_txt(噪声)。
  2. 查询地图:输入网络,得到当前位置的速度向量 v=Model(xt,t)v = \text{Model}(x_t, t)v=Model(xt,t)
  3. 欧拉更新 (Euler Step)
    xt−Δt=xt−v×Δtx_{t - \Delta t} = x_t - v \times \Delta txtΔt=xtv×Δt
    逻辑:新位置 = 旧位置 - 速度 ×\times× 时间步长。
  4. 优势:因为训练时强迫路径为直线,所以 vvv 在大部分时间是恒定的。这意味着我们可以用极大的步长(Δt\Delta tΔt 很大)进行采样,甚至几步就能生成高质量图像。

3.4 DDPM与FM采样机制对比

  • DDPM (Ancestral Sampling):
    xt−1=μθ(xt)+σtzx_{t-1} = \mu_\theta(x_t) + \sigma_t zxt1=μθ(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=xtvt(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 “从噪声生成图像”的本质解释。

您可能感兴趣的与本文相关的镜像

FLUX.1-dev

FLUX.1-dev

图片生成
FLUX

FLUX.1-dev 是一个由 Black Forest Labs 创立的开源 AI 图像生成模型版本,它以其高质量和类似照片的真实感而闻名,并且比其他模型更有效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值