少步生成·轨迹篇:掰直它或跳过它

这是“少步生成”系列的第一篇。系列想回答:扩散/流模型的采样为什么慢,过去几年里人们用了哪些截然不同的思路把多步生成的成本压低,这些思路之间到底什么关系。

全系列三篇:(一)轨迹篇——在 ODE 轨迹的形状上做文章(本篇)· (二)映射篇——学任意两时刻之间的跳转 · (三)分布篇——只对齐输出分布、不管轨迹。本篇讲针对 ODE 轨迹的两种做法。一种沿着轨迹大步跳跃,以一致性模型 Consistency Model 为代表,轨迹本身的曲折留着不动;另一种把 ODE 掰直,以 Rectified Flow 为代表,路直了少步甚至一步就够。

0. 基础概念

0.1 PF-ODE

给干净数据 \(x_0\),按固定时间表把它逐步糊成噪声:

$$x_t=\alpha_t\,x_0+\sigma_t\,\varepsilon,\qquad \varepsilon\sim\mathcal N(0,I),\quad t\in[0,1].$$

约定 \(t=0\) 干净、\(t=1\) 纯噪声。不同流派只是 \((\alpha_t,\sigma_t)\) 选法不同:方差保持(Variance-Preserving, DDPM),方差爆炸(Variance-Exploding, EDM/Consistency Model\(\alpha_t\equiv1,\sigma_t=t\);VE 习惯直接把噪声标准差当时间用,“纯噪声端”指 \(\sigma\) 涨到远大于数据尺度处,上限并不归一化到 1),线性插值(Flow Matching/Rectified Flow\(\alpha_t=1-t,\sigma_t=t\))。这一步定义了一族边际分布 \(p_t\)

Song 等人的连续时间理论 给出:存在一条确定性常微分方程,它在每个时刻的分布恰好就是这族 \(p_t\)——概率流 ODE (Probability Flow-ODE):

$$\frac{\mathrm dx_t}{\mathrm dt}=v(x_t,t).$$

一个训练好的扩散/流模型,本质就是在拟合这条 PF-ODE(的速度场 \(v\))。采样 = 从 \(x_1\) 数值积分回 \(x_0\);轨迹是弯的,要走很多小步才不失真——这就是多次 NFE(网络前向次数)的来源。

于是在这个视角下的“少步生成”可以总结为,已知教师定义的 PF-ODE,要么少积几步但是还准,要么直接学一个一步到位的映射。后面的方法大多是这两条路的不同实现。

0.2 \(x_0\)\(\varepsilon\)、score、velocity 的关系

读 diffusion 相关论文最容易被绕晕的,是不同方法的“预测目标”可能不一样:有的预测干净图 \(\hat x_0\),有的预测噪声 \(\hat\varepsilon\),有的预测 score \(s=\nabla_x\log p_t\),有的预测速度 \(v\)。其实在给定 \((\alpha_t,\sigma_t)\) 下,这四者两两是仿射变换,信息完全等价。枢纽是 Tweedie 公式。

引理(Tweedie / 去噪器即 score)。\(x_t=\alpha_t x_0+\sigma_t\varepsilon\),记去噪器 \(D(x_t,t):=\mathbb E[x_0\mid x_t]\),则

$$\nabla\log p_t(x_t)=\frac{\alpha_t\,\mathbb E[x_0\mid x_t]-x_t}{\sigma_t^2}.\tag{1}\label{eq:tweedie}$$
证明

前向核是高斯 \(q(x_t\mid x_0)=\mathcal N(x_t;\alpha_t x_0,\sigma_t^2 I)\),边际 \(p_t(x_t)=\int p_{\text{data}}(x_0)\,q(x_t\mid x_0)\,\mathrm dx_0\)

第 1 步(高斯核对 \(x_t\) 求梯度)。

$$\nabla_{x_t} q(x_t\mid x_0)=q(x_t\mid x_0)\cdot\Big(-\frac{x_t-\alpha_t x_0}{\sigma_t^2}\Big).$$

第 2 步(搬进积分,除以 \(p_t\))。 积分与求导交换:

$$\nabla_{x_t} p_t=-\frac{1}{\sigma_t^2}\int p_{\text{data}}(x_0)\,q(x_t\mid x_0)\,(x_t-\alpha_t x_0)\,\mathrm dx_0,$$

两边除以 \(p_t\),左边即 \(\nabla\log p_t\)

$$\nabla\log p_t=-\frac{1}{\sigma_t^2}\int \underbrace{\frac{p_{\text{data}}(x_0)\,q(x_t\mid x_0)}{p_t(x_t)}}_{(\ast)}\,(x_t-\alpha_t x_0)\,\mathrm dx_0.$$

第 3 步(Bayes 认出后验 = 条件期望)。 \((\ast)\) 正是后验 \(p(x_0\mid x_t)\),于是积分是对后验取期望:

$$\nabla\log p_t=-\frac{1}{\sigma_t^2}\big(x_t-\alpha_t\,\mathbb E[x_0\mid x_t]\big)=\frac{\alpha_t\,\mathbb E[x_0\mid x_t]-x_t}{\sigma_t^2}.\qquad\blacksquare$$

有了它,四种“头”随手互换(下式系数只依赖 \((x_t,t)\)):

$$\hat x_0=\frac{x_t-\sigma_t\hat\varepsilon}{\alpha_t},\qquad s=-\frac{\hat\varepsilon}{\sigma_t},\qquad v=\dot\alpha_t\,\hat x_0+\dot\sigma_t\,\hat\varepsilon .\tag{2}\label{eq:heads}$$

三式的来历都是一步:第一式由 \(x_t=\alpha_t\hat x_0+\sigma_t\hat\varepsilon\) 直接移项;第二式由引理对 \(x_t=\alpha_t x_0+\sigma_t\varepsilon\) 取条件期望得 \(\mathbb E[\varepsilon\mid x_t]=\tfrac{x_t-\alpha_t D}{\sigma_t}=-\sigma_t\,s\)(以 \(\hat\varepsilon\)\(\mathbb E[\varepsilon\mid x_t]\),即 \(s=-\hat\varepsilon/\sigma_t\));第三式是条件速度 \(\dot x_t=\dot\alpha_t x_0+\dot\sigma_t\varepsilon\) 取条件期望(边际速度 = 条件速度的条件平均)。

0.3 标准扩散训练目标(DSM)

三篇里会冒出一大堆训练目标——一致性损失、reflow、分布匹配、对抗、矩匹配,各不相同。但底下垫着一条被反复复用的:去噪分数匹配(Denoising Score Matching)。它不是唯一的目标,也不是估 score 的唯一办法,但三篇里凡是某个方法需要“某个分布在各噪声级的 score”,拿到的都是它训出来的:教师模型这么预训练,第二、三篇里在线拟合学生边际的 fake-score 也这么训。

理想的目标是让网络输出的向量场 \(s_\theta\) 贴住真 score:

$$\mathcal J(\theta)=\mathbb E_{t}\,\mathbb E_{x_t\sim p_t}\big\|s_\theta(x_t,t)-\nabla\log p_t(x_t)\big\|^2 .\tag{3}\label{eq:esm}$$

\(\eqref{eq:esm}\) 常被叫作 Fisher 散度,严格说不是。Fisher 散度 \(D_F(p\|q)=\mathbb E_{x\sim p}\|\nabla\log p(x)-\nabla\log q(x)\|^2\) 两边都得是真实密度的梯度,而 \(s_\theta\) 只是个自由向量场,未必可积成密度;只有 \(s_\theta=\nabla\log q_\theta\) 时,\(\eqref{eq:esm}\) 才字面等于 \(D_F(p_t\|q_\theta)\)。它的正名是显式分数匹配,叫 Fisher 散度是就形式而言的简称。

