主页
avatar

Kared

扩散模型原理解析:从噪声到图像的生成

“雕像本来就在石头里,我只是把不要的部分去掉” — 米开朗基罗

扩散模型(Diffusion Models)的设计灵感源于非平衡热力学。其核心是定义一个前向的 马尔可夫链(Markov chain),逐步向数据中添加随机噪声,直至数据完全变为噪声;然后,模型学习逆转这一扩散过程,从纯粹的噪声中重建出目标数据样本。

不同类型生成模型的概述

在生成任务中,我们的目标是学习一个由训练数据所隐含的真实概率分布 P(x)P(x),其可以所有自然图像的分布,并从中采样生成新的数据。然而,这个分布通常未知且形式极其复杂,我们无法用一个明确的数学公式来描述它(即难以显式建模)。因此,如何从这个隐式定义的分布中有效地抽取新样本,便构成了生成模型的核心挑战。

真实概率分布 P(x)

扩散模型通过逐步去除高斯噪声来解决这一问题。其核心思路是:首先向图像中逐层注入极少量高斯噪声,逐步破坏其结构,直至多步之后图像退化为纯噪声;随后训练一个神经网络,使其学会逆向执行这一过程——从纯噪声出发,按相反的顺序一点点地去除噪声,逐步恢复并细化出清晰的图像。若模型训练得当,它便能够从随机噪声中逐步生成具有语义的高质量图像。

前向扩散过程

给定一个从真实数据分布中采样的数据点 x0q(x)x_0 \sim q(x),我们定义一个前向扩散过程 (forward diffusion process),在 TT步中向样本添加少量高斯噪声 εN(0,1)\varepsilon \sim \mathcal{N}(0, 1),从而产生一系列加噪样本 x1,,xTx_1, \dots, x_T。 每一步的噪声强度由一个标量值 {βt(0,I)}t=1T\{\beta_t \in (0, I)\}_{t=1}^T控制。

前向扩散过程

逐步加噪过程 的简化设定中,我们采用如下递推形式:

x1=x0+βεx_1 = x_0 + \beta \cdot \varepsilonxt=xt1+βεx_t = x_{t-1} + \beta \cdot \varepsilon

由此可推导出 一步到位加噪的闭式表达

xt=x0+tβεx_t = x_0 + t\beta \cdot \varepsilon

该过程等价于从以原始图像 x0x_0为中心、方差为 tβt\beta的高斯分布中采样。随着时间步数 tt的增加,方差线性增长会导致方差爆炸现象,因此被称为 方差爆炸扩散

xtN(x0, tβI)x_t \sim \mathcal{N}(x_0,\ t\beta \cdot I)

然而,我们需要最终能够收敛到 标准高斯分布 的扩散过程。这种 线性叠加噪声 的方式虽然直观,但并不是标准扩散模型中的马尔可夫加噪过程。

在 DDPM 的标准框架下,只需精心设计噪声调度系数,便能让前向过程兼具 方差保持(VP)方差爆炸(VE) 的特性,均值随时间步增大逐渐衰减至 0,方差同步收敛到 1,从而保证

limtq(xtx0)=N(0, I)\lim_{t \to \infty} q(x_t \mid x_0) = \mathcal{N}(0,\ I)

得益于重参数化技巧,我们无需逐步迭代,就能在任意时刻 tt以闭式一次性采样 xtx_t。具体做法是为每一步引入可变噪声强度 βt(0,I)\beta_t \in (0, I),令 αt=1βt\alpha_t = 1 − \beta_t,并记累积乘积 αˉt=i=1tαi\bar\alpha_t = \prod_{i=1}^{t}\alpha_i,可得:

