Flow Matching 和 Diffusion 的联系与区别

Diffusion(扩散模型)的基础

原理

扩散模型(Diffusion Models)是一类生成模型,通过模拟一个加噪过程(从数据到噪声)和一个去噪过程(从噪声恢复数据),学习数据的分布。其核心思想是将数据逐步添加高斯噪声,直至变成纯噪声(通常是标准正态分布),然后训练一个神经网络逆转这个过程,从噪声中重建数据。

扩散模型通常分为两部分:

  1. 前向过程(加噪,Forward Process):从数据 ( x 0 x_0 x0 ) 到噪声 ( x T x_T xT ),这是一个固定的 Markov 过程。
  2. 逆向过程(去噪,Reverse Process):从噪声 ( x T x_T xT ) 回到数据 ( x 0 x_0 x0 ),这是一个学习的参数化过程。

加噪公式(前向过程)

前向过程是一个逐步加噪的马尔可夫链,定义为:

q ( x t ∣ x t − 1 ) = N ( x t ∣ 1 − β t x t − 1 , β t I ) q(x_t | x_{t-1}) = \mathcal{N}(x_t | \sqrt{1-\beta_t} x_{t-1}, \beta_t I) q(xtxt1)=N(xt1βt xt1,βtI)

  • ( x 0 x_0 x0 ):初始数据,来自真实分布 ( q ( x 0 ) q(x_0) q(x0) )。
  • ( β t \beta_t βt ):时间步 ( t t t ) 的噪声方差调度(通常 ( 0 < β t < 1 0 < \beta_t < 1 0<βt<1 )),控制每一步加噪的强度。
  • ( t = 1 , 2 , … , T t = 1, 2, \dots, T t=1,2,,T ):离散时间步,( T T T ) 很大时,( x T ≈ N ( 0 , I ) x_T \approx \mathcal{N}(0, I) xTN(0,I) )。

关键公式:通过逐步迭代,可以直接从 ( x 0 x_0 x0 ) 跳到任意 ( t t t ) 的分布(基于高斯性质):

q ( x t ∣ x 0 ) = N ( x t ∣ α t x 0 , ( 1 − α t ) I ) q(x_t | x_0) = \mathcal{N}(x_t | \sqrt{\alpha_t} x_0, (1-\alpha_t) I) q(xtx0)=N(xtαt x0,(1αt)I)

其中:

  • ( α t = ∏ s = 1 t ( 1 − β s ) \alpha_t = \prod_{s=1}^t (1 - \beta_s) αt=s=1t(1βs) ):累计缩放因子,随 ( t t t ) 增大而减小。
  • ( 1 − α t 1 - \alpha_t 1αt ):累计噪声方差。

使用方法

  • 输入:真实数据 ( x 0 x_0 x0 )。
  • 随机采样时间 ( t t t ) 和噪声 ( ϵ ∼ N ( 0 , I ) \epsilon \sim \mathcal{N}(0, I) ϵN(0,I) )。
  • 计算:( x t = α t x 0 + 1 − α t ϵ x_t = \sqrt{\alpha_t} x_0 + \sqrt{1 - \alpha_t} \epsilon xt=αt x0+1αt ϵ )。

去噪公式(逆向过程)

逆向过程试图从 ( x T x_T xT ) 回到 ( x 0 x_0 x0 ),定义为:

p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ∣ μ θ ( x t , t ) , Σ θ ( x t , 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))

  • ( μ θ ( x t , t ) \mu_\theta(x_t, t) μθ(xt,t) ):神经网络预测的均值。
  • ( Σ θ ( x t , t ) \Sigma_\theta(x_t, t) Σθ(xt,t) ):协方差,通常固定为 ( β t I \beta_t I βtI ) 或其他简单形式。

训练目标是优化变分下界(ELBO),但实际中常用简化形式:预测噪声 ( ϵ \epsilon ϵ ):

L Diffusion = E t , x 0 , ϵ ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 \mathcal{L}_{\text{Diffusion}} = \mathbb{E}_{t, x_0, \epsilon} \left\| \epsilon - \epsilon_\theta(x_t, t) \right\|^2 LDiffusion=Et,x0,ϵϵϵθ(xt,t)2