麻烦在于 \(\nabla\log p_t\) 根本算不出来:\(p_t\) 是数据分布卷一个高斯,没有闭式,\(\eqref{eq:esm}\) 里嵌着一个未知量。DSM 把它换成一个只靠样本就能算的等价目标。

命题(显式分数匹配 = 去噪分数匹配 + 常数)。 记前向条件核 \(q(x_t\mid x_0)=\mathcal N(x_t;\alpha_t x_0,\sigma_t^2I)\)。对每个 \(t\)

$$\mathbb E_{x_t\sim p_t}\big\|s_\theta-\nabla\log p_t(x_t)\big\|^2=\mathbb E_{x_0,\varepsilon}\big\|s_\theta-\nabla\log q(x_t\mid x_0)\big\|^2+C(t),$$

其中 \(C(t)\)\(\theta\) 无关。右边的回归靶是逐样本可算的:

$$\nabla_{x_t}\log q(x_t\mid x_0)=-\frac{x_t-\alpha_t x_0}{\sigma_t^2}=-\frac{\varepsilon}{\sigma_t}.$$

采样时 \(\varepsilon\) 是我们自己撒下去的,所以这个靶白给。“去噪”两个字就是从这来的。

证明

固定 \(t\),把平方拆成三项:

$$\mathbb E_{p_t}\|s_\theta-\nabla\log p_t\|^2=\underbrace{\mathbb E_{p_t}\|s_\theta\|^2}_{(\mathrm I)}-2\underbrace{\mathbb E_{p_t}\big[s_\theta^\top\nabla\log p_t\big]}_{(\mathrm{II})}+\underbrace{\mathbb E_{p_t}\|\nabla\log p_t\|^2}_{\text{与 }\theta\text{ 无关}}.$$

第三项不含 \(\theta\),优化时可扔。真正要处理的是交叉项 \((\mathrm{II})\)——未知的 \(\nabla\log p_t\) 就藏在这里。

第 1 步(用 \(\nabla\log p_t=\nabla p_t/p_t\) 把分母约掉)。

$$(\mathrm{II})=\int p_t(x_t)\,s_\theta^\top\frac{\nabla p_t(x_t)}{p_t(x_t)}\,\mathrm dx_t=\int s_\theta^\top\,\nabla p_t(x_t)\,\mathrm dx_t.$$

\(p_t\) 一约掉,剩下的 \(\nabla p_t\) 就能摊回条件核了。

第 2 步(把 \(\nabla p_t\) 摊成条件核的 score)。\(p_t=\int p_{\text{data}}(x_0)\,q(x_t\mid x_0)\,\mathrm dx_0\) 求梯度(交换积分与求导),再把 \(\nabla q=q\,\nabla\log q\) 乘回去:

$$\nabla p_t=\int p_{\text{data}}(x_0)\,\nabla q(x_t\mid x_0)\,\mathrm dx_0=\int p_{\text{data}}(x_0)\,q(x_t\mid x_0)\,\nabla\log q(x_t\mid x_0)\,\mathrm dx_0 .$$

代回第 1 步,右边恰好是对联合分布 \(p_{\text{data}}(x_0)q(x_t\mid x_0)\) 取期望:

$$(\mathrm{II})=\mathbb E_{x_0,\,x_t}\big[s_\theta^\top\nabla\log q(x_t\mid x_0)\big].$$

未知的边际 score 就此换成了已知的条件 score。

第 3 步(配方配回去)。 \((\mathrm I)\) 只依赖 \(x_t\),对 \(p_t\) 取期望与对联合分布取期望是一回事,于是两项可以合到同一个期望下:

$$(\mathrm I)-2(\mathrm{II})=\mathbb E_{x_0,x_t}\big[\|s_\theta\|^2-2\,s_\theta^\top\nabla\log q\big]=\mathbb E_{x_0,x_t}\big\|s_\theta-\nabla\log q\big\|^2-\mathbb E_{x_0,x_t}\big\|\nabla\log q\big\|^2 .$$

补进去的 \(\|\nabla\log q\|^2\) 同样与 \(\theta\) 无关。把两处 \(\theta\)-无关项收进 \(C(t)\),命题得证。\(\qquad\blacksquare\)

顺带得到最优解的形式:右边对每个 \(x_t\) 逐点极小,最优的 \(s_\theta\) 是靶的条件均值 \(\mathbb E[-\varepsilon/\sigma_t\mid x_t]=-\hat\varepsilon/\sigma_t\),与 §0.2\(\eqref{eq:heads}\) 对上。

再从 score 换成回归干净数据。 上面的靶是噪声,实践中更常见的是让网络直接吐 \(\hat x_0\)。把网络按 Tweedie \(\eqref{eq:tweedie}\) 的形状参数化,即令 \(s_\theta:=\dfrac{\alpha_t D_\theta(x_t,t)-x_t}{\sigma_t^2}\),代入残差,并用 \(x_t=\alpha_t x_0+\sigma_t\varepsilon\) 消去 \(x_t\)

$$s_\theta-\nabla\log q=s_\theta+\frac{\varepsilon}{\sigma_t}=\frac{\alpha_t D_\theta-x_t+\sigma_t\varepsilon}{\sigma_t^2}=\frac{\alpha_t}{\sigma_t^2}\big(D_\theta-x_0\big).$$

所以 \(\|s_\theta-\nabla\log q\|^2=\frac{\alpha_t^2}{\sigma_t^4}\|D_\theta-x_0\|^2\):score 回归与 \(x_0\) 回归逐点只差一个正因子。把这个因子连同各噪声级的相对权重一起并进自由权重 \(w(t)\),就是最常见的写法:

$$\mathcal L_{\text{DSM}}(\theta)=\mathbb E_{x_0,\varepsilon,t}\big[w(t)\,\|D_\theta(x_t,t)-x_0\|^2\big],\qquad x_t=\alpha_t x_0+\sigma_t\varepsilon.\tag{4}\label{eq:dsm}$$

\(w(t)\) 之所以能随便挑,是因为最优解是逐 \((x_t,t)\) 定的:只要容量无限、每个 \((x_t,t)\) 都能取到自己的最优,任何正权重都给出同一个 \(D_{\theta^*}\)。有限容量下就不然了,\(w\) 决定哪些噪声级被优先照顾,也影响梯度方差——各家(EDM、v-pred 等)的差别基本都在这个 \(w\) 和参数化上。

平方损失的最优解是条件期望 \(D_{\theta^*}(x_t,t)=\mathbb E[x_0\mid x_t]\),再由 Tweedie \(\eqref{eq:tweedie}\),去噪器与 score 一一对应——所以“拟合 score”与“学去噪”是同一件事,等价地也可回归噪声 \(\mathbb E\|\hat\varepsilon_\theta-\varepsilon\|^2\) 或速度 \(v\),三者仿射等价(§0.2\(\eqref{eq:heads}\))。后文凡说“对某分布 \(q\) 做 DSM/去噪”,都指用 \(q\) 的样本按 \(\eqref{eq:dsm}\) 训一个去噪器/score,其最优即 \(q\) 在各噪声级的 score——第二、三篇里在线拟合学生边际的 fake-score,用的就是这一条。

0.4 三根轴:全系列的坐标系

三篇下来会出现几十个方法,名字五花八门,但彼此的差异基本只落在三个问题上。把这三个问题当成坐标轴,多数论文都能找到自己的格子:

  • 轴 A|匹配什么:轨迹/端点映射 · 边际分布 · 判别器。
  • 轴 B|学什么映射:跳到干净端 \(t\to0\) · 任意两点 \(t\to s\) · 拉直整条路径。
  • 轴 C|要不要教师:蒸馏 vs 从头训 few-step。

