U6.0 15 分鐘閱讀 2026年9月

U6.0 不走了,直接學那一步

本篇重用M2.1從一片葉子到一群葉子:Flow Map 與 Pushforward·M2.3導航每 30 秒更新一次:Euler 法與它的誤差·M1.2天氣預報該報幾度:MSE 的最小值是 Conditional Expectation

回到那條不等式

U3.2 把三個單元的主線收在一條不等式上:Euler 取樣的全域誤差 CLh01x¨tdt\lesssim C_L\,h\int_0^1\|\ddot x_t\|\,dt。步長 hh 是預算,積分是軌跡有多彎。U3.3U3.4 接著做了一件事:改配對,把積分壓小。U3.6 的圖 b 上,四個模型落在一條斜線上——積分小的,同樣步數誤差就小。

現在把這條斜線往左看到底。積分恰好是零只有一種情形:所有粒子沿等速直線走,S(π)=0S(\pi)=0。reflow 迭代的極限逼近它,但每一輪都在累積上一輪的模型誤差,實務上一到兩輪就停;停下來的時候積分還不是零。而只要它不是零,h=1h=1——一步——就一定有誤差,不等式只告訴你誤差有多小,沒有辦法讓它消失。

換句話說,前三個單元的做法都是先學速度場、再用數值方法積分它,「一步生成」在這條路上是一個永遠只能逼近的極限。這個單元換一個問題:我們真正想要的是「從噪聲一步到資料」的那個映射。

能不能不學速度場,直接學那個映射?

要學的物件叫什麼

U2 的語言說清楚要學的東西。速度場 utu_t 定義了一個 ODE,ODE 的解把時刻 ss 的點送到時刻 tt 的點,這個「送」的動作是一個映射,記成 ψst\psi_{s\to t}ψst(xs)=xt\psi_{s\to t}(x_s)=x_tU2.1 叫它 flow map。生成一張圖,就是算一次 ψ01\psi_{0\to1}——把 x0N(0,I)x_0\sim\mathcal N(0,I) 送到 x1x_1

前三個單元從來沒有直接碰過 ψ01\psi_{0\to1}。我們學的是 utu_t,然後靠 Euler 一步一步近似它:NN 步 Euler 就是 NN 個「假設這一小段是直線」的映射疊起來。誤差來自每一段其實不是直線。

所以新目標是:用一個網路 GθG_\theta 直接逼近 ψ01\psi_{0\to1} 它的輸入是一個噪聲,輸出是一張圖,中間不積分任何東西。這就是 U1.0 一開始想要的那個 GG——只是這次我們已經知道它該等於什麼:一個具體的、由 PF-ODE 決定的映射,而不是無限多個合法 GG 中隨便一個。這一點很重要,馬上會用到。

課堂提問Q1

我們手上有一個訓好的 FM(或 diffusion)模型,可以跑 ODE。最笨、最直接的做法是什麼?它哪裡好、哪裡不好?

先想一想,再展開看整理後的答案

最直覺的做法幾乎只有一個:用 teacher 跑 ODE,從 x0x_0 算到 x1=ψ01(x0)x_1=\psi_{0\to1}(x_0),收集一大堆 (x0,x1)(x_0,x_1) 配對,然後訓一個網路做回歸 Gθ(x0)x1G_\theta(x_0)\approx x_1。這確實就是最早的做法(Luhman & Luhman [1]),值得認真分析,因為它把這個單元所有方法要解決的問題都攤在桌上了。

好的地方,而且比想像中好。 回歸的目標是 MSE,U1.3 說 MSE 的最小值是 conditional expectation E[x1x0]\mathbb E[x_1\mid x_0]U1.0 提醒過,如果一個 x0x_0 可以對到很多個 x1x_1,回歸會輸出它們的平均、變成一團糊。但這裡不會:ψ01\psi_{0\to1} 是 ODE 的解,一個起點對到一個終點E[x1x0]\mathbb E[x_1\mid x_0] 就是 ψ01(x0)\psi_{0\to1}(x_0) 本身。沒有 mode averaging。這件事的來源是 U2.1 的「ODE 軌跡不交叉」,也是 U3.3 的第三個性質——同一個事實。

不好的地方一:資料太貴。 每一筆訓練配對都要 teacher 跑幾十到上百步 ODE。想學好一個 GθG_\theta 需要的配對數量和訓練一個生成模型差不多,等於要用 teacher 生成整個資料集一次。

不好的地方二:學生只看過 t=0t=0 訓練資料只有 (x0,x1)(x_0,x_1),中間的 xtx_t 完全沒出現。這在兩個地方付出代價:學生沒辦法多步取樣(它只會從純噪聲出發),而且它要學的映射是整條 ODE 疊起來的那個版本——U3.5 說中段 tt 是最難學的一段,直接回歸終點等於把整段都塞進一個網路裡。