xt=αt xt1+1αt εt1=αtαt1 xt2+1αtαt1 εt2ˉ==αtˉ x0+1αtˉ ε\begin{aligned} x_t &= \sqrt{\alpha_t}\ x_{t-1} + \sqrt{1 - \alpha_t}\ \varepsilon_{t-1}\\ &= \sqrt{\alpha_t\alpha_{t-1}}\ x_{t-2} + \sqrt{1 - \alpha_t\alpha_{t-1}}\ \bar{\varepsilon_{t-2}}\\ &= \dots \\ &= \sqrt{\bar{\alpha_t}}\ x_0 + \sqrt{1 - \bar{\alpha_t}}\ \varepsilon \\ \end{aligned}

其中每一步的噪声项 εtN(0, I)\varepsilon_t\sim\mathcal{N}(0,\ I)独立同分布,最终可合并为单个高斯噪声 εtˉ\bar{\varepsilon_t}。相邻两步的标准差满足合并关系 (1αt)+αt(1αt1)=1αtαt1\sqrt{(1-\alpha_t) + \alpha_t(1-\alpha_{t-1})} = \sqrt{1-\alpha_t\alpha_{t-1}},因此前向过程的条件分布可简洁地写成:

q(xtx0)=N ⁣(xt; αtˉ x0,  (1αtˉ) I)q(x_t \mid x_0) = \mathcal{N}\!\bigl(x_t;\ \sqrt{\bar{\alpha_t}}\ x_0,\; (1-\bar{\alpha_t})\ I\bigr)

或等价地,

xt=αˉt x0+1αˉt εx_t = \sqrt{\bar{\alpha}_t}\ x_0 + \sqrt{1-\bar{\alpha}_t}\ \varepsilon

随着扩散步数 tt的推进,累积乘积 αˉt=i=1t(1βi)\bar\alpha_t=\prod_{i=1}^{t}(1-\beta_i)呈指数级衰减,xtx_t的分布最终收敛于标准高斯 N(0,I)\mathcal N(0,I)。 直观上,图像噪声逐层叠加,信噪比持续下降;因此调度策略通常令噪声强度单调递增,即 0<β1<β2<<βT<10 < \beta_1 < \beta_2 < \dots < \beta_T < 1,从而 1>αˉ1>αˉ2>>αˉT01 > \bar\alpha_1 > \bar\alpha_2 > \dots > \bar\alpha_T \to 0

根据马尔可夫假设,完整的前向过程可以分解为一系列条件独立的转移步骤:

q(x1,,xTx0)=q(x1x0)  q(x2x1,x0)    q(xTxT1,,x0)q(x_1, \ldots, x_T \mid x_0) = q(x_1 \mid x_0)\; q(x_2 \mid x_1, x_0)\; \ldots\; q(x_T \mid x_{T-1}, \ldots, x_0)

由于马尔可夫性质,每步转移仅依赖于前一状态:

q(x1,,xTx0)=q(x1x0)  q(x2x1)    q(xTxT1)q(x_1, \ldots, x_T \mid x_0) = q(x_1 \mid x_0)\; q(x_2 \mid x_1)\; \ldots\; q(x_T \mid x_{T-1})

因此可简写为:

q(x1:Tx0)=t=1Tq(xtxt1)q(x_{1:T} \mid x_0) = \prod_{t=1}^T q(x_t \mid x_{t-1})

其中每一步的转移概率都是高斯分布:

q(xtxt1)=N(xt; αtxt1, (1αt)I)q(x_t \mid x_{t-1}) = \mathcal{N}(x_t;\ \sqrt{\alpha_t} x_{t-1},\ (1 - \alpha_t) I)

而且,前向过程有一个很好的性质,可以通过 x0x_0得到任意时刻 xtx_t的分布,而无需烦琐的链式计算:

q(xtx0):=q(x1:tx0)dx1:(t1)=N(xt; αˉtx0, (1αˉt)I)q(x_t|x_0) := \int q(x_{1:t} \mid x_0) dx_{1:(t-1)} = \mathcal{N}(x_t;\ \sqrt{\bar{\alpha}_t} x_0,\ (1-\bar{\alpha}_t)\mathbf{I})