本篇整篇都待在轴 A 的“轨迹/端点映射”这一格里,填的是轴 B 的头尾两格——一致性模型学“跳到干净端”,Rectified Flow 学“拉直整条路径”,两者在轴 C 上都各有蒸馏版与从头训版。中间那格“任意两点”是第二篇的主场,轴 A 剩下的“边际分布”与“判别器”两格则留给第三篇

1. 史前史:蒸馏的两个原始动作

2021–2023 这段“史前史”确立了两个至今仍在的核心动作:(i)用教师的 ODE 解当监督、(ii)逐次把步数减半。

1.1 一步回归教师(Knowledge Distillation)

最朴素的做法 KD:离线用教师跑完整 ODE,得到大量噪声-图像对,训一个一步生成器 \(G_\theta\) 回归教师的整条映射 \(\Phi_\phi\)

$$\mathcal L_{\text{KD}}=\mathbb E_{\varepsilon}\big\|G_\theta(\varepsilon)-\Phi_\phi(\varepsilon,1\!\to\!0)\big\|^2.$$

它的理想解就是教师 ODE 映射本身。 教师 PF-ODE 是确定性的,给定 \(\varepsilon\),其解 \(\Phi_\phi(\varepsilon,1\!\to\!0)\) 是一个确定点(不是分布)。平方损失的最优解是条件期望 \(\mathbb E[\,\cdot\mid\varepsilon]\),而条件变量 \(\varepsilon\) 已完全决定目标(条件分布是 Dirac),期望退化为其本身:

$$G_{\theta^*}(\varepsilon)=\mathbb E\big[\Phi_\phi(\varepsilon,1\!\to\!0)\mid\varepsilon\big]=\Phi_\phi(\varepsilon,1\!\to\!0).$$

这既是它的优点(目标明确),也带来三处硬伤:一是让单次前向去逼近一个强非线性映射 \(\Phi\),容量吃紧;二是逼近不到位就发糊;三是要为整个数据集预存教师采样对,极贵。后面的 progressive、consistency、分布匹配,各自都在绕开其中一两点。

1.2 步数减半(Progressive Distillation)

Progressive Distillation 不一次从 \(N\) 步蒸到 1 步,而是每轮让学生 1 步 = 教师 2 步,把步数减半,再把学生当新教师反复减半 \(N\to N/2\to\cdots\to1\)

一步目标的推导。 采样用确定性 DDIM 步:在 \(x_t\) 处用 \(x_0\)-预测 \(\hat x\) 跳到 \(t'\),落点是(沿用 \(\hat\varepsilon=\tfrac{x_t-\alpha_t\hat x}{\sigma_t}\)

$$x_{t'}=\alpha_{t'}\,\hat x+\sigma_{t'}\,\frac{x_t-\alpha_t\hat x}{\sigma_t}.$$

教师连走两小步 \(t\to t'\to t''\)——两步各调用一次网络、各有自己的 \(\hat x\)——得到 \(x_{t''}\)。学生要用一大步 \(t\to t''\) 落在同一个点上,把它等效的 \(x_0\)-预测记为 \(\tilde x\),即要求 \(x_{t''}=\alpha_{t''}\tilde x+\sigma_{t''}\tfrac{x_t-\alpha_t\tilde x}{\sigma_t}\)。此时 \(x_t\)\(x_{t''}\) 都已知,反解 \(\tilde x\)

$$\alpha_{t''}\tilde x-\tfrac{\sigma_{t''}}{\sigma_t}\alpha_t\tilde x=x_{t''}-\tfrac{\sigma_{t''}}{\sigma_t}x_t\ \Longrightarrow\ \boxed{\ \tilde x=\frac{x_{t''}-\tfrac{\sigma_{t''}}{\sigma_t}x_t}{\alpha_{t''}-\tfrac{\sigma_{t''}}{\sigma_t}\alpha_t}\ }$$

学生损失 \(\mathcal L=\mathbb E\,w(t)\|\hat x_\theta(x_t,t)-\tilde x\|^2\)。要点:目标 \(\tilde x\) 是教师两步结果反解出的等效 \(x_0\)-预测,不是真 \(x_0\)——每轮都是“局部两步→一步”,难度可控,是 KD“一步到位”的分而治之版。它还提出少步更稳的 \(\mathbf v\)-prediction(\(v\equiv\alpha_t\varepsilon-\sigma_t x_0\)),缓解 \(\hat x/\hat\varepsilon\) 预测在少步时的数值病态。这个 \(v\)§0.2 那个 \(v=\dot\alpha_t\hat x_0+\dot\sigma_t\hat\varepsilon\) 不是两个定义:取 \(\alpha_t=\cos t,\ \sigma_t=\sin t\)\(\dot\alpha_t=-\sigma_t,\ \dot\sigma_t=\alpha_t\),两式逐项相同——后面 §2.4 的 TrigFlow 正是把这套三角时间表当成规范形。

1.3 先把 CFG 蒸进去(Guided Distillation)

文生图文生视频一般靠 classifier-free guidance(CFG),推理每步要跑条件+无条件两个模型再加权。Guided Distillation 先把 CFG 融合进单模型。写 \(\hat x^{\text{cfg}}=\hat x_{\text{uncond}}+w(\hat x_{\text{cond}}-\hat x_{\text{uncond}})\),它等价于在 score 上叠加放大的条件对数比:

$$s^{\text{cfg}}=s_{\text{uncond}}+w\big(s_{\text{cond}}-s_{\text{uncond}}\big)=s_{\text{uncond}}+w\,\nabla_{x_t}\log p_t(c\mid x_t),$$

末项用了 Bayes。

点开看:为什么在 $\hat x$ 上加权和在 score 上加权是同一件事

§0.2 的换算环里,\(\hat x_0\leftrightarrow s\) 是系数只依赖 \(t\) 的仿射映射 \(A_t(\cdot)\)\(s=-\hat\varepsilon/\sigma_t\)\(\hat x_0=(x_t-\sigma_t\hat\varepsilon)/\alpha_t\) 都是一次式)。而 CFG 不管写在哪个头上,都是同一组权重的线性组合,且权重和为 1(\(\hat x^{\text{cfg}}=(1-w)\hat x_{\text{uncond}}+w\,\hat x_{\text{cond}}\))。权重和为 1 时,仿射映射与线性组合可交换:

$$A_t\Big(\sum_i w_i h_i\Big)=\sum_i w_i A_t(h_i),\qquad \sum_i w_i=1,$$

因为仿射的常数项 \(\sum_i w_i\cdot\text{const}=\text{const}\) 被保住了。所以“先在 score 上按 \(w\) 加权、再换成 \(\hat x\)”与“先各自换成 \(\hat x\)、再按同样的 \(w\) 加权”逐点给出同一个 \(\hat x^{\text{cfg}}\)——在 \(\hat x\)-空间组合并蒸馏,与在 score-空间做,数学上完全等价。

于是分两阶段。阶段一(把 CFG 蒸进单模型):训一个以引导强度 \(w\) 为条件的单模型 \(\hat x^{(1)}_\phi(x_t,t,w)\) 去匹配上式的 CFG 组合输出,把“两模型加权”压成一次前向:

$$\mathcal L^{(1)}=\mathbb E_{x_t,\,t,\,w\sim p(w)}\big\|\hat x^{(1)}_\phi(x_t,t,w)-\hat x^{\text{cfg}}(x_t,t,w)\big\|^2,$$

\(w\) 从一个区间随机采(用 Fourier 嵌入喂进网络),使单个网络覆盖整段引导强度。阶段二:再对这个 \(w\)-条件模型做 §1.2 的步数减半。这个“先消解推理时的额外成本(CFG)、再压步数”的两阶段后来被压平:LCM 把它并成一次做(§2.3)。GFT 则换掉了蒸馏这条路——用单一损失直接训出不需要引导的模型,既能微调已有的 CFG 模型、也能从头训,不再依赖预训练的 CFG 教师。

2. 跳过轨迹:一致性模型

一致性模型的共同信念是,PF-ODE 同一条轨迹上的所有点,都应被映到同一个终点。把这个 self-consistency 直接当训练目标,就能一步到位——相当于把 Progressive“步数减半”推到极限:一步跨到底。

2.1 Consistency Models:自一致性一步到底

Consistency Models(Song et al., 2023)在 VE 路径 \(x_t=x_0+t\varepsilon\) 下,PF-ODE 为 \(\tfrac{\mathrm dx_t}{\mathrm dt}=\tfrac{x_t-D(x_t,t)}{t}\)。定义一致性函数 \(f(x_t,t)\) = 把 \(x_t\) 沿 PF-ODE 映回这条轨迹的干净端 \(x_{t_{\min}}\)\(t_{\min}\) 是接近 0 的小正时刻,避开 \(1/t\) 奇点)。它满足:

  • 自一致性:同一轨迹上 \(f(x_t,t)=f(x_{t'},t')\)
  • 边界条件\(f(x_{t_{\min}},t_{\min})=x_{t_{\min}}\)

参数化。\(f_\theta(x,t)=c_{\text{skip}}(t)\,x+c_{\text{out}}(t)\,F_\theta(x,t)\),只要 \(c_{\text{skip}}(t_{\min})=1,\ c_{\text{out}}(t_{\min})=0\),边界条件就自动成立,优化变无约束。这里的 \(F_\theta\) 是要训练的神经网络,本身无先验语义——它的含义由“外壳 + 训练目标”诱导。

点开看:EDM 的那组 $c$ 是怎么解出来的

这组 \(c\) 就是 EDM 的预处理(preconditioning),CM 借它当外壳(末尾还要做一点平移)。正文那句 \(f_\theta=c_{\text{skip}}x+c_{\text{out}}F_\theta(x,t)\) 是简写,EDM 的完整外壳有四个系数:

$$f_\theta(x,t)=c_{\text{skip}}(t)\,x+c_{\text{out}}(t)\,F_\theta\big(c_{\text{in}}(t)\,x,\ c_{\text{noise}}(t)\big),$$

裸网络 \(F_\theta\) 的输入还要先乘 \(c_{\text{in}}\)、时间用 \(c_{\text{noise}}\) 变换,正文为聚焦边界条件把这两个藏进了 \(F_\theta(x,t)\) 的写法里。设计原则只有一条:让网络的输入与回归目标在每个噪声级都是单位方差(否则不同 \(t\) 的尺度差几个数量级、训不稳)。schedule 用 VE(\(\alpha\equiv1\),噪声标准差 \(\sigma\) 当“时间”,数据标准差 \(\sigma_d\),最后取 \(\sigma=t\))。把 \(f_\theta\) 当作回归 \(x_0\) 的去噪器,三条要求就依次把系数定死:输入单位方差给出 \(c_{\text{in}}\),目标单位方差给出 \(c_{\text{out}}\)\(c_{\text{skip}}\) 的关系,再让 \(c_{\text{out}}\) 最小定出 \(c_{\text{skip}}\)

(1)\(c_{\text{in}}\):输入单位方差。 喂进网络的是 \(c_{\text{in}}x\)。VE 下 \(x=x_0+\sigma z\)\(x_0,z\) 独立),\(\mathrm{Var}[x]=\sigma_d^2+\sigma^2\),令 \(\mathrm{Var}[c_{\text{in}}x]=1\Rightarrow c_{\text{in}}=1/\sqrt{\sigma_d^2+\sigma^2}\)

(2)\(c_{\text{out}}\):目标单位方差。 把去噪损失写成对裸网络的回归 \(\|f_\theta-x_0\|^2=c_{\text{out}}^2\|F_\theta-F_{\text{tgt}}\|^2\)\(F_{\text{tgt}}=\tfrac{(1-c_{\text{skip}})x_0-c_{\text{skip}}\sigma z}{c_{\text{out}}}\),令 \(\mathrm{Var}[F_{\text{tgt}}]=1\)\(x_0,z\) 独立):