不好的地方三:這只是蒸餾。 學生的上限是 teacher;teacher 的誤差、teacher 用的取樣步數造成的離散誤差,全部進入配對。這個單元後面會問:能不能不要 teacher?

把三個「不好」記下來。接下來三篇分別對付它們:U6.1 用「逐輪減半」省掉事先生成資料;U6.2 把要學的物件從「t=0t=0 到終點」改成「任何 tt 到終點」;U6.3 拿掉 teacher。

這件事我們其實做過

停一下,回頭看 U3.3。reflow 的第一步是什麼?「用模型自己的 ODE 生成配對 (X0,Z1)(X_0,Z_1)」。這和 Q1 的做法一模一樣:都是 teacher 跑 ODE、收集起點與終點。差別只在拿到配對之後做什麼:

配對怎麼來拿配對學什麼產物
Reflow(U3.3teacher 跑 ODE重訓 FM:uθ(xt,t)x1x0u_\theta(x_t,t)\approx x_1-x_0xtx_t 是配對的直線插值一個更直的速度場,還是要積分
直接回歸終點 [1]teacher 跑 ODEGθ(x0)x1G_\theta(x_0)\approx x_1一個一步映射

reflow 學的是速度,所以產物仍然是要積分的東西,只是軌跡直了、需要的步數少了;直接回歸學的是終點,產物本身就是一步。兩者的訓練資料完全相同。而 reflow 做兩輪就接近直線這件事,換到這個角度說就是:一個配對不交叉的 FM,它的一步 Euler 就幾乎是 ψ01\psi_{0\to1}。所以 reflow×2 本身就是一個不錯的一步生成器——U6.6 會把它和這個單元的方法放在同一張圖上比。

這個對照給了一個很有用的座標:這個單元的所有方法,都可以問「配對從哪裡來、學速度還是學終點、要不要 teacher」三個問題。

切換時間方向

接下來三篇要跟著 Consistency Models 原文 [4] 與 EDM [5] 的慣例走,那套慣例的時間方向和 U2U3 相反t=0t=0 是資料、tt 大是噪聲,和 U1 的 DDPM 方向相同。這是認知負荷不是數學難度,所以花半頁把它一次講清楚,之後不再回頭。

本單元的 forward process 用 EDM 的 variance-exploding(VE)形式:

xt=x0+tϵ,ϵN(0,I),t[0,T],x_t=x_0+t\,\epsilon,\qquad \epsilon\sim\mathcal N(0,I),\quad t\in[0,T],

x0pdatax_0\sim p_{\text{data}} 是乾淨資料,噪聲的標準差就是 tt 本身(沒有 αˉt\sqrt{\bar\alpha_t} 這種縮放)。TT 取得夠大(原文用 T=80T=80,資料標準化到單位尺度),使 xTTϵx_T\approx T\epsilon 幾乎是純噪聲;取樣時從 N(0,T2I)\mathcal N(0,T^2I) 出發。這條路徑的好處是每個係數都是 11tt,接下來所有式子裡不會有 schedule 的符號。

本單元的 PF-ODE。 對這條路徑,probability-flow ODE 是

dxtdt=tlogpt(xt)=E[ϵxt],\frac{dx_t}{dt}=-t\,\nabla\log p_t(x_t)=\mathbb E[\epsilon\mid x_t],

第二個等號是 U1.3 的 Tweedie 公式在 VE 座標下的樣子——denoiser 預測的 E[ϵxt]\mathbb E[\epsilon\mid x_t] 就是速度,方向是「往噪聲走」。生成是把這條 ODE 從 t=Tt=T 解到 t=0t=0。(推導放在下面的展開框。)

與 FM 座標的對照。 把 FM 的時間記成 s[0,1]s\in[0,1]s=0s=0 噪聲、s=1s=1 資料),線性路徑 xsFM=sxdata+(1s)ϵx^{\text{FM}}_s=s\,x_{\text{data}}+(1-s)\,\epsilon。兩邊除以 ssxsFM/s=xdata+1ssϵx^{\text{FM}}_s/s=x_{\text{data}}+\frac{1-s}{s}\,\epsilon,右邊正是本單元的 xtx_t,只要令 t=1sst=\frac{1-s}{s}。所以兩套座標描述的是同一族分佈,只差一個時間重參數化與一個尺度——U2.4 說的「同一物件、不同座標」。

U1(DDPM)U2U3(FM)本單元(EDM / CM)
資料在哪一端t=0t=0s=1s=1t=0t=0
噪聲在哪一端t=Tt=Ts=0s=0t=Tt=TT=80T=80
中間點αˉtx0+σtϵ\sqrt{\bar\alpha_t}\,x_0+\sigma_t\epsilonsx1+(1s)x0s\,x_1+(1-s)\,x_0x0+tϵx_0+t\,\epsilon
ODE 的速度ϵθ\epsilon_\theta 組成us=E[x1x0xs]u_s=\mathbb E[x_1-x_0\mid x_s]E[ϵxt]=tlogpt\mathbb E[\epsilon\mid x_t]=-t\nabla\log p_t
一步映射的目標ψ01\psi_{0\to1}:噪聲 \to 資料f(xt,t)=x0f(x_t,t)=x_0:任何 tt \to 資料
對照t=1sst=\tfrac{1-s}{s}xt=xsFM/sx_t=x^{\text{FM}}_s/s

