生成模型的目的是给定一组来自某个未知分布 p ∗ ( x ) p^{*}(x) p∗(x)的独立同分布(i.i.d.)样本,构建一个采样器,能够近似地从相同的分布中生成新的样本。例如,假设我们有一组狗的图像训练集,这些图像来自某个潜在分布 p dog p_{\text{dog}} pdog,我们的目标是生成新的狗的图像,这些图像看起来像是从 p dog p_{\text{dog}} pdog中抽取的。数学上,这意味着我们希望构造一个采样器,使得其输出的样本分布尽可能接近 p ∗ ( x ) p^{*}(x) p∗(x)。
直接从复杂的 p ∗ ( x ) p^{*}(x) p∗(x)中采样通常是困难的。扩散模型提供了一种解决方案:通过学习从一个易于采样的分布(例如高斯噪声分布)到目标分布 p ∗ ( x ) p^{*}(x) p∗(x)的转换,间接实现采样。扩散模型的巧妙之处在于,它将从 p ∗ ( x ) p^{*}(x) p∗(x)采样的复杂问题分解成一系列更简单的子问题。具体来说,它通过一个逐步添加噪声的前向过程将数据转化为噪声,再通过一个逐步去除噪声的反向过程从噪声恢复到数据。
为了直观理解扩散模型的工作原理,我们以高斯扩散为例进行讲解。这一示例将展示前向过程如何将数据变为噪声,以及反向过程如何从噪声恢复数据。
假设我们从目标分布 p ∗ ( x ) p^{*}(x) p∗(x)中抽取初始样本 x 0 x_{0} x0,即 x 0 ∼ p ∗ ( x ) x_{0}\sim p^{*}(x) x0∼p∗(x)。前向过程的目标是通过逐步添加高斯噪声,将 x 0 x_{0} x0转化为一个接近标准高斯分布的样本。定义一个时间序列 x 0 , x 1 , … , x T x_{0},x_{1},\dots,x_{T} x0,x1,…,xT,其中每一步都添加一个小的独立高斯噪声:
x t + 1 = x t + ϵ t , ϵ t ∼ N ( 0 , σ 2 I ) x_{t+1} = x_{t}+\epsilon_{t},\quad\epsilon_{t}\sim\mathcal{N}(0,\sigma^{2} I) xt+1=xt+ϵt,ϵt∼N(0,σ2I)
推导前向过程的结果:经过 T T T步后, x T x_{T} xT是 x 0 x_{0} x0加上 T T T个独立高斯噪声之和,即:
x T = x 0 + ϵ 0 + ϵ 1 + ⋯ + ϵ T − 1 x_{T} = x_{0}+\epsilon_{0}+\epsilon_{1}+\dots+\epsilon_{T-1} xT=x0+ϵ0+ϵ1+⋯+ϵT−1
由于 ϵ t \epsilon_{t} ϵt是独立的,且每个 ϵ t ∼ N ( 0 , σ 2 I ) \epsilon_{t}\sim\mathcal{N}(0,\sigma^{2}I) ϵt∼N(0,σ2I),因此总噪声的分布是:
∑ t = 0 T − 1 ϵ t ∼ N ( 0 , T σ 2 I ) \sum_{t=0}^{T-1}{\epsilon_{t}}\sim\mathcal{N}(0,T\sigma^{2}I) t=0∑T−1ϵt∼N(0,Tσ2I)
因此, x T x_{T} xT的分布为:
x T = x 0 + N ( 0 , T σ 2 I ) x_{T} = x_{0}+\mathcal{N}(0,T\sigma^{2}I) xT=x0+N(0,Tσ2I)
当 T T T足够大时, T σ 2 T\sigma^{2} Tσ2变得很大, x T x_{T} xT的分布将趋近于一个均值为0、方差为 T σ 2 I T\sigma^{2}I Tσ2I的高斯分布 N ( 0 , T σ 2 I ) \mathcal{N}(0,T\sigma^{2}I) N(0,Tσ2I),几乎完全覆盖了 x 0 x_{0} x0的信息。此时, x T x_{T} xT可以近似看作从纯噪声分布 p T ≈ N ( 0 , T σ 2 I ) p_{T}\approx\mathcal{N}(0,T\sigma^{2}I) pT≈N(0,Tσ2I)中采样得到的。
前向过程将数据 x 0 x_{0} x0转化为噪声 x T x_{T} xT,而反向过程的目标是逆转这一过程,从 x T x_{T} xT开始逐步去除噪声,恢复到 x 0 x_{0} x0。具体来说,我们需要构造一个反向采样器,能够从时间步 t + 1 t+1 t+1的分布 p t + 1 p_{t+1} pt+1采样得到时间步 t t t的分布 p t p_{t} pt。如果我们能解决以下子问题:
给定来自 p t + 1 p_{t+1} pt+1的样本,生成来自 p t p_{t} pt的样本。
那么我们就可以从 p T ≈ N ( 0 , T σ 2 I ) p_{T}\approx\mathcal{N}(0,T\sigma^{2}I) pT≈N(0,Tσ2I)开始,逐步应用反向采样器,生成样本序列 x T , x T − 1 , … , x 1 , x 0 x_{T},x_{T-1},\dots,x_{1},x_{0} xT,xT−1,…,x1,x0,最终得到 x 0 ∼ p ∗ ( x ) x_{0}\sim p^{*}(x) x0∼p∗(x)。
在高斯扩散的设置中,反向过程的条件分布 p ( x t − Δ t ∣ x t ) p(x_{t-\Delta t}|x_{t}) p(xt−Δt∣xt)可以被近似为一个高斯分布,这为反向采样器的设计提供了便利。
一个关键事实是,当噪声水平较小时(即 Δ t \Delta t Δt或 σ 2 \sigma^{2} σ2较小),反向条件分布 p ( x t − Δ t ∣ x t ) p(x_{t-\Delta t}|x_{t}) p(xt−Δt∣xt)接近于高斯分布。这个事实将在后续章节中详细推导,这里我们先接受其结论,并基于此构建反向采样器。
假设 p ( x t − Δ t ∣ x t ) ≈ N ( μ , σ 2 I ) p(x_{t-\Delta t}|x_{t})\approx \mathcal{N}(\mu,\sigma^{2}I) p(xt−Δt∣xt)≈N(μ,σ2I),我们需要确定均值 μ \mu μ和方差 σ 2 \sigma^{2} σ2。
基于高斯近似,我们可以将反向采样器定义为:
x t − Δ t ∼ N ( μ θ ( x , t ) , σ 2 I ) x_{t-\Delta t}\sim\mathcal{N}(\mu_{\theta}(x,t),\sigma^{2}I) xt−Δt∼N(μθ(x,t),σ2I)
这种参数化简化了问题:我们只需要学习均值函数 μ θ \mu_{\theta} μθ,而不需要建模复杂的分布。
为了使反向采样器有效,我们需要训练一个模型来预测反向条件分布的参数。在高斯扩散中,这通常通过一个去噪模型实现。
一个常见的策略是训练一个神经网络 f θ ( x t , t ) f_{\theta}(x_{t},t) fθ(xt,t)来预测原始无噪声样本 x 0 x_{0} x0。训练过程如下:
数据生成:
从目标分布采样 x 0 ∼ p ∗ ( x ) x_{0}\sim p^{*}(x) x0∼p∗(x)
通过前向过程生成 x t x_{t} xt: x t = x 0 + ∑ i = 0 t − 1 ϵ i , ∑ i = 0 t − 1 ϵ i ∼ N ( 0 , t σ 2 I ) x_{t} = x_{0}+\sum_{i=0}^{t-1}{\epsilon_{i}},\quad \sum_{i=0}^{t-1}{\epsilon_{i}}\sim\mathcal{N}(0,t\sigma^{2}I) xt=x0+∑i=0t−1ϵi,∑i=0t−1ϵi∼N(0,tσ2I),或者更简洁的:
x t = x 0 + t σ q z , z ∼ N ( 0 , I ) x t ∼ N ( x 0 , σ t 2 ) , σ t = σ q t x_{t} = x_{0}+\sqrt{t}\sigma_{q} z,\quad z\sim\mathcal{N}(0,I) \\[10pt] x_{t}\sim\mathcal{N}(x_{0},\sigma_{t}^{2}),\quad \sigma_{t} = \sigma_{q}\sqrt{t} xt=x0+tσqz,z∼N(0,I)xt∼N(x0,σt2),σt=σqt
损失函数:训练模型最小化预测值与真实 x 0 x_{0} x0之间的均方误差:
L = ∥ f θ ( x t , t ) − x 0 ∥ 2 \mathcal{L} = \|f_{\theta}(x_{t},t)-x_{0}\|^{2} L=∥fθ(xt,t)−x0∥2
通过优化这个损失, f θ f_{\theta} fθ学会从带噪样本 x t x_{t} xt预测 x 0 x_{0} x0。
在采样阶段,我们从纯噪声 x T ∼ N ( 0 , σ T 2 I ) x_{T}\sim\mathcal{N}(0,\sigma_{T}^{2}I) xT∼N(0,σT2I)开始,逐步应用反向采样器:
x t − Δ t = μ θ ( x t , t ) + σ ⋅ z , z ∼ N ( 0 , I ) x_{t-\Delta t} = \mu_{\theta}(x_{t},t)+\sigma\cdot z,\quad z\sim\mathcal{N}(0,I) xt−Δt=μθ(xt,t)+σ⋅z,z∼N(0,I)
步骤推导:
假设 μ θ ( x t , t ) \mu_{\theta}(x_{t},t) μθ(xt,t)近似于从 x t x_{t} xt到 x t − Δ t x_{t-\Delta t} xt−Δt的均值移动。
添加噪声 σ ⋅ z \sigma\cdot z σ⋅z模拟反向过程中的随机性。
迭代应用此公式,从 t = T t=T t=T到 t = 0 t=0 t=0,最终得到 x 0 x_{0} x0
在本节中,我们将深入探讨 Denoising Diffusion Probabilistic Models (DDPM) 的随机采样机制。DDPM 是一种生成模型,通过从高斯噪声中逐步去噪生成高质量样本。
DDPM 由 Ho 等人在 2020 年提出,是一种基于扩散过程的生成模型。其核心思想是通过以下两个过程实现数据生成:
DDPM 的随机采样过程是其反向过程的关键,依赖于反向条件分布的高斯近似和神经网络的去噪能力。
在介绍采样机制之前,我们需要证明一个关键事实:当噪声水平较小时,反向条件分布 p ( x t − Δ t ∣ x t ) p(x_{t-\Delta t} | x_t) p(xt−Δt∣xt) 可以近似为高斯分布。
假设 p t − Δ t ( x ) p_{t-\Delta t}(x) pt−Δt(x) 是 R d \mathbb{R}^d Rd 上一个充分光滑的密度函数。考虑联合分布 ( x t − Δ t , x t ) (x_{t-\Delta t}, x_t) (xt−Δt,xt),其中:
x t = x t − Δ t + η t , η t ∼ N ( 0 , σ 2 I ) x_t = x_{t-\Delta t} + \eta_t, \quad \eta_t \sim \mathcal{N}(0, \sigma^2 I) xt=xt−Δt+ηt,ηt∼N(0,σ2I)
当 Δ t \Delta t Δt 足够小(即噪声水平低)时,对于任意条件 x t = z ∈ R d x_t = z \in \mathbb{R}^d xt=z∈Rd,反向条件分布满足:
p ( x t − Δ t ∣ x t = z ) ≈ N ( μ z , σ 2 I ) p(x_{t-\Delta t} | x_t = z) \approx \mathcal{N}(\mu_z, \sigma^2 I) p(xt−Δt∣xt=z)≈N(μz,σ2I)
其中 μ z \mu_z μz 是依赖于 z z z 的均值,方差为 σ 2 I \sigma^2 I σ2I。
我们通过贝叶斯定理推导这一近似:
前向过程:根据定义, x t = x t − Δ t + η t x_t = x_{t-\Delta t} + \eta_t xt=xt−Δt+ηt,其中 η t ∼ N ( 0 , σ 2 I ) \eta_t \sim \mathcal{N}(0, \sigma^2 I) ηt∼N(0,σ2I)。这意味着前向条件分布为:
p ( x t ∣ x t − Δ t ) = N ( x t ; x t − Δ t , σ 2 I ) p(x_t | x_{t-\Delta t}) = \mathcal{N}(x_t; x_{t-\Delta t}, \sigma^2 I) p(xt∣xt−Δt)=N(xt;xt−Δt,σ2I)
即 x t x_t xt 是以 x t − Δ t x_{t-\Delta t} xt−Δt 为均值、方差为 σ 2 I \sigma^2 I σ2I 的高斯分布。
反向条件分布:我们需要计算 p ( x t − Δ t ∣ x t = z ) p(x_{t-\Delta t} | x_t = z) p(xt−Δt∣xt=z)。根据贝叶斯定理:
p ( x t − Δ t ∣ x t = z ) = p ( x t = z ∣ x t − Δ t ) p ( x t − Δ t ) p ( x t = z ) p(x_{t-\Delta t} | x_t = z) = \frac{p(x_t = z | x_{t-\Delta t}) p(x_{t-\Delta t})}{p(x_t = z)} p(xt−Δt∣xt=z)=p(xt=z)p(xt=z∣xt−Δt)p(xt−Δt)
小噪声近似:当 σ 2 \sigma^2 σ2 很小时,似然 p ( x t = z ∣ x t − Δ t ) p(x_t = z | x_{t-\Delta t}) p(xt=z∣xt−Δt) 在 x t − Δ t = z x_{t-\Delta t} = z xt−Δt=z 附近高度集中。我们可以通过对 log p ( x t − Δ t ) \log p(x_{t-\Delta t}) logp(xt−Δt) 进行泰勒展开来近似整个分布:
结果:通过拉普拉斯近似,反向分布可近似为:
p ( x t − Δ t ∣ x t = z ) ≈ N ( μ z , σ 2 I ) p(x_{t-\Delta t} | x_t = z) \approx \mathcal{N}(\mu_z, \sigma^2 I) p(xt−Δt∣xt=z)≈N(μz,σ2I)
其中 μ z \mu_z μz 依赖于 z z z 和 p ( x t − Δ t ) p(x_{t-\Delta t}) p(xt−Δt) 的梯度(具体形式需进一步计算,但在 DDPM 中由神经网络估计)。
基于此近似,反向采样器定义为:
x t − Δ t ∼ N ( μ θ ( x t , t ) , σ 2 I ) x_{t-\Delta t} \sim \mathcal{N}(\mu_\theta(x_t, t), \sigma^2 I) xt−Δt∼N(μθ(xt,t),σ2I)
其中 μ θ ( x t , t ) \mu_\theta(x_t, t) μθ(xt,t) 是神经网络参数化的均值函数,目标是学习这一函数以逆转前向噪声过程。
DDPM 的训练目标是学习去噪模型 f θ ( x t , t ) f_\theta(x_t, t) fθ(xt,t),使其能够预测无噪声样本 x 0 x_0 x0。训练损失定义为:
L = E t ∼ U [ 0 , 1 ] , x 0 ∼ p ∗ , ϵ ∼ N ( 0 , I ) [ ∣ f θ ( x t , t ) − x 0 ∣ 2 ] L = \mathbb{E}_{t \sim \mathcal{U}[0,1], x_0 \sim p^*, \epsilon \sim \mathcal{N}(0, I)} \left[ | f_\theta(x_t, t) - x_0 |^2 \right] L=Et∼U[0,1],x0∼p∗,ϵ∼N(0,I)[∣fθ(xt,t)−x0∣2]
其中:
采样从纯噪声 x T ∼ N ( 0 , σ T 2 I ) x_T \sim \mathcal{N}(0, \sigma_T^2 I) xT∼N(0,σT2I) 开始,逐步应用反向采样器:
x t − Δ t = μ θ ( x t , t ) + σ ⋅ z , z ∼ N ( 0 , I ) x_{t-\Delta t} = \mu_\theta(x_t, t) + \sigma \cdot z, \quad z \sim \mathcal{N}(0, I) xt−Δt=μθ(xt,t)+σ⋅z,z∼N(0,I)
其中 μ θ ( x t , t ) \mu_\theta(x_t, t) μθ(xt,t) 可通过训练好的 f θ f_\theta fθ 推导。
采样初始噪声 x T ∼ N ( 0 , σ T 2 I ) x_T \sim \mathcal{N}(0, \sigma_T^2 I) xT∼N(0,σT2I)。
对于 t = T t = T t=T 到1:
DDPM 的离散时间过程可以看作随机微分方程(SDE)的离散化形式。
连续时间下的扩散过程表示为:
d x t = f ( x t , t ) d t + g ( t ) d W t dx_t = f(x_t, t) dt + g(t) dW_t dxt=f(xt,t)dt+g(t)dWt
其中 f ( x t , t ) f(x_t, t) f(xt,t) 是漂移项, g ( t ) g(t) g(t) 是扩散系数,与时间 t t t有关, W t W_t Wt 是布朗运动。
反向过程对应:
d x t = [ f ( x t , t ) − g ( t ) 2 ∇ x log p t ( x t ) ] d t + g ( t ) d W t dx_t = \left[ f(x_t, t) - g(t)^2 \nabla_x \log p_t(x_t) \right] dt + g(t) dW_t dxt=[f(xt,t)−g(t)2∇xlogpt(xt)]dt+g(t)dWt
其中 ∇ x log p t ( x t ) \nabla_x \log p_t(x_t) ∇xlogpt(xt) 是得分函数,DDPM 的 f θ ( x t , t ) f_\theta(x_t, t) fθ(xt,t) 实际上在近似这一项。
DDIM 是一种高效的扩散模型采样方法,通过确定性流逆转前向扩散过程,从高斯噪声生成高质量样本。与 DDPM 的随机性不同,DDIM 的确定性使其在生成过程中更可控且计算效率更高。其核心是通过学习一个速度场(velocity field),从噪声分布(如高斯分布)逐步恢复到目标数据分布(如狗的图像分布)。它利用了前向扩散过程中条件分布的高斯近似,并通过确定性更新规则避免了随机噪声的引入。
DDIM(去噪扩散隐式模型)由 Song 等人在 2021 年提出,是一种确定性采样方法,用于从高斯噪声生成目标分布的样本。与 DDPM 的随机采样不同,DDIM 通过确定性流逆转扩散过程,减少了采样步骤并提高了计算效率。DDIM 被视为流匹配的一种特殊形式,并与概率流常微分方程(ODE)密切相关。
DDIM的核心在于其确定性逆转过程。给定一个初始噪声样本 x T ∼ N ( 0 , σ T 2 I ) x_T \sim \mathcal{N}(0, \sigma_T^2 I) xT∼N(0,σT2I) ,DDIM通过一系列确定性步骤生成 x 0 x_0 x0,确保每次运行结果相同。这种确定性提高了可重复性和计算效率。
DDIM 被描述为流匹配的一种特殊形式。流匹配的目标是学习一个速度场 v ( x , t ) v(x, t) v(x,t),将基分布 q q q(如高斯分布)映射到目标分布 p p p(如数据分布)。在 DDIM 中,速度场是确定性的,定义了从噪声到数据的轨迹。
DDIM 可以看作是对概率流 ODE 的离散化。概率流 ODE 描述了从噪声到数据的确定性路径,去除了随机扩散项:
d x t d t = f ( x t , t ) − 1 2 g ( t ) 2 ∇ x log p t ( x t ) \frac{dx_t}{dt} = f(x_t, t) - \frac{1}{2} g(t)^2 \nabla_x \log p_t(x_t) dtdxt=f(xt,t)−21g(t)2∇xlogpt(xt)
其中:
线性流:DDIM 的轨迹可以表示为线性点流(pointwise flows)的组合,通过时间缩放调整。这些线性流简化了计算,使得 DDIM 在实践中更易实现。
效率:DDIM 通常需要较少的采样步骤(例如 50-100 步,而 DDPM 可能需要 1000 步),显著降低了计算成本。这得益于其确定性更新规则和对 ODE 的数值求解。
前向扩散过程从目标分布 p ∗ ( x ) p^{*}(x) p∗(x)开始,逐步添加高斯噪声:
x t = x t − 1 + η t , η t ∼ N ( 0 , σ 2 I ) x_t = x_{t-1} + \eta_t, \quad \eta_t \sim \mathcal{N}(0, \sigma^2 I) xt=xt−1+ηt,ηt∼N(0,σ2I)
经过 T T T步, x T x_{T} xT接近高斯分布 N ( 0 , T σ 2 I ) \mathcal{N}(0, T \sigma^2 I) N(0,Tσ2I)。在连续时间下,这对应于随机微分方程(SDE):
d x = f ( x , t ) d t + g ( t ) d W dx = f(x, t)dt + g(t)dW dx=f(x,t)dt+g(t)dW
其中 d W dW dW是布朗运动。
DDIM 的反向过程通过确定性更新规则逆转前向扩散。关键假设是反向条件分布 p ( x t − 1 ∣ x t ) p(x_{t-1} | x_t) p(xt−1∣xt)在小噪声水平下近似为高斯分布。DDIM 的更新规则为:
x t − 1 = α t x t + β t ϵ θ ( x t , t ) x_{t-1} = \alpha_t x_t + \beta_t \epsilon_\theta(x_t, t) xt−1=αtxt+βtϵθ(xt,t)
此更新规则是确定性的,不引入随机噪声。
DDIM 使用速度场 v ( x , t ) v(x, t) v(x,t) 定义点在时间上的移动方向:
v ( x , t ) ≈ − 1 2 g ( t ) 2 ∇ x log p t ( x ) v(x, t) \approx -\frac{1}{2} g(t)^2 \nabla_x \log p_t(x) v(x,t)≈−21g(t)2∇xlogpt(x)
此速度场指向逆转扩散的方向,指导从 ( x_t ) 到 ( x_{t-1} ) 的移动。离散更新为:
x t − 1 = x t + v ( x t , t ) Δ t x_{t-1} = x_t + v(x_t, t) \Delta t xt−1=xt+v(xt,t)Δt
DDIM 的连续形式是概率流 ODE:
d x t d t = f ( x t , t ) − 1 2 g ( t ) 2 ∇ x log p t ( x t ) \frac{dx_t}{dt} = f(x_t, t) - \frac{1}{2} g(t)^2 \nabla_x \log p_t(x_t) dtdxt=f(xt,t)−21g(t)2∇xlogpt(xt)
通过数值求解器(如 Euler 或 Runge-Kutta)离散化此 ODE,得到 DDIM 的更新规则。
DDIM 的轨迹可以通过点流表示。对于目标分布 p 0 p_{0} p0是 Dirac-delta 分布的情况,点流定义为:
G t ( x 1 ) = x 1 − Δ G_t(x_1) = x_1 - \Delta Gt(x1)=x1−Δ
其中 Δ \Delta Δ是从 x 1 x_{1} x1到 x 0 x_{0} x0的位移。DDIM 将这些点流组合为线性流,通过时间缩放调整轨迹。
DDIM 的更新规则可以通过流匹配推导。假设目标分布 p 0 p_{0} p0是 Dirac-delta 分布,流 v v v将基分布 p 1 p_{1} p1映射到 p 0 p_{0} p0。离散更新为:
x t − 1 = x t − α t v ( x t , t ) x_{t-1} = x_t - \alpha_t v(x_t, t) xt−1=xt−αtv(xt,t)
其中 v ( x t , t ) v(x_{t},t) v(xt,t)由神经网络预测, α t \alpha_{t} αt调整步长。
高效采样:DDIM 的确定性使其采样步骤少于 DDPM,适合实时应用。例如,在图像生成中,DDIM 可以在 50-100 步内生成高质量图像,而 DDPM 可能需要 1000 步。
可重复性:由于没有随机噪声,DDIM 确保相同输入产生相同输出,便于调试和验证。
数值求解器:DDIM 使用 Euler 或 Runge-Kutta 等求解器离散化 ODE,提高采样效率。
学习误差:DDIM 的性能依赖于精确学习速度场 v ( x t , t ) v(x_{t},t) v(xt,t)。时间依赖性或回归误差可能导致生成样本偏离目标分布。
数据集规模:在小数据集上,DDIM 可能过拟合,导致轨迹坍缩到训练点,影响泛化能力。
特性 | DDPM | DDIM |
---|---|---|
采样性质 | 随机 | 确定性 |
步骤数 | 较多(1000+) | 较少(50-100) |
计算成本 | 高 | 低 |
可重复性 | 低 | 高 |
Flow Matching 的核心目标是通过学习一个流 v v v,将初始分布 q q q(通常是易于采样的,如高斯分布)运输到目标分布 p p p(如狗的图像分布),从而生成目标分布的样本。
流与 ODE:
点流(Pointwise Flows):
分布运输:
基础分布与目标分布:
与扩散模型的关系
Flow Matching的实现需要以下关键选择:
训练目标是学习一个神经网络 f θ f_\theta fθ,逼近边缘流 v t ∗ ( x t ) v^*_t(x_t) vt∗(xt)。
伪代码4:Flow Matching训练损失
输入:神经网络 f θ f_\theta fθ
数据:耦合 Π q , p \Pi_{q,p} Πq,p 的采样访问
步骤
:
此损失函数促使 f θ f_\theta fθ 在轨迹上匹配点流的速度。
训练完成后,通过求解 f θ f_\theta fθ 定义的常微分方程(ODE)从目标分布 p p p 采样。
伪代码5:采样
输入:训练好的神经网络 f θ f_\theta fθ
步骤
:
Flow Matching是DDIM(去噪扩散隐式模型)的推广。DDIM可以看作Flow Matching在特定点流和耦合选择下的特例。
(DDIM等价于线性流):DDIM采样器在时间重参数化下等价于使用线性点流和扩散耦合产生的边缘流。
具体地,使用线性点流 v t [ x 1 , x 0 ] ( x t ) = 1 2 t ( x t − x 0 ) v^{[x_1, x_0]}_t(x_t) = \frac{1}{2t}(x_t - x_0) vt[x1,x0](xt)=2t1(xt−x0) 或 v t [ x 1 , x 0 ] ( x t ) = 1 2 t ( x 0 − x 1 ) v^{[x_1, x_0]}_t(x_t) = \frac{1}{2\sqrt{t}}(x_0 - x_1) vt[x1,x0](xt)=2t1(x0−x1),结合扩散耦合 x 1 = x 0 + N ( 0 , σ q 2 ) x_1 = x_0 + \mathcal{N}(0, \sigma_q^2) x1=x0+N(0,σq2),可重现DDIM轨迹。
噪声调度 σ t \sigma_t σt 决定每一步添加的噪声量。
简单扩散: p ( x t ) ∼ N ( x 0 , σ t 2 ) p(x_t) \sim \mathcal{N}(x_0, \sigma_t^2) p(xt)∼N(x0,σt2),通常 σ t ∝ t \sigma_t \propto \sqrt{t} σt∝t。
变异保持调度:如Ho等人 [2020],更新公式为:
x t = 1 − β ( t ) x t − 1 + β ( t ) ε t , 0 < β ( t ) < 1 x_t = \sqrt{1 - \beta(t)} x_{t-1} + \sqrt{\beta(t)} \varepsilon_t, \quad 0 < \beta(t) < 1 xt=1−β(t)xt−1+β(t)εt,0<β(t)<1
选择合适的噪声调度对模型性能至关重要。
扩散模型可通过变分自编码器(VAE)的视角解释:
扩散模型使用不同的参数化方式预测不同量:
这些参数化方式影响训练稳定性和生成样本质量。