$$c_{\text{out}}^2=(1-c_{\text{skip}})^2\sigma_d^2+c_{\text{skip}}^2\sigma^2.\tag{$\star$}$$

(3)\(c_{\text{skip}}\):选它最小化 \(c_{\text{out}}\)(少放大网络误差)。\((\star)\) 求导置零:\(-2(1{-}c_{\text{skip}})\sigma_d^2+2c_{\text{skip}}\sigma^2=0\Rightarrow c_{\text{skip}}=\tfrac{\sigma_d^2}{\sigma^2+\sigma_d^2}\)

(4)回代 \((\star)\) \(c_{\text{out}}=\tfrac{\sigma\sigma_d}{\sqrt{\sigma^2+\sigma_d^2}}\)。取 \(\sigma=t\) 就是 EDM 那组 \(c\)。(剩下的 \(c_{\text{noise}}\) 是经验时间变换,如 \(\tfrac14\ln\sigma\),不由方差原则定。)

(5)CM 还要平移一下。 EDM 的 \(c_{\text{skip}}=\tfrac{\sigma_d^2}{t^2+\sigma_d^2}\)\(c_{\text{out}}=\tfrac{\sigma_d t}{\sqrt{\sigma_d^2+t^2}}\) 只在 \(t=0\) 处给出 \(c_{\text{skip}}=1,c_{\text{out}}=0\),而一致性函数要求边界在 \(t_{\min}=\epsilon>0\) 处严格成立,照抄就差一点。CM 的办法是把分子里的 \(t\) 换成 \(t-\epsilon\)\(c_{\text{out}}\) 的分母仍用 \(t\)):

$$c_{\text{skip}}(t)=\frac{\sigma_d^2}{(t-\epsilon)^2+\sigma_d^2},\qquad c_{\text{out}}(t)=\frac{\sigma_d\,(t-\epsilon)}{\sqrt{\sigma_d^2+t^2}},$$

于是 \(c_{\text{skip}}(\epsilon)=1,\ c_{\text{out}}(\epsilon)=0\),边界条件 \(f(x_\epsilon,\epsilon)=x_\epsilon\) 严格成立;而 \(t\gg\epsilon\) 时它与 EDM 原式几乎一样,单位方差带来的好处仍在。

一致性蒸馏(CD,需教师)。 在相邻两噪声级 \(t_{n+1}>t_n\) 上,用教师 score 走一小步 ODE 从 \(x_{t_{n+1}}\)\(\hat x_{t_n}\),再要求两端一致:

$$\mathcal L_{\text{CD}}=\mathbb E\big[\lambda(t_n)\,d\big(f_\theta(x_{t_{n+1}},t_{n+1}),\ f_{\theta^-}(\hat x_{t_n},t_n)\big)\big],\tag{5}\label{eq:cd}$$

\(\theta^-\)\(\theta\) 的 EMA(目标网络,stop-grad,防塌缩)。为什么成立:若 \(f_\theta\) 在所有相邻级上都自一致,由归纳它把整条轨迹映到同一点;而边界已焊死,这个公共终点就是轨迹的干净端。误差也能量化:若教师那一小步用的是 \(p\) 阶 ODE 求解器、\(f_\theta\)\(x\) 一致 Lipschitz、且损失被压到零,则 \(f_\theta\) 与真一致性函数的偏差是 \(O((\Delta t)^p)\)——节点越密、求解器阶数越高,学到的越准。不要教师的版本叫一致性训练(CT),用无偏的 \(-\varepsilon/t\) 替代教师 score。