其中:

  • ( x t = α t x 0 + 1 − α t ϵ x_t = \sqrt{\alpha_t} x_0 + \sqrt{1 - \alpha_t} \epsilon xt=αt x0+1αt ϵ )。
  • ( ϵ θ ( x t , t ) \epsilon_\theta(x_t, t) ϵθ(xt,t) ):神经网络预测的噪声。

去噪公式
给定 ( x t x_t xt ) 和预测的 ( ϵ θ ( x t , t ) \epsilon_\theta(x_t, t) ϵθ(xt,t) ),一步去噪为:

x t − 1 = 1 1 − β t ( x t − β t 1 − α t ϵ θ ( x t , t ) ) + β t z , z ∼ N ( 0 , I ) x_{t-1} = \frac{1}{\sqrt{1-\beta_t}} \left( x_t - \frac{\beta_t}{\sqrt{1-\alpha_t}} \epsilon_\theta(x_t, t) \right) + \sqrt{\beta_t} z, \quad z \sim \mathcal{N}(0, I) xt1=1βt 1(xt1αt βtϵθ(xt,t))+βt z,zN(0,I)

使用方法

  1. 从 ( x T ∼ N ( 0 , I ) x_T \sim \mathcal{N}(0, I) xTN(0,I) ) 开始。
  2. 迭代 ( t = T t = T t=T ) 到 ( t = 1 t = 1 t=1 ),每次用神经网络预测 ( ϵ θ ( x t , t ) \epsilon_\theta(x_t, t) ϵθ(xt,t) ),计算 ( x t − 1 x_{t-1} xt1 )。

Flow Matching(流匹配)的回顾

原理

Flow Matching 是一种基于连续归一化流(CNFs)的生成方法,通过学习一个时间依赖的向量场 ( v t ( x ) v_t(x) vt(x) ),将初始分布(通常是 ( N ( 0 , I ) \mathcal{N}(0, I) N(0,I) ))平滑变换到目标分布 ( q ( x ) q(x) q(x) )。其核心是一个 ODE:

d d t ϕ t ( x ) = v t ( ϕ t ( x ) ) , ϕ 0 ( x ) = x \frac{d}{dt} \phi_t(x) = v_t(\phi_t(x)), \quad \phi_0(x) = x dtdϕt(x)=vt(ϕt(x)),ϕ0(x)=x

概率路径由推前公式定义:

p t ( x ) = [ ϕ t ] ∗ p 0 ( x ) p_t(x) = [\phi_t]_* p_0(x) pt(x)=[ϕt]p0(x)

这里的定义和详细内容参考flow matching的原始论文,请参考笔者的另外的博客:
深入解析 Flow Matching:从条件概率路径与向量场到条件流匹配

深入解析 Flow Matching(二):从条件概率路径与向量场到条件流匹配

公式

Flow Matching 的训练目标是回归目标向量场 ( u t ( x ) u_t(x) ut(x) ):

L FM ( θ ) = E t , p t ( x ) ∥ v t ( x ) − u t ( x ) ∥ 2 \mathcal{L}_{\text{FM}}(\theta) = \mathbb{E}_{t, p_t(x)} \left\| v_t(x) - u_t(x) \right\|^2 LFM(θ)=Et,pt(x)vt(x)ut(x)2

由于直接计算 ( u t ( x ) u_t(x) ut(x) ) 和 ( p t ( x ) p_t(x) pt(x) ) 困难,引入条件流匹配(CFM):

L CFM ( θ ) = E t , q ( x 1 ) , p t ( x ∣ x 1 ) ∥ v t ( x ) − u t ( x ∣ x 1 ) ∥ 2 \mathcal{L}_{\text{CFM}}(\theta) = \mathbb{E}_{t, q(x_1), p_t(x | x_1)} \left\| v_t(x) - u_t(x | x_1) \right\|^2 LCFM(θ)=Et,q(x1),pt(xx1)vt(x)ut(xx1)2

  • ( p t ( x ∣ x 1 ) p_t(x | x_1) pt(xx1) ):条件概率路径,例如 ( N ( x ∣ t x 1 , ( 1 − t ) 2 I ) \mathcal{N}(x | t x_1, (1-t)^2 I) N(xtx1,(1t)2I) )(线性插值)。
  • ( u t ( x ∣ x 1 ) u_t(x | x_1) ut(xx1) ):条件向量场,例如对于高斯路径:
    u t ( x ∣ x 1 ) = x 1 − x 1 − t u_t(x | x_1) = \frac{x_1 - x}{1-t} ut(xx1)=1tx1x

