U7.2 14 分鐘閱讀 2026年9月

U7.2 MeanFlow:平均速度與一條精確的恆等式

本篇重用M0.3漂流的溫度計:全導數、微分穿過積分與 JVP·M1.2天氣預報該報幾度:MSE 的最小值是 Conditional Expectation·M1.1從鞋子猜身高:Conditional Expectation

換一個座標寫 flow map

上一篇說 Eulerian 是能夠不要 teacher 的那條路,但直接對 ψθ\psi_\theta 寫 Eulerian 損失有兩個不順手的地方:恆等條件 ψtt=id\psi_{t\to t}=\mathrm{id} 要另外用參數化保證;而 ψ\psi 的輸出是「位置」,兩個時間很近時它幾乎等於輸入,網路要學的是一個接近恆等的映射,訊號很弱。

MeanFlow(Geng et al. [1])的第一步是換座標。flow map 把 zz 從時刻 tt 送到時刻 rr,位移是 ψtr(z)z\psi_{t\to r}(z)-z;把位移除以時間差,得到的是這段路的平均速度

u(z,r,t)  :=  ψtr(z)zrt  =  1trrtv(zτ,τ)dτ,u(z,r,t)\;:=\;\frac{\psi_{t\to r}(z)-z}{r-t}\;=\;\frac{1}{t-r}\int_r^t v\big(z_\tau,\tau\big)\,d\tau ,

zτz_\tau 是經過 (z,t)(z,t) 的那條軌跡,第二個等號只是把位移寫成速度的積分。讀法:zz 是時刻 tt 的位置,rr 是要跳去的時刻,uu 是這一段軌跡上瞬時速度的平均。 反過來,flow map 就是 ψtr(z)=z+(rt)u(z,r,t)\psi_{t\to r}(z)=z+(r-t)\,u(z,r,t)

rtr\to t 時積分區間縮成一點,u(z,t,t)=v(z,t)u(z,t,t)=v(z,t)——平均速度退化成瞬時速度,flow matching 是 r=tr=t 的切片。恆等條件也自動滿足:ψtt(z)=z+0u=z\psi_{t\to t}(z)=z+0\cdot u=z,不需要 cskipc_{\text{skip}}coutc_{\text{out}} 那套參數化。這兩件事來自同一個原因:我們把「位置」換成了「速度」,網路輸出的是 vv 的同類物件,而不是一個接近恆等的映射。

展開細節慣例對照:MeanFlow 原文的 r<t 與這裡的 t<r

MeanFlow 原文用 t=0t=0 是資料、t=1t=1 是噪聲的慣例,一步生成是從 t=1t=1 跳到 r=0r=0,所以文中 r<tr<tuu 的定義寫成 1trrtvdτ\frac{1}{t-r}\int_r^t v\,d\tau。本篇沿用 U2 的 FM 慣例(t=0t=0 噪聲、t=1t=1 資料),從噪聲端往資料端跳是 t<rt<r。但注意上面的定義式對 r<tr<tr>tr>t 都成立——1trrt\frac{1}{t-r}\int_r^t 換成 1rttr\frac{1}{r-t}\int_t^r 值不變——所以接下來的 identity 不需要選方向,這正是 U7.0 說「雙時間沒有方向問題」的意思。

把定義式微分:MeanFlow identity

定義式兩邊乘上 (tr)(t-r)

(tr)u(zt,r,t)=rtv(zτ,τ)dτ.(t-r)\,u(z_t,r,t)=\int_r^t v(z_\tau,\tau)\,d\tau .

現在固定 rr,讓 tt 動,而且讓 ztz_t 跟著沿軌跡動dztdt=v(zt,t)\tfrac{dz_t}{dt}=v(z_t,t))。右邊的積分只透過上限依賴 tt(軌跡是同一條,被積函數不變),微分就是 v(zt,t)v(z_t,t)。左邊是乘積,乘法法則:

u(zt,r,t)+(tr)ddtu(zt,r,t)=v(zt,t),u(z_t,r,t)+(t-r)\,\frac{d}{dt}u(z_t,r,t)=v(z_t,t),

其中 ddt\tfrac{d}{dt}沿軌跡的全導數——uu 的三個輸入裡 ztz_ttt 都在動:

ddtu(zt,r,t)=tu+(zu)v(zt,t).\frac{d}{dt}u(z_t,r,t)=\partial_t u+\big(\partial_z u\big)\,v(z_t,t).

整理成 MeanFlow identity:

  u(zt,r,t)=v(zt,t)(tr)ddtu(zt,r,t)  \boxed{\;u(z_t,r,t)=v(z_t,t)-(t-r)\,\frac{d}{dt}u(z_t,r,t)\;}