2.2 让“从头训一致性”变稳变便宜:iCT / ECT / SCT

从头 CT 极不稳、极贵。三项工作依次改进:

  • iCT(Song & Dhariwal, 2023):去掉 EMA 目标网络、改用 Pseudo-Huber 损失 \(d(a,b)=\sqrt{\|a-b\|^2+c^2}-c\)(小残差像 \(\ell_2\) 稳、大残差像 \(\ell_1\) 抗离群)、重设噪声级与权重,使从头 CT 首次追平 CD。
  • ECT(Easy Consistency Tuning, Geng et al., 2024):核心洞察——扩散模型就是“\(\Delta t=t\) 的松弛一致性模型”。把一致性损失的“上一节点”一路松弛到 \(t-\Delta t=0\),由边界条件 \(f_{\theta^-}(x_0,0)=x_0\),损失退化为 \(\mathbb E\,w(t)\,d(f_\theta(x_t,t),x_0)\),正是标准去噪训练 \(\eqref{eq:dsm}\)。所以 ECT 从预训练扩散初始化,训练中逐步把 \(\Delta t\to0\) 收紧到连续一致性,把成本从“数百 GPU 时”降到“单张 A100 一小时”。
  • SCT(Stable Consistency Tuning, 2024):把去噪建成 MDP,一致性训练视作 TD(0) 自举(\(f_\theta(x_t,t)\leftarrow f_{\theta^-}(\hat x_{t-\Delta t},t-\Delta t)\) 就是价值自举的确定性版),借 score identity 做方差缩减。

2.3 潜空间与分段一致性:LCM / PCM

LCM(Latent Consistency Models, Luo et al., 2023):把 CD \(\eqref{eq:cd}\) 搬到 Stable Diffusion 潜空间,并把 CFG 增广进一致性蒸馏。做法是把引导强度 \(w\) 当作一致性函数的额外条件,教师那一小步 ODE 改由 §1.3 的 CFG 组合速度驱动,把这一步的解算子记为 \(\hat\Phi(x_{t_{n+1}},t_{n+1}\!\to\!t_n;w)\),它给出目标端点:

$$\mathcal L_{\text{LCM}}=\mathbb E_{w,n}\Big[d\big(f_\theta(x_{t_{n+1}},t_{n+1},w),\ f_{\theta^-}(\hat\Phi(x_{t_{n+1}},t_{n+1}\!\to\!t_n;w),t_n,w)\big)\Big],$$

于是单网一次前向即得任意 \(w\) 下少步结果——把 §1.3 的两阶段合成一步。LCM-LoRA 做成即插加速器,成社区标配。

PCM(Phased Consistency Model, Wang et al., 2024):CM 单段一致性在长轨迹上误差累积、且对 CFG 敏感。PCM 把 \([0,1]\) 切成 \(K\) 个相位 \([s_k,s_{k+1}]\),每相位内独立做 CD、并在相位左端点焊死边界:

$$\mathcal L_{\text{PCM}}=\sum_{k=0}^{K-1}\mathbb E_{s_k\le t<t'\le s_{k+1}}\,d\big(f^{(k)}_\theta(x_{t'},t'),\ f^{(k)}_{\theta^-}(\hat x_t,t)\big),$$

其中 \(\hat x_t\) 是教师从 \(x_{t'}\) 解到 \(t\) 的结果,与 \(\eqref{eq:cd}\) 里的那一小步同理,只是被限制在相位内。这样支持确定性 \(K\)-步采样(逐相位跳)、缓解累积。它和 §3.2 的 PeRFlow 是“一致性/直线化”两支下的同一分治思想。

2.4 连续时间 + TrigFlow:sCM

离散一致性有 \(\Delta t\) 超参与离散化误差;连续时间(直接对 \(t\) 求导)理论更干净,但历来极不稳。sCM(Lu & Song, 2024)把它做稳、做大。

TrigFlow 参数化。\(x_t=\cos t\,x_0+\sin t\,\sigma_d\varepsilon\),它把 EDM 与 Flow Matching 统一成同一套三角参数化。这里的 \(t\) 是角度,干净端在 \(t=0\)、纯噪声端在 \(t=\pi/2\),与全文 \(t\in[0,1]\) 的约定只差一次时间重参数化。对 \(x_t\) 求导得条件速度 \(\dot x_t=-\sin t\,x_0+\cos t\,\sigma_d\varepsilon\),PF-ODE 写成 \(\tfrac{\mathrm dx_t}{\mathrm dt}=\sigma_d F(x_t,t)\);一致性参数化取

$$f_\theta(x_t,t)=\underbrace{\cos t}_{c_{\text{skip}}}\,x_t-\underbrace{\sigma_d\sin t}_{-c_{\text{out}}}\,F_\theta(x_t,t),\tag{6}\label{eq:trigflow}$$

\(t=0\)\(\cos0=1,\sin0=0\Rightarrow f_\theta(x_0,0)=x_0\),边界自动焊死。为什么说它“统一”了 EDM 与 FM:任何高斯路径的 \(\mathrm{Var}[x_t]=\alpha_t^2\sigma_d^2+\sigma_t^2\),按 EDM 的方差齐次原则缩放 \(\sigma_d/\sqrt{\alpha_t^2\sigma_d^2+\sigma_t^2}\) 之后,都被逼到同一个半径为 \(\sigma_d\) 的圆上。TrigFlow 本身就满足 \(\mathrm{Var}[x_t]\equiv\sigma_d^2\),不必再缩放。圆上只剩角度一个自由度,自然写成 \(\cos t/\sin t\);而 \(\tfrac{\mathrm dx_t}{\mathrm dt}=\sigma_d F_\theta\) 又是个速度场,回归目标 \(\sigma_d F_\theta\to\cos t\,\sigma_d\varepsilon-\sin t\,x_0=\dot x_t\) 正是 v-prediction。所以 TrigFlow 是 EDM 单位方差原则强迫出的规范形,同时是 FM 的速度形。

从离散 CD 取 \(\Delta t\to0\) 推出连续目标。 离散 CD 比较相邻两节点 \(f_\theta(x_{t+\Delta t},t{+}\Delta t)\)\(f_{\theta^-}(x_t,t)\)。沿教师 PF-ODE 一阶 Taylor,离散差在 \(\Delta t\to0\) 下正比于沿轨迹全导数 \(\tfrac{\mathrm df}{\mathrm dt}=\partial_t f+\tfrac{\mathrm dx_t}{\mathrm dt}^{\!\top}\nabla_x f\),一致性的不动点即“让全导数 \(\tfrac{\mathrm df}{\mathrm dt}=0\)”。但不能直接最小化 \(\|\tfrac{\mathrm df}{\mathrm dt}\|^2\)(数值极不稳)。下面三步把它化成可稳定反传的回归目标。

第 1 步:\(\Delta t\to0\) 的梯度极限。\(d=\ell_2\),带权离散损失 \(L^{\Delta t}=\mathbb E\,w(t)\|f_\theta(x_{t+\Delta t},t{+}\Delta t)-f_{\theta^-}(x_t,t)\|^2\)。记 Jacobian \(J_{\Delta t}=\nabla_\theta f_\theta(x_{t+\Delta t},t{+}\Delta t)\)、残差 \(r_{\Delta t}=f_\theta(x_{t+\Delta t},t{+}\Delta t)-f_{\theta^-}(x_t,t)\),则 \(\nabla_\theta L^{\Delta t}=\mathbb E[2w(t)J_{\Delta t}^\top r_{\Delta t}]\)。把 \(f_\theta\) 沿轨迹 Taylor 展开:

$$r_{\Delta t}=\underbrace{[f_\theta(x_t,t)-f_{\theta^-}(x_t,t)]}_{=\,0}+\Delta t\,\frac{\mathrm df_{\theta^-}}{\mathrm dt}+O(\Delta t^2)=\Delta t\,\frac{\mathrm df_{\theta^-}}{\mathrm dt}+O(\Delta t^2).$$

零阶项因同参数、同自变量逐点相等而严格为 0(这正是 stop-grad 让残差降为 \(O(\Delta t)\)、能取连续极限的根本原因)。Jacobian 同样在 \(t\) 处连续,\(J_{\Delta t}=J_0+O(\Delta t)\),其中 \(J_0=\nabla_\theta f_\theta(x_t,t)\)。代回梯度并按阶合并:

$$\nabla_\theta L^{\Delta t}=\mathbb E\big[2w(t)(J_0+O(\Delta t))^\top\big(\Delta t\,\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}+O(\Delta t^2)\big)\big]=2\Delta t\,\mathbb E\big[w(t)\,J_0^\top\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}\big]+O(\Delta t^2).$$