DDPM 逆向去噪过程

若能逆转扩散过程,即从条件分布 q(xt1 ⁣ ⁣xt)q(x_{t-1}\!\mid\!x_t)中采样,便可将纯高斯噪声 xTN(0,I)x_T \sim \mathcal{N}(0,I)还原为真实样本。

逆向去噪过程

然而,当 βt\beta_t足够小时,虽然 q(xt1 ⁣ ⁣xt)q(x_{t-1}\!\mid\!x_t)仍近似服从高斯分布,但其均值与方差依赖于整个数据分布 q(x0)q(x_0),在实际应用中无法直接计算。为此,我们引入可学习的参数化模型 pθ(xt1 ⁣ ⁣xt)p_\theta(x_{t-1}\!\mid\!x_t)来近似这些逆条件概率,从而驱动反向扩散并生成新数据。

相应地,我们使用参数化模型来表示完整的逆向生成过程:

pθ(x0:T)=p(xT)t=1Tpθ(xt1xt)p_\theta(x_{0:T}) = p(x_T) \prod_{t=1}^T p_\theta(x_{t-1} \mid x_t)

其中 p(xT)=N(xT; 0, I)p(x_T) = \mathcal{N}(x_T;\ 0,\ I)是标准高斯先验分布,逆向转移概率被建模为:

pθ(xt1xt)=N(xt1; μθ(xt,t), Σθ(xt,t))p_\theta(x_{t-1} \mid x_t) = \mathcal{N}(x_{t-1};\ \mu_\theta(x_t, t),\ \Sigma_\theta(x_t, t))

关键区别:逆向过程无需任何条件信息,可直接从标准高斯噪声开始生成;而前向过程则需要真实图像 x0x_0作为起始条件。

虽然,我们无法直接计算无条件的逆向分布 q(xt1 ⁣ ⁣xt)q(x_{t-1}\!\mid\!x_t),但当以原始图像 x0x_0为条件时,逆向条件概率具有解析解:

q(xt1xt, x0)=N(xt1; μ~(xt,x0), β~tI)q(x_{t-1} \mid x_t,\ x_0) = \mathcal{N}(x_{t-1};\ \tilde{\mu}(x_t, x_0),\ \tilde{\beta}_t I)

通过贝叶斯定理,我们可以将其转换为已知的前向过程分布:

q(xt1xt, x0)=q(xtxt1, x0) q(xt1x0)q(xtx0)=q(xtxt1) q(xt1x0)q(xtx0)(马尔可夫性质)exp(12((xtαtxt1)21αt+(xt1αˉt1x0)21αˉt1(xtαˉtx0)21αˉt))=exp(12(xt22αtxtxt1+αtxt121αt+xt122αˉt1x0xt1+αˉt1x021αˉt1(xtαˉtx0)21αˉt))=exp(12((αt1αt+11αˉt1)xt12(2αt1αtxt+2αˉt11αˉt1x0)xt1+C(xt,x0)))\begin{aligned} q(x_{t-1} \mid x_t,\ x_0) &= \frac{q(x_t \mid x_{t-1},\ x_0)\ q(x_{t-1} \mid x_0)}{q(x_t \mid x_0)} = \frac{q(x_t \mid x_{t-1})\ q(x_{t-1} \mid x_0)}{q(x_t \mid x_0)} \quad \text{(马尔可夫性质)}\\ &\propto \exp\left(-\frac{1}{2}\left(\frac{(x_t - \sqrt{\alpha_t}x_{t-1})^2}{1 - \alpha_t} + \frac{(x_{t-1} - \sqrt{\bar{\alpha}_{t-1}}x_0)^2}{1-\bar{\alpha}_{t-1}} - \frac{(x_t - \sqrt{\bar{\alpha}_t}x_0)^2}{1-\bar{\alpha}_t}\right)\right)\\ &= \exp\left(-\frac{1}{2}\left(\frac{x_t^2 - 2\sqrt{\alpha_t}x_t x_{t-1} + \alpha_t x_{t-1}^2}{1 - \alpha_t} + \frac{x_{t-1}^2 - 2\sqrt{\bar{\alpha}_{t-1}}x_0x_{t-1} + \bar{\alpha}_{t-1} x_0^2}{1-\bar{\alpha}_{t-1}} - \frac{(x_t - \sqrt{\bar{\alpha}_t}x_0)^2}{1-\bar{\alpha}_t}\right)\right)\\ &= \exp\left(-\frac{1}{2}\left(\left(\frac{\alpha_t}{1 - \alpha_t} + \frac{1}{1-\bar{\alpha}_{t-1}}\right)x_{t-1}^2 - \left(\frac{2\sqrt{\alpha_t}}{1 - \alpha_t}x_t + \frac{2\sqrt{\bar{\alpha}_{t-1}}}{1-\bar{\alpha}_{t-1}}x_0\right)x_{t-1} + C(x_t, x_0)\right)\right) \end{aligned}