讀法:平均速度 = 瞬時速度 − 一個修正項。修正項是「平均速度沿軌跡的變化率」乘上時間差。軌跡是直線時 uu 沿路不變,修正項為零,平均等於瞬時;軌跡彎,兩者才分開。r=tr=t 時修正項也為零,回到 u=vu=v

這條式子對任何一對 (r,t)(r,t) 精確成立,沒有任何近似——它只用到微積分基本定理與乘法法則。

展開細節它就是上一篇的 Eulerian 恆等式

ψtr(z)=z+(rt)u(z,r,t)\psi_{t\to r}(z)=z+(r-t)\,u(z,r,t) 代進 Eulerian 恆等式 ddtψtr(zt)=0\tfrac{d}{dt}\psi_{t\to r}(z_t)=0。沿軌跡微分:ztz_t 的變化率是 vv(rt)(r-t) 的變化率是 1-1uu 的變化率是 dudt\tfrac{du}{dt}

ddtψtr(zt)=vu+(rt)dudt=0u=v(tr)dudt.\frac{d}{dt}\psi_{t\to r}(z_t)=v-u+(r-t)\frac{du}{dt}=0 \quad\Longleftrightarrow\quad u=v-(t-r)\frac{du}{dt}.

所以 MeanFlow identity 不是一條新的恆等式,是 Eulerian 恆等式在「平均速度」座標下的樣子。換座標的好處在前一節說過:恆等條件自動成立、r=tr=t 自動是 FM。rr 釘在資料端時,它就是 U6.4 sCM 的連續時間 consistency 條件換了寫法。

訓練:把右邊當目標

網路 uθ(z,r,t)u_\theta(z,r,t) 輸入三樣東西、輸出一個向量。把 identity 的右邊當成目標:

utgt=v(zt,t)(tr)[tuθ+(zuθ)v(zt,t)]ddtuθ,用 JVP 算,L=uθ(zt,r,t)sg(utgt)2.u_{\text{tgt}}=v(z_t,t)-(t-r)\,\underbrace{\Big[\partial_t u_\theta+(\partial_z u_\theta)\,v(z_t,t)\Big]}_{\frac{d}{dt}u_\theta\text{,用 JVP 算}},\qquad \mathcal L=\Big\|u_\theta(z_t,r,t)-\mathrm{sg}\big(u_{\text{tgt}}\big)\Big\|^2 .

三個實作上的決定:

  1. 全導數用 JVP。 ddtuθ\tfrac{d}{dt}u_\thetauθu_\theta 對輸入 (z,r,t)(z,r,t) 的 Jacobian 乘上切向量 (v,0,1)(v,\,0,\,1)torch.func.jvp 一次前向就算出來,不需要整個 Jacobian——U6.4ddtfθ\tfrac{d}{dt}f_\theta 用的是同一招。成本大約是一次額外的前向。
  2. 目標 stop-gradient。 右邊含 uθu_\theta 自己,不回傳梯度。這是 U6.2 以來所有 self-consistency 方法的共同結構:把自己當 target 的 bootstrapping。
  3. vv 用條件速度代替。 訓練時抽 (x0,x1)(x_0,x_1)、造 zt=(1t)x0+tx1z_t=(1-t)x_0+t\,x_1,我們沒有邊際速度 v(zt,t)v(z_t,t),但有 x1x0x_1-x_0utgtu_{\text{tgt}} 裡兩處 vv——顯式的那個、JVP 切向量裡的那個——都換成 x1x0x_1-x_0

第三點就是下面的問題。

課堂提問Q1

Identity 是對邊際速度 v(zt,t)v(z_t,t) 成立的,訓練時卻代進了條件速度 x1x0x_1-x_0,而同一個 ztz_t 會被許多不同的 (x0,x1)(x_0,x_1) 對經過。為什麼這樣代是可以的? 這是哪一個已經用過的模式?這一次和 consistency training 那一次差在哪裡?

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

課堂上到這裡,大多數人已經能直接說出前半:「squared loss 回歸隨機目標,學到的是目標的條件期望;E[x1x0zt]=v(zt,t)\mathbb E[x_1-x_0\mid z_t]=v(z_t,t),所以平均起來就是邊際速度。」這就是 U1.2conditional trick,用在平均速度上(U5.2 有一張表列著它先前的幾個版本)。但這一次有兩個新的細節值得說清楚。

細節一:目標對 vv 是線性的,所以代換在期望上精確。 把目標寫成 vv 的函數:utgt(v)=v(tr)[tuθ+(zuθ)v]u_{\text{tgt}}(v)=v-(t-r)\big[\partial_t u_\theta+(\partial_z u_\theta)\,v\big],兩處 vv 都是一次項。線性函數與期望可交換:

E[utgt(x1x0)zt]=utgt(E[x1x0zt])=utgt(v(zt,t)).\mathbb E\big[u_{\text{tgt}}(x_1-x_0)\,\big|\,z_t\big]=u_{\text{tgt}}\big(\mathbb E[x_1-x_0\mid z_t]\big)=u_{\text{tgt}}\big(v(z_t,t)\big).

而 squared loss 對一個隨機目標回歸,等於對目標的條件期望回歸再加一個變異數項;因為目標是 stop-gradient 的,那個變異數項不影響對 θ\theta 的梯度。所以梯度與用真正的邊際速度訓練時完全相同。這裡「線性」是關鍵——上一篇的展開框說過,若 vv 出現在非線性(例如平方)的位置,代換會多出一項 bias。

細節二:與 consistency training 差在「沒有離散化」。 U6.3 的 CT 也是條件代換,但它代的是「用同一組 (x0,ϵ)(x_0,\epsilon) 重新插值出 xtx_{t'}」來假裝走了一步;那個目標在期望上等於用真實 score 走一步 Euler,而 Euler 假設這一步是直線——bias 是 O(Δt)O(\Delta t) 乘上曲率,所以 CT 需要對 NN 做 curriculum。MeanFlow 沒有走任何一步:identity 是把「走一步」換成了解析的全導數,對任何 (r,t)(r,t) 精確,沒有 Δt\Delta t 可言。U3.2 那個曲率積分在這裡不是被壓小,是根本沒有出現。

還有一件事要誠實標出來:dudt\tfrac{du}{dt} 那一項用的是 uθu_\theta 自己。 條件→邊際的論證只處理 vv;identity 右邊的 dudt\tfrac{du}{dt} 應該是真實平均速度的導數,訓練時我們手上沒有,只能用網路當下的輸出代替。這是一個實作選擇(bootstrapping),不是定理:它的辯護是不動點論證——若 uθu_\theta 已經等於真實的 uu,目標就恰好是 uu 本身,訓練停在正解;訓練過程中它是否穩定收斂,靠的是 stop-gradient、r=tr=t 樣本的錨定(那些樣本就是普通 FM,沒有 bootstrapping),以及 U6.4 談過的那些穩定技巧。CT 與 sCM 也有同樣的 self-target 結構,MeanFlow 在這一點上並不比它們更多或更少。

取樣,與它為什麼值得

取樣只是把定義式反過來用。從 z0N(0,I)z_0\sim\mathcal N(0,I) 出發,一步:

z1=ψ01(z0)=z0+uθ(z0,1,0).z_1=\psi_{0\to1}(z_0)=z_0+u_\theta(z_0,\,1,\,0).

(讀法:位置 z0z_0、當前時刻 t=0t=0、目標 r=1r=1。)兩步就是 01210\to\tfrac12\to1,中途不需要重新加噪——半群條件被 identity 隱含地訓進去了。

MeanFlow 值得記住的原因,是它把這個單元的目標——flow map 可以像 flow matching 一樣從頭訓練、不要 teacher、不帶曲率 bias——用一條式子做到。代價有兩個:每一步訓練多一次 JVP 的前向;以及 dudt\tfrac{du}{dt} 那一項的 bootstrapping。實務上 MeanFlow 還把一部分訓練樣本取 r=tr=t(純 FM,穩定訓練的錨),並對 loss 做自適應加權——那些屬於 U3.5 說的加權那一軸,不改變主線。

先消化一下

想一想

平均速度 u(z,r,t)u(z,r,t)r=tr=t 時等於什麼?

想一想

MeanFlow identity 裡的 ddtu(zt,r,t)\tfrac{d}{dt}u(z_t,r,t) 是:

想一想

用條件速度 x1x0x_1-x_0 代替邊際速度 vv 之後,訓練的梯度與用真實 vv 訓練時相同。這依賴的是:

想一想

與 consistency training 相比,MeanFlow「沒有 O(Δt)O(\Delta t) 曲率 bias」的原因是:

參考文獻

  1. Geng, Z., Deng, M., Bai, X., Kolter, J. Z., He, K. Mean Flows for One-step Generative Modeling. 2025.(平均速度、MeanFlow identity、JVP 訓練、r=tr=t 樣本的混合。)
  2. Lu, C., Song, Y. Simplifying, Stabilizing and Scaling Continuous-Time Consistency Models. 2024.(連續時間 consistency 條件與 JVP;MeanFlow 在 rr 釘於資料端時的對應。)
  3. Boffi, N. M., Albergo, M. S., Vanden-Eijnden, E. Flow Map Matching. 2024.(Eulerian 恆等式。)