除以 \(2\Delta t\)、令 \(\Delta t\to0\),只剩首项 \(\mathbb E[w(t)\,J_0^\top\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}]\)。最后收回 \(\nabla_\theta\):因 stop-grad 使 \(\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}\) 是与 \(\theta\) 无关的常向量,故 \(J_0^\top\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}=(\nabla_\theta f_\theta)^\top\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}=\nabla_\theta\big[f_\theta^\top\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}\big]\),于是

$$\boxed{\ \lim_{\Delta t\to0}\frac1{2\Delta t}\nabla_\theta L^{\Delta t}=\nabla_\theta\,\mathbb E_{x_t,t}\Big[w(t)\,f_\theta^\top(x_t,t)\,\frac{\mathrm d f_{\theta^-}(x_t,t)}{\mathrm dt}\Big]\ }$$

直觉:训练信号不是“缩小相邻两点差”,而是把 \(f_\theta\) 推向抵消其沿轨迹切向量的方向——沿 ODE 切线走无穷小步以维持一致。

第 2 步:换到 \(F_\theta\) 因参数化 \(\eqref{eq:trigflow}\)\(f_\theta=\cos t\,x_t-\sigma_d\sin t\,F_\theta\)\(\cos t\,x_t\)\(\theta\) 无关,\(\nabla_\theta f_\theta=-\sigma_d\sin t\,\nabla_\theta F_\theta\),梯度化为 \(\nabla_\theta\,\mathbb E[-w(t)\sigma_d\sin t\,F_\theta^\top\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}]\)

第 3 步:把梯度还原成等价 MSE。 关键恒等式:对任意与 \(\theta\) 无关的 \(y\)

$$\nabla_\theta\mathbb E[F_\theta^\top y]=\tfrac12\nabla_\theta\,\mathbb E\big\|F_\theta-\mathrm{sg}(F_\theta-y)\big\|^2=\tfrac12\nabla_\theta\,\mathbb E\|F_\theta-F_{\theta^-}+y\|^2.$$

证明只需展开右端:\(\tfrac12\nabla_\theta\|F_\theta-F_{\theta^-}+y\|^2=(F_\theta-F_{\theta^-}+y)^\top\nabla_\theta F_\theta\);因 \(F_{\theta^-}=\mathrm{sg}(F_\theta)\) 数值上与网络逐点相等,\((F_\theta-F_{\theta^-})^\top\nabla_\theta F_\theta\equiv0\),只剩 \(y^\top\nabla_\theta F_\theta=\nabla_\theta\mathbb E[F_\theta^\top y]\)(用回 \(y\)\(\theta\) 无关)。取 \(y=-w(t)\sigma_d\sin t\,\tfrac{\mathrm df_{\theta^-}}{\mathrm dt}\),得到可直接反传的连续时间一致性目标:

$$\mathcal L_{\text{sCM}}=\mathbb E_{x_t,t}\Big[\frac{e^{w_\phi(t)}}{D}\big\|F_\theta-F_{\theta^-}-\cos t\cdot\tfrac{\mathrm df_{\theta^-}/\mathrm dt}{\|\mathrm df_{\theta^-}/\mathrm dt\|+c}\big\|^2-w_\phi(t)\Big],\tag{7}\label{eq:scm}$$

其中系数 \(\cos t\) 来自把先验权 \(w(t)=\tfrac1{\sigma_d\tan t}\) 折进 \(\sigma_d\sin t\);tangent 用 \(\tfrac{\mathrm df/\mathrm dt}{\|\mathrm df/\mathrm dt\|+c}\) 归一化(\(c{=}0.1\))压掉主要方差;\(e^{w_\phi(t)}/D\) 是随网络一起学的自适应权、末项 \(-w_\phi(t)\) 是其正则。切向量沿教师 ODE 用一次前向自动微分(JVP)算出。结果:连续 CM 扩到 1.5B 参数,ImageNet-512 上 2 步 FID 1.88,与当时最好的多步扩散模型的 FID 差距压到 10% 以内。下一节的 rCM 和第二篇MeanFlow 都直接建在它上面。

2.5 补 sCM 的短板:rCM

sCM \(\eqref{eq:scm}\) 在教师轨迹上回归,属前向散度/mode-covering,倾向“覆盖”、易发糊。rCM在 sCM 上叠加一个反向散度 score 蒸馏项(mode-seeking,即 DMD/Diff-Instruct 式的 score 差,见第三篇):

$$\nabla_\theta\mathcal L_{\text{rCM}}=\underbrace{\nabla_\theta\mathcal L_{\text{sCM}}}_{\text{覆盖}}+\lambda\,\underbrace{\mathbb E_t\big[w(t)(s_\psi-s_\phi)^\top\tfrac{\partial x_t}{\partial\theta}\big]}_{\text{寻峰}},$$

写成梯度是因为寻峰项本身没有显式的损失函数,只有解析梯度(下面的实现细节会给出实际反传的代理损失)。一项“贴教师轨迹保覆盖”、一项“往数据高密度区收保真”。

实现细节:上式是寻峰项的解析梯度;真正训练时并不直接写它,而是用一个可自动微分的 DMD2 式代理损失(在去噪器/\(x_0\) 空间,带自适应归一化)

$$\mathcal L_{\text{DMD}}=\mathbb E\Big[\big\|x_0-\mathrm{sg}\big[x_0-\tfrac{f_{\text{fake}}-f_{\text{teacher}}}{\mathrm{mean}(\mathrm{abs}(x_0-f_{\text{teacher}}))}\big]\big\|_2^2\Big],\quad \lambda{=}0.01.$$

\(x_0{=}G_\theta(z)\) 自动微分,其梯度 \(=2g^\top\partial x_0/\partial\theta\),经 Tweedie 换算(\(f_{\text{fake}}{-}f_{\text{teacher}}{=}\tfrac{\sigma_t^2}{\alpha_t}(s_\psi{-}s_\phi)\)\(\partial x_t/\partial\theta{=}\alpha_t\partial x_0/\partial\theta\))正是上式,其中我们的 \(w(t){=}\tfrac{2\sigma_t^2}{\alpha_t^2\cdot\text{norm}}\) 内含那个归一化。两者是同一目标的梯度式与实现式,不是两个损失(细节见第三篇 DMD)。

视频落地锚点:rCM 把连续时间一致性蒸馏推到 Wan2.1-14B 这样的 10B+ 视频模型,1–4 步、15×–50× 加速。