使用方法

  1. 采样 ( t ∼ U [ 0 , 1 ] t \sim \mathcal{U}[0,1] tU[0,1] ),( x 1 ∼ q ( x 1 ) x_1 \sim q(x_1) x1q(x1) ),( x ∼ p t ( x ∣ x 1 ) x \sim p_t(x | x_1) xpt(xx1) )。
  2. 计算 ( u t ( x ∣ x 1 ) u_t(x | x_1) ut(xx1) ),优化 ( v t ( x ; θ ) v_t(x; \theta) vt(x;θ) ) 与其接近。
  3. 生成时,从 ( x 0 ∼ N ( 0 , I ) x_0 \sim \mathcal{N}(0, I) x0N(0,I) ) 开始,解 ODE 到 ( t = 1 t=1 t=1 )。

Flow Matching 和 Diffusion 的联系与区别

联系

  1. 目标相似

    • 两者都旨在从简单分布(通常是 ( N ( 0 , I ) \mathcal{N}(0, I) N(0,I) ))生成复杂数据分布 ( q ( x ) q(x) q(x) )。
    • Diffusion 的逆向过程和 Flow Matching 的流变换都是从噪声到数据的映射。
  2. 概率路径

    • Diffusion 的前向过程 ( q ( x t ∣ x 0 ) q(x_t | x_0) q(xtx0) ) 和 Flow Matching 的条件路径 ( p t ( x ∣ x 1 ) p_t(x | x_1) pt(xx1) ) 都可以设计为高斯形式。例如,Diffusion 的 ( q ( x t ∣ x 0 ) = N ( α t x 0 , ( 1 − α t ) I ) q(x_t | x_0) = \mathcal{N}(\sqrt{\alpha_t} x_0, (1-\alpha_t) I) q(xtx0)=N(αt x0,(1αt)I) ) 和 Flow Matching 的 ( p t ( x ∣ x 1 ) = N ( t x 1 , ( 1 − t ) 2 I ) p_t(x | x_1) = \mathcal{N}(t x_1, (1-t)^2 I) pt(xx1)=N(tx1,(1t)2I) ) 在形式上类似。
  3. 向量场关系

    • Diffusion 的去噪向量场(通过 ( ϵ θ \epsilon_\theta ϵθ ) 间接定义)和 Flow Matching 的 ( u t ( x ∣ x 1 ) u_t(x | x_1) ut(xx1) ) 都描述了从噪声到数据的动态。
    • 论文中提到,Diffusion 可以看作 Flow Matching 的特例,当路径和向量场设计一致时。

区别

方面Diffusion(扩散模型)Flow Matching(流匹配)
时间域离散时间步 ( t = 1 , 2 , … , T t = 1, 2, \dots, T t=1,2,,T )连续时间 ( t ∈ [ 0 , 1 ] t \in [0, 1] t[0,1] )
过程定义加噪(前向)和去噪(逆向)的马尔可夫链单向连续流(ODE)
加噪机制固定高斯噪声,逐步破坏数据不显式加噪,定义条件路径 ( p t ( x ∣ x 1 ) p_t(x | x_1) pt(xx1) )
训练目标预测噪声 ( ϵ \epsilon ϵ ),优化 ELBO回归向量场 ( u t ( x ∣ x 1 ) u_t(x | x_1) ut(xx1) ),无仿真损失
公式( x t = α t x 0 + 1 − α t ϵ x_t = \sqrt{\alpha_t} x_0 + \sqrt{1-\alpha_t} \epsilon xt=αt x0+1αt ϵ )( d d t x t = v t ( x t ) \frac{d}{dt} x_t = v_t(x_t) dtdxt=vt(xt) )
生成方式迭代采样 ( x t − 1 x_{t-1} xt1) 从 ( x T x_T xT ) 到 ( x 0 x_0 x0 )解 ODE 从 ( x 0 x_0 x0 ) 到 ( x 1 x_1 x1 )
计算效率需多步采样(T 较大时慢)单次 ODE 求解(更快,但依赖求解器精度)
1. 时间域与过程
  • Diffusion:离散时间,使用马尔可夫链,分为前向加噪和逆向去噪两阶段。
  • Flow Matching:连续时间,基于 ODE,单向流动,无显式加噪/去噪分离。