其中 C(xt,x0)C(x_t, x_0)是与 xt1x_{t-1}无关的常数项。从最终结果看,p(xt1xt,x0)p(x_{t-1} \mid x_t, x_0)同样服从高斯分布,根据标准形式 exp(12σ2(xμ)2)\exp(-\frac{1}{2\sigma^2}(x-\mu)^2),可得:

1σ2=αt1αt+11αˉt1\frac{1}{\sigma^2} = \frac{\alpha_t}{1-\alpha_t} + \frac{1}{1-\bar{\alpha}_{t-1}}2μσ2=2αt1αtxt+2αˉt11αˉt1x0\frac{2\mu}{\sigma^2} = \frac{2\sqrt{\alpha_t}}{1-\alpha_t}x_t + \frac{2\sqrt{\bar{\alpha}_{t-1}}}{1-\bar{\alpha}_{t-1}}x_0

求解上述方程组,得到条件逆向分布的最终参数解:

β~t=σ2=1αˉt11αˉt(1αt)\tilde{\beta}_t = \sigma^2 = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}(1-\alpha_t)μ~t(xt, x0)=μ=αt(1αˉt1)1αˉtxt+αˉt1(1αt)1αˉtx0\tilde{\mu}_t(x_t,\ x_0) = \mu = \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t + \frac{\sqrt{\bar{\alpha}_{t-1}}(1-\alpha_t)}{1-\bar{\alpha}_t}x_0

综合以上结果,条件逆向分布的完整形式为:

p(xt1xt, x0)=N(xt1; αt(1αˉt1)1αˉtxt+αˉt1(1αt)1αˉtx0, 1αˉt11αˉt(1αt) I)p(x_{t-1} \mid x_t,\ x_0) = \mathcal{N}\left(x_{t-1};\ \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t + \frac{\sqrt{\bar{\alpha}_{t-1}}(1-\alpha_t)}{1-\bar{\alpha}_t}x_0,\ \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}(1-\alpha_t)\ \mathbf{I}\right)

其中,方差是固定且已知的,因此,我们只需重点关注对均值的预测即可。而且,均值是 xtx_tx0x_0的线性组合。

重参数化:从分布匹配到噪声预测

为了简化训练过程,我们可以利用前向过程的重参数化技巧,根据前向过程的一步加噪公式 xt=αˉt x0+1αˉt εtx_t = \sqrt{\bar{\alpha}_t}\ x_0 + \sqrt{1-\bar{\alpha}_t}\ \varepsilon_t,我们可以反向求解得到原始图像的表达式 x0=1αˉt (xt1αˉt εt)x_0 = \frac{1}{\sqrt{\bar{\alpha}_t}}\ (x_t - \sqrt{1-\bar{\alpha}_t}\ \varepsilon_t),并将上述 x0x_0的表达式代入条件逆向分布的均值 μ~t(xt, x0)\tilde{\mu}_t(x_t,\ x_0)中:

μ~t=αt(1αˉt1)1αˉtxt+αˉt1(1αt)1αˉt(1αˉt (xt1αˉt εt))=1αt(xt1αt1αˉtϵt)\begin{aligned} \tilde{\mu}_t &= \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t + \frac{\sqrt{\bar{\alpha}_{t-1}}(1-\alpha_t)}{1-\bar{\alpha}_t}\left(\frac{1}{\sqrt{\bar{\alpha}_t}}\ (x_t - \sqrt{1-\bar{\alpha}_t}\ \varepsilon_t)\right) \\ &= \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}}\epsilon_t\right) \end{aligned}

这个结果表明,逆向过程可以重写为:

xt1=1αt(xt1αt1αˉtεt)x_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{1 - \alpha_t}{\sqrt{1-\bar{\alpha}_t}} \varepsilon_t \right)

关键转换:逆向过程的均值完全由当前状态 xtx_t和添加的噪声 εt\varepsilon_t决定。这意味着,对齐均值的问题可以转化为一个更直观的噪声预测任务。

我们用神经网络 ϵθ(xt,t)\epsilon_\theta(x_t, t)来预测真实噪声 εt\varepsilon_t

xt1=1αt(xt1αt1αˉtϵθ(xt,t))+σtzx_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t, t)\right) + \sigma_t z \quad

其中,ϵθ(xt,t)εt\epsilon_\theta(x_t, t) \approx \varepsilon_t表示神经网络预测的噪声,zN(0,I)z \sim \mathcal{N}(0, I)表示从标准正态分布采样的随机噪声,σtz\sigma_t z表示的是预测噪声和真实噪声的误差。

训练与采样

训练目标

扩散模型采用最大似然估计来训练,即寻找参数 θ\theta使生成真实样本 x0x_0的概率最大化。这等价于最小化负对数似然:

L(θ)=Eq(x0)logpθ(x0)\mathcal{L}(\theta) = -\mathbb{E}_{q(x_0)} \log p_\theta(x_0)

变分下界推导

由于直接优化上述目标函数困难,我们利用变分推断方法,通过引入前向过程 q(x1:T ⁣ ⁣x0)q(x_{1:T}\!\mid\!x_0)作为变分分布来获得证据下界(Evidence Lower Bound, ELBO)。

基于 KL 散度非负性的推导:

logpθ(x0)logpθ(x0)+DKL(q(x1:Tx0)pθ(x1:Tx0))(KL is non-negative)=logpθ(x0)+Ex1:Tq(x1:Tx0)[logq(x1:Tx0)pθ(x0:T)/pθ(x0)]=logpθ(x0)+Eq[logq(x1:Tx0)pθ(x0:T)+logpθ(x0)]=Eq[logq(x1:Tx0)pθ(x0:T)]\begin{aligned} -\log p_\theta(\mathbf{x}_0) &\leq -\log p_\theta(\mathbf{x}_0) + D_{\text{KL}}(q(\mathbf{x}_{1:T} \mid \mathbf{x}_0) \parallel p_\theta(\mathbf{x}_{1:T} \mid \mathbf{x}_0)) \quad \text{(KL is non-negative)} \\ &= -\log p_\theta(\mathbf{x}_0) + \mathbb{E}_{\mathbf{x}_{1:T}\sim q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})/p_\theta(\mathbf{x}_0)} \right] \\ &= -\log p_\theta(\mathbf{x}_0) + \mathbb{E}_q \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} + \log p_\theta(\mathbf{x}_0) \right] \\ &= \mathbb{E}_q \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right] \end{aligned}

则变分下界(Variational Lower Bound, VLB)为:

LVLB=Eq(x0:T)[logq(x1:Tx0)pθ(x0:T)]Eq(x0)logpθ(x0)\mathcal{L}_{\text{VLB}} = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right] \geq -\mathbb{E}_{q(\mathbf{x}_0)} \log p_\theta(\mathbf{x}_0)