过渡到第二篇 一致性模型只学“跳到干净端 \(t\to0\)”。但为什么只盯终点?如果学的是“从任意 \(t\) 跳到任意 \(s\)”的一族映射,就能自由多步精修——这就是 CTM 打开的 flow-map / 平均速度方向,第二篇的主角。

3. 掰直轨迹:Rectified Flow

一致性支接受“轨迹是弯的”,去学“任意点→终点”的跳跃。直线化支换个思路:如果能把 PF-ODE 轨迹本身掰直成直线,一步 Euler 就精确了——直线上速度恒定,\(x_0=x_1-v\) 无离散化误差。Rectified Flow(Liu et al., 2022)给出了掰直的机制:reflow。

3.1 线性插值 + reflow

取耦合 \((x_0,\varepsilon)\)(初始独立采),线性插值 \(x_t=(1-t)x_0+t\varepsilon\),则条件速度恒定 \(\dot x_t=\varepsilon-x_0\)(单条条件路径本就是直线)。用平方损失回归条件速度,最优解是条件平均 \(v^*(x_t,t)=\mathbb E[\varepsilon-x_0\mid x_t]\)

关键张力:条件路径是直线,但边际速度是条件速度的条件平均——不同 \((x_0,\varepsilon)\) 的直线在中间交叉,平均后 \(v^*\) 定义的 ODE 轨迹是弯的。这就是为什么一次 RF 还不能一步生成。掰直靠三条定理,缺一不可。

定理 1(边际保持)。 记插值边际 \(p_t=\mathrm{Law}(x_t)\)。ODE \(\dot z_t=v^*(z_t,t)\)\(z_1\sim p_1\) 初始化,则 \(\mathrm{Law}(z_t)=p_t\ \forall t\)

点开看证明(连续性方程)

对任意光滑速降测试函数 \(\varphi\)

$$\frac{\mathrm d}{\mathrm dt}\mathbb E[\varphi(x_t)]=\mathbb E[\nabla\varphi(x_t)^\top\dot x_t]=\mathbb E[\nabla\varphi(x_t)^\top\mathbb E[\dot x_t\mid x_t]]=\int p_t\,\nabla\varphi^\top v^*\,\mathrm dx,$$

第二个等号用塔性质。分部积分右端 \(=-\int\varphi\,\nabla\!\cdot\!(p_t v^*)\,\mathrm dx\);另一方面它 \(=\int\varphi\,\partial_t p_t\,\mathrm dx\)。对任意 \(\varphi\) 相等,故 \(\partial_t p_t+\nabla\!\cdot\!(p_t v^*)=0\)(连续性方程)。ODE \(\dot z_t=v^*\) 诱导的密度满足同一方程、初值同为 \(p_1\),由唯一性 \(\mathrm{Law}(z_t)=p_t\)\(\blacksquare\)

于是 \(z_0\sim p_{\text{data}}\)——RF 是合格的生成模型。

reflow(掰直的核心操作)。 用当前 \(v^*\) 定义确定性映射:采 \(z_1=\varepsilon\),沿 ODE 积到 \(z_0\),得到由流决定的确定性耦合 \((z_0,z_1)\);用它替换原独立耦合,重跑一遍 RF,得 \(v^{(1)}\),可反复迭代。

定理 2(reflow 不增任何凸传输代价)。 对任意凸 \(c\)\(\mathbb E[c(Z_1-Z_0)]\le\mathbb E[c(\varepsilon-x_0)]\)

点开看证明(两次 Jensen)

沿 ODE 有 \(Z_1-Z_0=\int_0^1 v^*(Z_t,t)\,\mathrm dt\)\(\int_0^1(\cdot)\mathrm dt\)\([0,1]\) 上的平均,对凸 \(c\) 用 Jensen:\(c(Z_1-Z_0)\le\int_0^1 c(v^*(Z_t,t))\,\mathrm dt\)。取期望,用定理 1(\(Z_t\) 与插值 \(x_t\) 同边际)换测度:

$$\mathbb E[c(Z_1-Z_0)]\le\int_0^1\mathbb E\,c(\mathbb E[\varepsilon-x_0\mid x_t])\,\mathrm dt.$$

对内层条件期望再用一次 Jensen,取塔性质:\(\le\int_0^1\mathbb E\,c(\varepsilon-x_0)\,\mathrm dt=\mathbb E\,c(\varepsilon-x_0)\)\(\blacksquare\)

含义:reflow 只会让端点位移的凸代价不增——直觉上把交叉的直线“解交叉、重配对”。

定理 3(直线 ⇒ 一步 Euler 精确)。 定义非直度 \(\mathcal S(Z)=\int_0^1\mathbb E\|(Z_1-Z_0)-v^*(Z_t,t)\|^2\,\mathrm dt\ge0\)。若 \(\mathcal S=0\),则沿几乎所有轨迹 \(v^*(Z_t,t)\equiv Z_1-Z_0\)(常向量),\(Z_t\) 是直线,单步 Euler \(\hat Z_0=Z_1-v^*(Z_1,1)\) 无误差。reflow 迭代会把 \(\mathcal S\) 压小,所以若干次之后一步生成才变得可行;不过“逐次单调下降”是经验观察,并没有证明。

三定理的角色:定理 1 保证“RF 是对的生成模型”,定理 2 保证“reflow 越掰越省”,定理 3 保证“掰到直就能一步”。三者合起来才是“直线化 ⇒ 少步”的完整逻辑。

3.2 把 reflow 用到大模型:InstaFlow / PeRFlow

InstaFlow(2023):SD → 做 2 次 reflow 把文生图 ODE 掰直得直化流 \(v^{(2)}\) → 再对它做一步蒸馏:

$$\mathcal L_{\text{InstaFlow}}=\mathbb E_\varepsilon\,\mathrm{LPIPS}\big(G_\theta(\varepsilon),\ \Phi_{v^{(2)}}(\varepsilon,1\!\to\!0)\big).$$

为什么必须先 reflow 再蒸馏:未 reflow 的 SD 轨迹强弯(非直度 \(\mathcal S\) 大),一步学生根本回归不动(§1.1 KD 的毛病);reflow 把 \(\mathcal S\) 压小、目标近乎线性,蒸馏才可行。由此得到首个 0.09s 出图的一步 SD。

PeRFlow(Piecewise Rectified Flow, 2024):全程掰直很难(高噪端曲率大),于是分段——把 \([0,1]\) 切成 \(K\) 个窗口 \([s_k,s_{k+1}]\),用教师 ODE 从两端点产生确定性耦合 \((x_{s_k},x_{s_{k+1}})\),窗内做线性插值 + 常速度回归:

$$\mathcal L_{\text{PeRFlow}}=\sum_k\mathbb E\int_{s_k}^{s_{k+1}}\Big\|v_\theta(x_t,t)-\frac{x_{s_{k+1}}-x_{s_k}}{s_{k+1}-s_k}\Big\|^2\mathrm dt,\qquad x_t=\tfrac{s_{k+1}-t}{s_{k+1}-s_k}x_{s_k}+\tfrac{t-s_k}{s_{k+1}-s_k}x_{s_{k+1}}.$$

注意仍是同一个网络吃全局时间 \(t\),落在哪个窗口由 \(t\) 自己决定,不必每段配一个网络。整条轨迹变成 \(K\) 段折线,推理 = \(K\) 步(每段一步 Euler)。训练更快、质量-步数平滑、可做即插 LoRA。

3.3 “直线”不是必需:Rectified Diffusion

