01
引言
生成式模型彻底改变了人工智能领域,使机器能够创造出极其逼真的图像、音频和文本。在这些技术中,有两种方法备受关注:扩散模型与流匹配。虽然这两种方法都是将噪声转化为结构化数据(或反向操作),但它们的运作原理却存在根本差异。
本篇技术博文将对这两种强大方法进行全面对比,深入探讨其数学基础、实际应用与直观解释。
02
在深入数学原理之前,我们先来建立对这两种方法的直观理解:
扩散模型通过逐步向数据添加噪声直至数据变成完全的噪声,再学习逆转此过程。可以将其想象为将一张照片缓慢溶解在酸液中,直到它变成一片随机模糊,再学习如何从这片模糊中重建原始照片。
流匹配则在噪声分布与数据分布之间创建一条连续路径(或称“流”)。这类似于定义一个平滑的“运输计划”,将噪声逐步转化为结构化数据,就如同观看一团随机黏土通过延时摄影,逐渐被塑造成一尊细节精美的雕像。
03
扩散模型包含前向过程和反向过程分别讲述。
前向过程:
扩散模型定义了前向过程,通过T个时间步逐步向数据x0 添加噪声
其中,
且 是一个噪声调度参数。
该过程亦可表述为随机微分方程(SDE):
其中
反向过程:
扩散模型的核心观点在于:若能学会逆转噪声添加过程,即可从随机噪声出发通过迭代去噪生成新数据。
反向过程定义为:
实际应用中,DDPM(去噪扩散概率模型)等模型会预测每步的噪声分量
训练目标:
扩散模型的训练目标通常是对负对数似然的变分下界:
实践中,该目标常简化为重新加权的均方误差:
04
连续归一化流和速度场
流匹配建立在连续归一化流 (CNF) 的概念之上,CNF 定义了一个将一个概率分布转化为另一个概率分布的微分方程:
其中
理解速度场
速度场是一个函数,它为空间和时间中的每个点分配一个速度向量。你可以将其想象成一张风力图,显示粒子在任何给定位置应该移动的方向和速度。在生成模型的语境下:
- 数学定义:一个速度场vθ(x,t)为每个点在时间t分配一个向量v
-
物理直观:想象在一条河的任何一点放置一艘小船。速度场告诉你水流在该精确位置将如何移动船只的方向和速度。
-
变换性质: 如果我们从时间 t=0 沿着速度场运动到t=1, 我们将描绘出将样本从一个分布(通常是噪声)转化为另一个分布(我们的目标数据分布)的路径。
速度场具有几个重要的性质,使它们成为生成模型的强大工具:
确定性路径: 沿着速度场从一个起点出发会产生一条确定的轨迹。
可逆性: 我们可以通过反转速度向量来反向运行过程。
概率质量守恒:连续性方程确保在变换过程中概率质量既不会被创造也不会被破坏。
为了可视化速度场,想象一个网格,其中每个点都有一个箭头显示方向和大小:
在流匹配中,我们学习一个神经网络,给定位置和时间来预测这些箭头(速度向量)。该网络被训练以匹配定义分布之间所需流动的参考向量场。
概率流常微分方程(ODE)
在此流动下的概率密度演化遵循连续性方程:
该方程确保变换过程中的质量守恒。
流匹配原则
流匹配的核心创新在于直接通过预定义路径监督速度场vθ,
条件流匹配
条件流匹配(CFM)是其重要扩展,它在单个数据点与噪声样本之间构造路径:
其中:

定义了噪声
控制路径噪声。
05
在本节中,我们将介绍扩散模型和流匹配的差异点,总结如下:
路径定义
-
扩散模型:通过添加高斯噪声定义了一条固定的、随机的路径。前向过程由噪声调度预先确定,模型学习逆转这一特定过程。 -
流匹配:允许在分布之间灵活地设计路径。路径可以是直线、弯曲轨迹,甚至可以动态学习,提供了更大的灵活性。
-
训练动态
-
扩散模型:通常需要估计复杂的概率密度或其替代项,这常常导致训练动态变得困难,并需要仔细的噪声调度。 -
流匹配: 直接监督速度场,从而得到一个更简单的均方误差目标,在训练过程中通常更稳定。
采样效率
扩散模型:传统上在采样时需要许多步骤(通常是 1000+),尽管 DDIM 采样等技术已经降低了这一要求。
流匹配: 通常可以通过利用高阶 ODE 求解器,以更少的步骤(10-100)获得高质量的样本。
理论保证
扩散模型:与基于分数的生成模型有着紧密的联系,并提供了清晰的似然界限。
流匹配: 在特定条件下对精确密度匹配提供了保证,并为优化概率流 ODE 提供了一条更直接的途径。
06
让我们考虑一个具体示例:将标准正态分布转换为两个高斯分布的混合。
在扩散方法中,我们将执行以下步骤:
从目标分布(高斯混合)开始
根据噪声计划βt 逐步添加噪声
训练模型预测每一步的噪声
从纯噪声开始采样并进行迭代去噪
针对一个简单的1维示例(
其反向过程将估计:
07
将标准正态分布转换为两个高斯分布的混合的例子中,若采用流匹配,处理步骤如下:
定义分布之间的路径,例如线性插值:
推导或定义一个诱导该路径的速度场 u(x,t)
训练一个模型来预测这个速度场
通过求解 ODE 来采样:
对于我们的简单示例,假设直线路径,速度场可能是:
其中
08
最具影响力的扩散模型包括:
DDPM(去噪扩散概率模型):普及该方法的奠基模型
DDIM(去噪扩散隐式模型):通过确定性过程加速采样
Stable Diffusion:应用于潜在空间以实现高效图像生成
Imagen 和 DALL-E 2:基于扩散原理的文本到图像模型
实现参考:
# Simplified DDPM training loopdef train_step(self, x_0, optimizer):"""Single training step for diffusion model"""batch_size = x_0.shape[0]# Sample random timestepst = torch.randint(0, self.n_timesteps, (batch_size,), device=self.device, dtype=torch.long)# Add noise to datax_t, noise = self.q_sample(x_0, t)# Predict noisepredicted_noise = self.model(x_t, t / self.n_timesteps)# Compute lossloss = F.mse_loss(noise, predicted_noise)# Update parametersoptimizer.zero_grad()loss.backward()optimizer.step()return loss.item()
09
值得注意的流匹配实现包括:
条件流匹配 (CFM):高效训练用于生成模型的神经 ODE,支持条件控制生成。
一致性模型:将流匹配的方面与扩散原理相结合,通过单步映射实现快速采样。
SiT(分数时间模型):将扩散模型重构为插值匹配,统一分数函数与速度场的学习框架。
实现参考:
def sample_path_point(self, x_0, z, t):"""Sample point along the path from noise z to data x_0 at time t"""# Linear interpolation path with small noisenoise = torch.randn_like(x_0) * self.sigmax_t = (1 - t) * z + t * x_0 + noise * torch.sqrt(t * (1 - t))# Target velocity for the path# For straight-line path (excluding the noise term for simplicity)target_v = x_0 - zreturn x_t, target_v# Simplified Flow Matching training loopdef train_step(self, x_0, optimizer):"""Single training step for flow matching"""batch_size = x_0.shape[0]# Sample random timestepst = torch.rand(batch_size, device=self.device)# Sample noise pointsz = torch.randn_like(x_0)# Get path points and target velocitiesx_t, target_v = self.sample_path_point(x_0, z, t.unsqueeze(-1))# Predict velocity vectorspredicted_v = self.model(x_t, t)# Compute lossloss = F.mse_loss(predicted_v, target_v)# Update parametersoptimizer.zero_grad()loss.backward()optimizer.step()return loss.item()
10
扩散模型和流匹配代表了生成模型中的两种强大范式,它们各自拥有独特的数学基础和实际考虑因素。
扩散模型遵循一个固定的随机过程并学习如何逆转它,而流匹配则直接学习一个可以沿着灵活路径转换分布的速度场。这就像流匹配保留了扩散过程的所有优点,但通过移除复杂正向加噪过程不必要的限制而得到简化。
理解这些方法之间根本性的差异和相似性,可以更深入地了解生成模型的更广阔前景,并为这个快速发展的领域指明令人兴奋的未来方向。
点击上方小卡片关注我
添加个人微信,进专属粉丝群!