Jensen 不等式的等价推导

使用 Jensen 不等式也可以得到相同结果,假设我们希望将交叉熵作为学习目标来最小化:

LCE=Eq(x0)logpθ(x0)=Eq(x0)log(pθ(x0:T)dx1:T)=Eq(x0)log(q(x1:Tx0)pθ(x0:T)q(x1:Tx0)dx1:T)=Eq(x0)log(Eq(x1:Tx0)pθ(x0:T)q(x1:Tx0))Eq(x0:T)logpθ(x0:T)q(x1:Tx0)=Eq(x0:T)[logq(x1:Tx0)pθ(x0:T)]=LVLB\begin{aligned} \mathcal{L}_{\text{CE}} &= -\mathbb{E}_{q(\mathbf{x}_0)} \log p_\theta(\mathbf{x}_0) \\ &= -\mathbb{E}_{q(\mathbf{x}_0)} \log \left( \int p_\theta(\mathbf{x}_{0:T})d\mathbf{x}_{1:T} \right) \\ &= -\mathbb{E}_{q(\mathbf{x}_0)} \log \left( \int q(\mathbf{x}_{1:T} \mid \mathbf{x}_0) \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} d\mathbf{x}_{1:T} \right) \\ &= -\mathbb{E}_{q(\mathbf{x}_0)} \log \left( \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \right) \\ &\leq -\mathbb{E}_{q(\mathbf{x}_{0:T})} \log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right] = \mathcal{L}_{\text{VLB}} \end{aligned}

KL 散度分解:可计算的损失函数

为了将变分下界转换为可解析计算的形式,我们需要将其分解为多个 KL 散度项:

LVLB=Eq(x0:T)[logq(x1:Tx0)pθ(x0:T)]=Eq[logt=1Tq(xtxt1)pθ(xT)t=1Tpθ(xt1xt)]=Eq[logpθ(xT)+t=1Tlogq(xtxt1)pθ(xt1xt)]=Eq[logpθ(xT)+t=2Tlogq(xtxt1)pθ(xt1xt)+logq(x1x0)pθ(x0x1)]=Eq[logpθ(xT)+t=2Tlog(q(xt1xt, x0)pθ(xt1xt)q(xtx0)q(xt1x0))+logq(x1x0)pθ(x0x1)]=Eq[logpθ(xT)+t=2Tlogq(xt1xt, x0)pθ(xt1xt)+t=2Tlogq(xtx0)q(xt1x0)+logq(x1x0)pθ(x0x1)]=Eq[logpθ(xT)+t=2Tlogq(xt1xt, x0)pθ(xt1xt)+logq(xTx0)q(x1x0)+logq(x1x0)pθ(x0x1)]=Eq[logq(xTx0)pθ(xT)+t=2Tlogq(xt1xt, x0)pθ(xt1xt)logpθ(x0x1)]=Eq[DKL(q(xTx0)pθ(xT))LT+t=2TDKL(q(xt1xt, x0)pθ(xt1xt))Lt1logpθ(x0x1)L0]\begin{aligned} \mathcal{L}_{\text{VLB}} &= \mathbb{E}{q(\mathbf{x}_{0:T})} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right] \\ &= \mathbb{E}_q \left[ \log \frac{\prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} \right] \\ &= \mathbb{E}_q \left[ -\log p_\theta(\mathbf{x}_T) + \sum_{t=1}^T \log \frac{q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} \right] \\ &= \mathbb{E}_q \left[ -\log p_\theta(\mathbf{x}_T) + \sum_{t=2}^T \log \frac{q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} + \log \frac{q(\mathbf{x}_1 \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1)} \right] \\ &= \mathbb{E}_q \left[ -\log p_\theta(\mathbf{x}_T) + \sum_{t=2}^T \log \left( \frac{q(\mathbf{x}_{t-1} \mid \mathbf{x}_t,\ \mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} \cdot \frac{q(\mathbf{x}_t \mid \mathbf{x}_0)}{q(\mathbf{x}_{t-1} \mid \mathbf{x}_0)} \right) + \log \frac{q(\mathbf{x}_1 \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1)} \right] \\ &= \mathbb{E}_q \left[ -\log p_\theta(\mathbf{x}_T) + \sum_{t=2}^T \log \frac{q(\mathbf{x}_{t-1} \mid \mathbf{x}_t,\ \mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} + \sum_{t=2}^T \log \frac{q(\mathbf{x}_t \mid \mathbf{x}_0)}{q(\mathbf{x}_{t-1} \mid \mathbf{x}_0)} + \log \frac{q(\mathbf{x}_1 \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1)} \right] \\ &= \mathbb{E}_q \left[ -\log p_\theta(\mathbf{x}_T) + \sum_{t=2}^T \log \frac{q(\mathbf{x}_{t-1} \mid \mathbf{x}_t,\ \mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} + \log \frac{q(\mathbf{x}_T \mid \mathbf{x}_0)}{q(\mathbf{x}_1 \mid \mathbf{x}_0)} + \log \frac{q(\mathbf{x}_1 \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1)} \right] \\ &= \mathbb{E}_q \left[ \log \frac{q(\mathbf{x}_T \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_T)} + \sum_{t=2}^T \log \frac{q(\mathbf{x}_{t-1} \mid \mathbf{x}_t,\ \mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} - \log p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1) \right] \\ &= \mathbb{E}_q \Bigg[\displaystyle \underbrace{D_{\mathrm{KL}}\bigl(q(\mathbf{x}_T\mid\mathbf{x}_0) \parallel p_\theta(\mathbf{x}_T)\bigr)}_{\mathcal{L}_T} + \sum_{t=2}^T \underbrace{D_{\mathrm{KL}}\bigl(q(\mathbf{x}_{t-1}\mid\mathbf{x}_t,\ \mathbf{x}_0) \parallel p_\theta(\mathbf{x}_{t-1}\mid\mathbf{x}_t)\bigr)}_{\mathcal{L}_{t-1}} - \underbrace{\log p_\theta(\mathbf{x}_0\mid\mathbf{x}_1)}_{\mathcal{L}_0} \Bigg] \end{aligned}

损失项的实际含义:

  • LT\mathcal{L}_T:常数项,可忽略(因为 xTx_T是纯噪声,qq无可学习参数)
  • Lt1\mathcal{L}_{t-1}:核心损失,比较真实后验分布与模型预测分布
  • L0\mathcal{L}_0:重建损失,数值很小,通常可忽略

简化训练损失 Lt\mathcal{L}_t

由于 LT\mathcal{L}_TL0\mathcal{L}_0可以忽略,我们主要关注 Lt1\mathcal{L}{t-1}项即可。经之前证明,由于两个比较的分布都是高斯分布,KL 散度可以简化为均值差的平方:

Lt(θ)=Eq[t=2TDKL(q(xt1xt,x0)pθ(xt1xt))]=Eq[t>112σt2μ~tμθ2]\mathcal{L}_t(\theta) = \mathbb{E}_q \left[\sum_{t=2}^T D_{\text{KL}}(q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0) \parallel p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)) \right] = \mathbb{E}_q \left[\sum_{t>1} \frac{1}{2\sigma_t^2} \parallel \tilde{\mu}_t - \mu_\theta \parallel ^2 \right]

将重参数化后得到的真实后验分布 q(xt1xt, x0)q(\mathbf{x}_{t-1}\mid\mathbf{x}_t,\ \mathbf{x}_0)与模型预测分布 pθ(xt1xt)p_\theta(\mathbf{x}_{t-1}\mid\mathbf{x}_t)的均值表达式代入,经推导可得:

Lt(θ)=Eq[t>112σt2μ^t(xt,x0)μθ(xt,t)2]=Eq[t>112σt21αt(xt1αt1αˉtϵt)1αt(xt1αt1αˉtϵθ(xt,t))2]=Eq[t>1(1αt)22σt2αt(1αˉt) ϵtϵθ(xt, t)2]=Eq[t>1(1αt)22σt2αt(1αˉt) ϵtϵθ(αˉtx0+1αˉtϵt, t)2]\begin{aligned} \mathcal{L}_t(\theta) &= \mathbb{E}_q\left[\sum_{t>1} \frac{1}{2\sigma_t^2} \parallel \hat{\mu}_t(x_t, x_0) - \mu_\theta(x_t, t) \parallel ^2\right] \\ &= \mathbb{E}_q\left[\sum_{t>1} \frac{1}{2\sigma_t^2} \left\|\frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_t\right) - \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t, t)\right) \right\| ^2\right] \\ &= \mathbb{E}_q\left[\sum_{t>1} \frac{(1-\alpha_t)^2}{2\sigma_t^2\alpha_t(1-\bar{\alpha}_t)}\ \parallel \epsilon_t - \epsilon_\theta(x_t,\ t) \parallel ^2\right] \\ &= \mathbb{E}_q\left[\sum_{t>1} \frac{(1-\alpha_t)^2}{2\sigma_t^2\alpha_t(1-\bar{\alpha}_t)}\ \parallel \epsilon_t - \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon_t,\ t) \parallel ^2\right] \end{aligned}