Rectified Diffusion(2024)把本章开头那个“掰直才能一步”的条件换掉了:让一步跳精确的不是“轨迹几何上直”,而是“网络的预测沿轨迹恒定”——\(\hat x_0\)(等价地 \(\hat\varepsilon\))不随 \(t\) 变,论文称之为一阶 ODE。预测一恒定,整条轨迹就处处满足 \(x_t=\alpha_t\hat x_0+\sigma_t\hat\varepsilon\),照这个仿射式一步跳到任意时刻都是精确的,也就是一步 DDIM。

但这样的路径不见得是直的。预测恒定时速度为 \(\dot x_t=\dot\alpha_t\hat x_0+\dot\sigma_t\hat\varepsilon\),它恒定的充要条件是 \((\alpha_t,\sigma_t)\)\(t\) 仿射——FM 的 \((1-t,\,t)\) 与 VE/EDM 的 \((1,\,t)\) 都满足,此时路径是匀速直线,“预测恒定”等于“速度恒定”、一步 DDIM 也就是一步 Euler;而 DDPM、Sub-VP 的 \((\alpha_t,\sigma_t)\) 不是一次函数,一阶路径天然是弯的。而且弯不弯还取决于看的坐标:把 \(x_t\) 除以 \(\sigma_t\)\(\tfrac{\alpha_t}{\sigma_t}\hat x_0+\hat\varepsilon\),任何一阶路径都被这一步缩放拉成直线。所以几何上的直是特例,不是必需。

据此它把 reflow 式重配对推广到任意预训练扩散模型(不必先换成线性插值):用教师 ODE 预先配好噪声-样本对,再重训到预测沿轨迹恒定,在 SD v1.5 上以更低成本超过 InstaFlow。

3.4 小模型与轨迹蒸馏:SlimFlow / TraFlow

SlimFlow(2024):面向小而快的一步模型,提出 annealing reflow——重配对时用退火系数 \(\beta\) 在“独立耦合”与“当前流耦合”之间插值,取耦合

$$\big(\hat x_0,\ \sqrt{1-\beta^2}\,x_1+\beta\,x_1'\big),\qquad \hat x_0=\Phi_v(x_1,1\!\to\!0),$$

其中 \(x_1\) 是生成 \(\hat x_0\) 的那个噪声、\(x_1'\) 是另采的独立噪声,\(\beta:1\to0\) 从独立配对逐步过渡到流配对。系数取球面形式而不是直接凸组合,是为了保住噪声端仍是 \(\mathcal N(0,I)\):两个独立标准正态直接凸组合,逐坐标方差是 \(\beta^2+(1-\beta)^2<1\),采样起点就偏了。退火要治的是初始化不匹配:常规 reflow 拿教师权重初始化学生,但小学生结构不同、继承不了,而单独预训一个小的 1-rectified flow 来当初始化又太费时间;让同一个损失从独立配对滑到流配对,等于顺手给小学生做了 warm-start。之后再叠 flow-guided distillation,治“朴素蒸馏在小模型上效果差”那一半。

TraFlow(2025,后改名 SCoT):轨迹蒸馏视角——让学生的流映射 \(G_\theta(x_t,t\!\to\!s)\) 同时“直”且“一致”,损失就是这两项:

$$\mathcal L_{\text{TraFlow}}=\lambda_{\text{vel}}\underbrace{\mathbb E\big\|\partial_s G_\theta(x_t,t\!\to\!s)-(x_1-\hat x_0)\big\|^2}_{\text{导数恒定:直}}+\lambda_{\text{con}}\underbrace{\mathbb E\,d\big(G_\theta(x_{t'},t'\!\to\!s),\ G_{\theta^-}(\Phi_\phi(x_{t'},t'\!\to\!t),t\!\to\!s)\big)}_{\text{软一致}},$$

其中 \(\hat x_0=\Phi_\phi(x_1,1\!\to\!0)\)。第一项把映射对 \(s\) 的导数按在常向量 \(x_1-\hat x_0\) 上(沿 \(s\) 增大即朝噪声端,与 §3.1\(\varepsilon-x_0\) 同向),等价于 reflow 的直度要求;第二项要求“学生直接跳”对上“教师解一小步、再由 EMA 学生跳”,正是 CTM 的软一致性,把 §2 的一致性思想回注直线化支。按 CTM 的做法,这两个落点还各由 EMA 学生从 \(s\) 再映到干净端才比距离,即距离量在 \(x_0\) 空间而不是在 \(s\) 处。

4. 番外:不训练也能少步——采样器

以上都要训练(蒸馏或从头)。但在“不能重训教师”的现实约束下,还有一条完全正交、可叠加的腿:把原 ODE 积分得更聪明,完全不训练也能把几十步压到 8–15 步。这条线自成体系,五个主要分支如下。

  • 指数积分器DPM-Solver++ / UniPC / SA-Solver 等):利用扩散 ODE 的半线性结构。把 \(\eqref{eq:heads}\)\(v\) 用 score 写开(\(\hat x_0,\hat\varepsilon\) 都换成 \(s\)),§0.1 那条 PF-ODE 就是 \(\dot x_t=\tfrac{\dot\alpha_t}{\alpha_t}x_t+\big(\tfrac{\dot\alpha_t}{\alpha_t}\sigma_t^2-\dot\sigma_t\sigma_t\big)s(x_t,t)\):前一项是线性漂移、可解析积掉,只有后一项要调网络。于是线性部分精确解出,只对非线性积分做数值近似——同样精度下步数大减。
  • 时间表优化GITS / AYS / LD3):不改 solver,只优化“在哪几个时刻求值”,把有限的 NFE 花在曲率大的地方。
  • 学习型求解器AMED / DC-Solver / S4S):让 solver 本身可训,拟合出比手工更好的系数/节点。
  • 重参数化到流坐标A-FloPS, 2025):把扩散反向 ODE 重参数化到流匹配坐标,再对残差做自适应分解,恢复高阶积分在 FM 上被“抹平”的收益。
  • 引导感知求解器THG, NeurIPS 2025;ERK-Guid, 2026):CFG 的漂移含“噪声估计”与“引导差”两支,两支的变化速率不同。THG 据此把 CFG 的 ODE 重写成一个多速率系统(噪声估计走细网格,引导差走粗网格),最多省 30% NFE;ERK-Guid 把嵌入式 solver 的截断误差当引导信号用,低步数增益最大。

我的看法是,采样器被低估了。它和任何蒸馏正交、即插即用,是“教师不可动”时性价比最高的加速手段;但它的天花板是沿原 ODE 少步,要真正逼近“一步”,还得靠前面的蒸馏或从头训。

5. 小结:轨迹这条线,和它通向哪

把本篇钉回三根轴:

  • 一致性支 = (A)轨迹 +(B)跳到干净端 +(C)蒸馏或从头。核心恒等式一个:同一轨迹映同一终点;sCM 把它连续时间化(§2.4 那段推导就是把 \(\tfrac{\mathrm df}{\mathrm dt}=0\) 落到可优化的 MSE),rCM 补上寻峰。
  • 直线化支 = (A)轨迹 +(B)拉直路径 +(C)蒸馏或从头。核心逻辑三定理:保边际 → reflow 不增代价 → 掰直即一步;Rectified Diffusion 进一步指出,起作用的不是几何上的直,而是预测沿轨迹恒定。
  • 采样器(番外)= 不训练、只把轨迹积分得更聪明,与上二者正交可叠。

两支的共同点是都在轨迹的形状上做文章——要么跳过它、要么掰直它。但它们都还盯着“单一终点”或“整条轨迹”。下一篇换一个更灵活的对象:任意两时刻之间的平均速度,从 CTM 到 MeanFlow 的 flow-map 家族。这条线在 2026 年把一步生成 ImageNet-256 做到 FID 1.72,已经逼近多步质量。