Flow Matching and Diffusion Models

1. 概述

生成模型:

  • 对象建模为向量 xRdx∈\mathbb{R}^d
  • 生成即采样 pdata(x)p_{\mathrm{data}}(x)
  • 数据集 z1,z2,...,zn  pdataz_1,z_2,...,z_n~\sim~p_{\mathrm{data}}
  • 条件生成 pdata(y)p_{\mathrm{data}}(\cdot|y)

目标:
从易于采样的 pinitp_{\mathrm{init}} (通常 N(0,Id)\sim \mathcal{N}(0,I_d) )出发,通过模型转化为 pdatap_{\mathrm{data}}

本文是该note的阅读笔记。

2. 模型

Flow Model

通过ODE建模,

dXt=ut(Xt)dtODEX0=x0initial condition\begin{aligned} \mathrm{d}X_t &= u_t(X_t)\mathrm{d}t & \text{ODE}\\ X_0 &= x_0 & \text{initial condition} \end{aligned}

XX 称作轨迹(trajectory), uu 称作向量场(vector field),而其解 φt\varphi_tRdRd\mathbb{R}^d \to \mathbb{R}^d 的微分同胚,称作流(flow):

dφt(X0)=ut(φt(X0))dt\mathrm{d}\varphi_t(X_0) = u_t(\varphi_t(X_0))\mathrm{d}t

虽然称作flow model,但是神经网络建模的是向量场 utθu^\theta_t 而不是 φ\varphi

Diffusion Model

通过SDE建模,

dXt=ut(Xt)dt+σtdWtSDEX0=x0initial condition\begin{aligned} \mathrm{d}X_t &= u_t(X_t)\mathrm{d}t + \sigma_t\mathrm{d}W_t& \text{SDE}\\ X_0 &= x_0 & \text{initial condition} \end{aligned}

通过Euler-Maruyama method离散求解:

Xt+h=Xt+hut(Xt)+hσtϵt  ,  ϵtN(0,Id)X_{t+h}=X_t+hu_t(X_t)+\sqrt{h}\sigma_t \epsilon_t ~~,~~ \epsilon_t \sim \mathcal{N}(0,I_d)

σ=0\sigma=0 时,变为flow model。

SDE生成模型

  • 神经网络: uθ:Rd×[0,1]Rd,(x,t)utθ(x)u^\theta:\mathbb{R}^d\times [0,1]\to\mathbb{R}^d,(x,t)\mapsto u_t^\theta(x)
  • 固定的扩散系数: σt:[0,1][0,),tσt\sigma_t:[0,1]\to[0,\infty),t\mapsto\sigma_t

采样

  • 初始化: X0pinitX_0\sim p_{\mathrm{init}}
  • 模拟: dXt=utθ(Xt)dt+σtdWt\mathrm{d}X_t=u_t^\theta(X_t)\mathrm{d}t+\sigma_t\mathrm{d}W_t
  • 目标: X1pdataX_1\sim p_{\mathrm{data}}

3. 构建训练目标

为了训练一个神经网络,我们还需要一个损失函数,比如均方误差(mean-squared error):

L(θ)=utθ(x)uttarget(x)training target2\mathcal{L(\theta)=||u^\theta_t(x)-\underbrace{u_t^{\mathrm{target}}(x)}_{\text{training target}}||^2}

因此接下来需要找到描述训练目标的(估计)公式。

3.1. 条件和边缘概率路径(Conditional and Marginal Probability Path)

一个条件(插值)概率路径长这样:

p0(z)=pinit,p1(z)=δz\begin{aligned} & p_0(\cdot|z)= p_{\mathrm{init}}, & p_1(\cdot|z) = \delta_{z} \end{aligned}

换言之,条件概率路径会逐步将单个数据点转化为初始分布。

边缘概率路径:

zpdata,   xpt(z)   xpt   (从pt中采样)pt(x)=pt(xz)pdata(z) ⁣dz   (难以计算)z\sim p_{\mathrm{data}},~~~x\sim p_t(\cdot|z)~~~\Rightarrow x\sim p_t ~~~(从p_t中采样)\\ p_t(x)=\int p_t(x|z)p_{\mathrm{data}}(z)\,\mathop{}\!\mathrm{d}z ~~~(难以计算)

显然:

p0=pinit, p1=pdatap_0=p_{\mathrm{init}},~p_1=p_{\mathrm{data}}

Example: 高斯条件概率路径(Gaussian Conditional Probability Path)

pt(z)N(αtz,βt2Id)      α0=β1=0,α1=β0=1p_t(\cdot|z)\sim\mathcal{N}(\alpha_tz,\beta_t^2I_d)~~~~~~\alpha_0=\beta_1=0,\alpha_1=\beta_0=1

从高斯条件路径中采样:

zpdata,ϵN(0,Id)x=αtz+βtϵptz\sim p_{\mathrm{data}},\,\epsilon\sim\mathcal{N}(0,I_d)\Rightarrow x=\alpha_tz+\beta_t\epsilon\,\sim p_t

3.2. 条件和边缘向量场(Conditional and Marginal Vector Fields)

未完待续

Flow Matching and Diffusion Models

https://psu.monster/post/2025/b712c658cb23

作者

psu

发布于

2025-11-27

更新于

2025-11-27

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×