通过进一步的数学分析和实验验证,作者发现使用忽略权重项的简化目标函数来训练扩散模型效果更好:

Lsimple(θ)=Et,x0,ε[εεθ(xt,t)2]\mathcal{L}_{simple}(\theta) = \mathbb{E}_{t,x_0,\varepsilon} \left[ \|\varepsilon - \varepsilon_\theta(x_t, t)\|^2 \right]

在实际实现中,虽然理论上需要对每个样本的所有时间步 t1,2,,Tt \in {1, 2, \dots, T}计算噪声损失并求和,但这样的计算成本过于昂贵。因此,我们采用随机采样策略:对每个训练样本随机选择一个时间步tt来计算损失。根据大数定律,当训练样本数量足够大时,这种随机采样的期望值将收敛于完整的目标函数,既保证了训练效果,又大幅降低了计算复杂度。

DDPM 原文提供的训练和采样过程如下所示:

DDPM 训练和采样流程

DDIM:非马尔可夫逆向过程

DDPM 的生成速度较慢,主要原因在于其依赖一阶马尔可夫假设,这导致重建过程需要较多的采样步数。实际上,DDPM 的训练过程主要依赖边际分布 q(xt ⁣ ⁣x0)=N(xt;αˉtx0,(1αˉt)I)q(x_t\!\mid\!x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1-\bar{\alpha}_t)\mathbf{I}),可以直接从任意时间步 tt的边际分布中采样,而不需要显式地按马尔可夫链逐步采样。

然而,在逆向推理过程中,DDPM 引入 x0x_0作为条件,所采用的真实后验分布 p(xt1 ⁣ ⁣xt,x0)p(x_{t-1}\!\mid\!x_t, x_0)严格遵循马尔可夫性质,即每一步的去噪仅依赖于前一时间步的状态。这种马尔可夫约束虽然理论上严谨,但限制了采样的灵活性,必须逐步进行 TT次迭代才能完成生成。

DDIM 的核心思路在于:既然训练时只需要保持边际分布 q(xtx0)q(x_t|x_0)不变,那么推理时也可以设计 非马尔可夫 的逆向过程。因此,DDIM 能够直接复用 DDPM 已训练好的噪声预测模型,无需重新训练。

待更新

参考文献 - References

深度学习 扩散模型 Diffusion Models DDPM