最後一列先預告了下一篇要定義的物件:本單元學的映射寫成 f(xt,t)f(x_t,t),吃「任何一個時刻的任何一點」、吐「這條軌跡在 t=0t=0 的終點」。ψ01\psi_{0\to1} 只是它在 t=Tt=T 這一片的特例。

ψst\psi_{s\to t} 的下標沿用 FM 慣例00 是噪聲、11 是資料),本篇前半與下面的 quiz 都是這樣用;換到本單元慣例,同一個映射寫成 f(,T)f(\cdot,T)。混用一個記號不理想,但改寫 flow map 的下標會和 U2.1 對不上,所以留著並在這裡標明。

展開細節推導:VE 路徑的 PF-ODE 為什麼是 dx/dt = −t ∇log p_t = E[ε | x_t]

xt=x0+tϵx_t=x_0+t\epsilon 的邊際 ptp_tpdatap_{\text{data}}N(0,t2I)\mathcal N(0,t^2I) 的 convolution,其變異數以 ddtt2=2t\frac{d}{dt}t^2=2t 的速率增加,對應的 forward SDE 是 dx=2tdWdx=\sqrt{2t}\,dW(drift 為零)。U1.4 的 PF-ODE 公式(那裡的 drift 記成 μ\mu,別和本單元的映射 ff 混在一起)dxdt=μ12g2logpt\frac{dx}{dt}=\mu-\tfrac12 g^2\nabla\log p_t 代入 μ=0\mu=0g2=2tg^2=2t,得 dxdt=tlogpt(x)\frac{dx}{dt}=-t\nabla\log p_t(x)

Tweedie:對 pt(x)=N(x;x0,t2I)pdata(x0)dx0p_t(x)=\int\mathcal N(x;x_0,t^2I)\,p_{\text{data}}(x_0)\,dx_0xlog\nabla_x\log,得 logpt(x)=xE[x0xt=x]t2\nabla\log p_t(x)=-\frac{x-\mathbb E[x_0\mid x_t=x]}{t^2};而 xx0=tϵx-x_0=t\epsilon,所以 logpt(xt)=E[ϵxt]t\nabla\log p_t(x_t)=-\frac{\mathbb E[\epsilon\mid x_t]}{t},即 E[ϵxt]=tlogpt(xt)\mathbb E[\epsilon\mid x_t]=-t\nabla\log p_t(x_t)。兩式合起來就是正文的 ODE。

U2.4 的一般式也能到同一個地方:取 αt=1\alpha_t=1x0x_0 的係數)、σt=t\sigma_t=tut=α˙tE[x0xt]+σ˙tE[ϵxt]=E[ϵxt]u_t=\dot\alpha_t\,\mathbb E[x_0\mid x_t]+\dot\sigma_t\,\mathbb E[\epsilon\mid x_t]=\mathbb E[\epsilon\mid x_t]

從下一篇起,「x0x_0」永遠是資料、「tt 小」永遠是乾淨端。如果讀到某個式子覺得方向怪,回來查這張表。

先消化一下

想一想

「直接學 flow map」與「先學速度場再積分」的根本差別是:

想一想

Q1 的直接回歸法用 MSE 訓練 Gθ(x0)x1G_\theta(x_0)\approx x_1,卻不會出現「多個答案被平均成一團糊」的問題。原因是:

想一想

Reflow 與「直接回歸終點」的關係是:

想一想

本單元用 xt=x0+tϵx_t=x_0+t\epsilon。在這套座標下,PF-ODE 的速度 dxtdt\frac{dx_t}{dt} 等於:

參考文獻

  1. Luhman, E., Luhman, T. Knowledge Distillation in Iterative Generative Models for Improved Sampling Speed. 2021.(Q1 的直接回歸法。)
  2. Liu, X., Gong, C., Liu, Q. Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow. ICLR 2023.(reflow 的配對來自 ODE。)
  3. Salimans, T., Ho, J. Progressive Distillation for Fast Sampling of Diffusion Models. ICLR 2022.(下一篇。)
  4. Song, Y., Dhariwal, P., Chen, M., Sutskever, I. Consistency Models. ICML 2023.(本單元時間方向與符號的來源。)
  5. Karras, T., Aittala, M., Aila, T., Laine, S. Elucidating the Design Space of Diffusion-Based Generative Models. NeurIPS 2022.(EDM:xt=x0+tϵx_t=x_0+t\epsilon 的 VE 形式與 T=80T=80。)