2. 加噪与路径
  • Diffusion:前向过程明确加噪,( x t x_t xt ) 是 ( x 0 x_0 x0 ) 和噪声的混合。例如:
    x t = α t x 0 + 1 − α t ϵ x_t = \sqrt{\alpha_t} x_0 + \sqrt{1-\alpha_t} \epsilon xt=αt x0+1αt ϵ
    去噪时预测 ( ϵ \epsilon ϵ )。

  • Flow Matching:不直接加噪,而是定义一个平滑路径 ( p t ( x ∣ x 1 ) p_t(x | x_1) pt(xx1) ),向量场 ( u t ( x ∣ x 1 ) u_t(x | x_1) ut(xx1)) 驱动 ( x x x ) 从噪声移动到 ( x 1 x_1 x1 )。例如:
    p t ( x ∣ x 1 ) = N ( x ∣ t x 1 , ( 1 − t ) 2 I ) p_t(x | x_1) = \mathcal{N}(x | t x_1, (1-t)^2 I) pt(xx1)=N(xtx1,(1t)2I)
    u t ( x ∣ x 1 ) = x 1 − x 1 − t u_t(x | x_1) = \frac{x_1 - x}{1-t} ut(xx1)=1tx1x

3. 训练目标
  • Diffusion:学习去噪,优化噪声预测误差 ( ∥ ϵ − ϵ θ ∥ 2 \| \epsilon - \epsilon_\theta \|^2 ϵϵθ2 )。
  • Flow Matching:直接回归向量场 ( ∥ v t ( x ) − u t ( x ∣ x 1 ) ∥ 2 \| v_t(x) - u_t(x | x_1) \|^2 vt(x)ut(xx1)2 ),无需模拟整个路径。
4. 生成效率
  • Diffusion:需要 ( T T T ) 步迭代采样,计算成本高。
  • Flow Matching:通过 ODE 求解器(例如 Euler 或 Runge-Kutta)一次性生成,效率更高。

如何讲明白?

  1. 共同点切入

    • “Diffusion 和 Flow Matching 都是从噪声生成数据的模型。Diffusion 通过加噪和去噪两步走,Flow Matching 用连续流直接变换。”
  2. 加噪与去噪公式

    • “Diffusion 的加噪是 ( x t = α t x 0 + 1 − α t ϵ x_t = \sqrt{\alpha_t} x_0 + \sqrt{1-\alpha_t} \epsilon xt=αt x0+1αt ϵ ),去噪靠神经网络预测 ( ϵ \epsilon ϵ )。比如,给一张图片加噪 1000 步变成纯噪声,再一步步去噪回来。”
    • “Flow Matching 不加噪,而是定义路径,比如 ( p t ( x ∣ x 1 ) = N ( t x 1 , ( 1 − t ) 2 I ) p_t(x | x_1) = \mathcal{N}(t x_1, (1-t)^2 I) pt(xx1)=N(tx1,(1t)2I) ),然后学一个向量场 ( v t ( x ) v_t(x) vt(x) ) 直接把噪声推到数据。”
  3. 对比举例

    • “假设你要画一幅画。Diffusion 是先把画擦成白噪声,再慢慢描回去;Flow Matching 是直接拿支笔从空白纸上画出轮廓,连续完成。”
  4. 优缺点总结

    • “Diffusion 简单但慢,适合高质量生成;Flow Matching 快且优雅,但需要设计路径和求解 ODE。”

总结

  • Diffusion:离散、加噪去噪、预测噪声,公式直观但采样慢。
  • Flow Matching:连续、向量场驱动、无仿真,公式更抽象但效率高。
  • 联系:两者都可以用高斯路径,Diffusion 的逆向过程可看作 Flow Matching 的离散近似。

后记

2025年4月8日13点58分于上海,在grok 3大模型辅助下完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值