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

U7.3 Shortcut 與 Align Your Flow:同一張表的其他格子

本篇重用M0.3漂流的溫度計:全導數、微分穿過積分與 JVP·M2.3導航每 30 秒更新一次:Euler 法與它的誤差

同一個輸出,換一條恆等式

上一篇 MeanFlow 把網路輸出定成平均速度 u(z,r,t)u(z,r,t),用 Eulerian 恆等式訓練。U7.1 的表上還有第三條恆等式——progressive,兩小步等於一大步。如果輸出一樣是平均速度,但改用 progressive 恆等式,會長什麼樣? 那就是 Shortcut model。

Shortcut:兩個 dd 步的平均等於一個 2d2d

Shortcut model(Frans et al. [1])的網路是 sθ(xt,t,d)s_\theta(x_t,t,d),第三個輸入是步長 dd:從 xtx_t 往資料端跳 dd 這麼長的時間,落點是

xt+d=xt+d  sθ(xt,t,d).x_{t+d}=x_t+d\;s_\theta(x_t,t,d).

對照上一篇的記號,s(x,t,d)s(x,t,d) 就是 u(x,r=t+d,t)u(x,\,r{=}t{+}d,\,t)——同一個平均速度,只是第三個輸入從「目標時刻」換成「時間差」。

Progressive 恆等式說 ψtt+2d=ψt+dt+2dψtt+d\psi_{t\to t+2d}=\psi_{t+d\to t+2d}\circ\psi_{t\to t+d}。用平均速度寫:一大步的位移 2ds(xt,t,2d)2d\cdot s(x_t,t,2d) 等於兩小步位移的和 ds(xt,t,d)+ds(xt+d,t+d,d)d\cdot s(x_t,t,d)+d\cdot s(x'_{t+d},t+d,d),其中 xt+d=xt+ds(xt,t,d)x'_{t+d}=x_t+d\,s(x_t,t,d) 是走完第一小步的位置。兩邊除以 2d2d

  s(xt,t,2d)=12[s(xt,t,d)+s(xt+d,t+d,d)]  \boxed{\;s(x_t,t,2d)=\tfrac12\Big[s(x_t,t,d)+s\big(x'_{t+d},\,t+d,\,d\big)\Big]\;}

讀法很直白:大步的平均速度,是兩個小步平均速度的平均。 這條式子裡完全沒有 vv——和 U7.1 說的一樣,progressive 恆等式本身不含速度場,動力學要從最小的一步進來。Shortcut 的最小一步是 d=0d=0

s(xt,t,0)=v(xt,t)Ld=0=sθ(xt,t,0)(x1x0)2,s(x_t,t,0)=v(x_t,t)\quad\Longrightarrow\quad \mathcal L_{d=0}=\big\|s_\theta(x_t,t,0)-(x_1-x_0)\big\|^2 ,

就是 U2.2 的 flow matching 損失,條件速度照用——這是 U1.2conditional trick,而且這裡 vv 是被回歸的目標、不乘在任何含 θ\theta 的東西上,所以沒有上一篇展開框裡那個陷阱。

訓練把兩種樣本混在一個 batch 裡:大部分(原文約四分之三)是 d=0d=0 的 FM 樣本,其餘是 self-consistency 樣本——抽一個 dd,用網路自己算右邊、stop-gradient、當成 sθ(xt,t,2d)s_\theta(x_t,t,2d) 的目標。步長取離散的網格 d{0,1128,164,,12,1}d\in\{0,\tfrac1{128},\tfrac1{64},\dots,\tfrac12,1\}tt 也落在對應的格點上;每一級 2d2d 的目標由 dd 那一級提供,資訊從 FM 底層一級一級往上 bootstrap。取樣時選一個 dd,走 1/d1/d 步;d=1d=1 就是一步。

Shortcut 與 MeanFlow 並排

兩者輸出同一個物件,值得把差別說乾脆:

ShortcutMeanFlow
輸出平均速度 s(x,t,d)s(x,t,d)平均速度 u(z,r,t)u(z,r,t)
恆等式progressive(兩個 dd 步 = 一個 2d2d 步)Eulerian(u=v(tr)dudtu=v-(t-r)\tfrac{du}{dt}
動力學從哪進來d=0d=0 的 FM 樣本每個樣本裡顯式的 vv(條件速度)
需要 JVP否,多一次前向算 xx' 處的 ss是,一次 JVP
步長離散網格、2 的冪任意 (r,t)(r,t)
誤差結構沿階梯逐級累積(U6.1 的累積換寫法)無階梯;dudt\tfrac{du}{dt} 的 bootstrapping
teacher

兩者都不要 teacher,理由不同:Shortcut 是「progressive 配 FM 底層」,MeanFlow 是「Eulerian,vv 在輸入點」——正是 U7.1 表上不要 teacher 的兩條路各一個代表。Shortcut 的階梯結構也讓 U3.2 的圖像換了一種樣子出現:底層 FM 的誤差不是被步數放大,而是被「級數」放大——log2(1/dmin)\log_2(1/d_{\min}) 級。

符號這一篇的 u 與 s 各有兩個意思

兩個字母都被兩種東西用到,判準都是「有沒有吃參數」:

  • u(z,r,t)u(z,r,t) 是平均速度(U7.2);單獨的 uu 是 progressive 恆等式裡的中間時刻(U7.0 的符號補充)。
  • sθ(xt,t,d)s_\theta(x_t,t,d) 是 Shortcut 的網路(吃一個步長 dd);單獨的 ss 是 flow map 的目標時刻(ψts\psi_{t\to s}st|s-t|)。還有兩個也用 ssU6.3 的 teacher score sϕs_\phi、以及下一篇的 score sθs_\theta(吃兩個輸入、不吃步長)。四個都靠吃幾個輸入分辨。

沿用原文寫法是刻意的——讀論文時不必再翻譯一次。

Align Your Flow:distillation 設定下同時用兩條

前兩個方法都從頭訓練。若手上 teacher,U7.1 的表多出一條可用的路:Lagrangian——vv 在輸出點,只有 teacher 能給。Align Your Flow(AYF,Sabour, Fidler & Kreis [2])就在這個設定下,把 Eulerian 與 Lagrangian 兩條恆等式都寫成連續時間的 distillation 目標(原文稱 AYF-EMD 與 AYF-LMD),全導數同樣用 JVP 算,vv 一律由 teacher 提供。

AYF 有兩個觀察值得記下來。第一,它明確指出 consistency model 是 flow map 把目標時刻釘在資料端的特例,並且證明(對 Gaussian 資料)存在一個次佳的 consistency model,使得步數變多之後 W2W_2 反而上升——這就是 U6.5 說的「ODE 那個 O(1/N)O(1/N) 的保證在多步 CM 上沒有」,而 AYF 把「沒有保證」補成了一個具體的反例。flow map 沒有這個問題,因為多步不需要回到資料端再加噪。第二,它不單押一條恆等式,而是把 EMD 與 LMD 搭配使用,並加上 tangent normalization 這類 U6.4 談過的穩定手段。至於兩條各自在哪個區域比較不穩、為什麼要搭配,我沒有核對到原文的具體敘述,這裡只記結構——要照著做之前,先讀原文 [2] 的實驗那一節。此外 AYF 在蒸餾時對 teacher 用 autoguidance、在最後階段加 adversarial finetuning——這兩項屬於工程加料,放進表上時只記主線:AYF = Eulerian + Lagrangian,連續時間,要 teacher。

課堂提問Q1

Shortcut 與 MeanFlow 都不用 teacher。但 MeanFlow 的恆等式對任何一對 (r,t)(r,t) 直接成立,Shortcut 卻要從 d=0d=0 一級一級 bootstrap 上來,還多付 log2(1/dmin)\log_2(1/d_{\min}) 級的誤差放大。

既然如此,Shortcut 還有什麼存在的理由?

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

兩個,而且都不是「它比較早發表」。

一、它不需要微分。 MeanFlow 的 identity 裡有一個沿軌跡的全導數 ddtuθ\tfrac{d}{dt}u_\theta,實作要 JVP、等於在訓練迴圈裡多一階微分。U6.4 後半整節在談的 tangent normalization、tangent warmup、時間 embedding、double normalization——那一整套穩定手段,全部是為了付這一階微分的代價。Shortcut 的恆等式 s(x,t,2d)=12[s(x,t,d)+s(x,t+d,d)]s(x,t,2d)=\tfrac12\big[s(x,t,d)+s(x',t+d,d)\big] 只有函數求值,沒有導數,所以那一整套都不需要。

二、步長是網路的一個輸入,而且是離散的格點。 Shortcut 訓完之後,「我要走 8 步」就是取 d=18d=\tfrac18 呼叫 8 次,每一次都落在訓練時看過的格點上。MeanFlow 的 (r,t)(r,t) 是連續的,任意一對都能問,但也就沒有「這一對我練過」這件事。

代價確實是 bootstrapping,而它和 U6.1 的逐輪減半是同一種代價換了位置:PD 把它攤在訓練的輪次上(每輪一個新模型),Shortcut 把它攤在同一個網路的步長維度上(一級一級往上填)。所以 U3.2 的誤差累積在這裡不是被步數放大,是被級數放大——級數只有 log2(1/dmin)\log_2(1/d_{\min}),比步數少得多,這也是它還撐得住的原因。

一句話:MeanFlow 用一階微分換掉 bootstrapping,Shortcut 用 bootstrapping 換掉一階微分。 兩者都是 U7.1 那張表上「不要 teacher」的合法走法。

回頭看 CTM

U7.0 介紹 CTM 時已經寫出它的損失:Gθ(xt,ts)Gθ(x~u,us)G_\theta(x_t,t\to s)\approx G_{\theta^-}(\tilde x_u,u\to s)x~u\tilde x_u 由 teacher 從 tt 解 ODE 到 uu。現在有了三條恆等式的名字,可以確定它的格子:這是 progressive 恆等式 ψts=ψusψtu\psi_{t\to s}=\psi_{u\to s}\circ\psi_{t\to u},其中第一段 ψtu\psi_{t\to u} 不是學生自己,而是 teacher 的 solver。所以 CTM 和 Shortcut 同一欄(progressive),差在底層:Shortcut 的底層是 FM 自己、逐級 bootstrap;CTM 的底層是 teacher、一次到位。而 uu 貼近 tt 的極限則滑向 Eulerian——這就是 soft consistency matching 的「soft」:它在 progressive 與 Eulerian 兩格之間連續移動。

另一個差別是輸出物件:CTM 的 GθG_\theta 輸出位置,用 U6.2 那套 cskipc_{\text{skip}}coutc_{\text{out}} 參數化保證恆等條件;Shortcut 與 MeanFlow 輸出平均速度,恆等條件自動成立。這是兩種座標的選擇,不影響用哪條恆等式。

先消化一下

想一想

Shortcut 的自我一致性 s(xt,t,2d)=12[s(xt,t,d)+s(x,t+d,d)]s(x_t,t,2d)=\tfrac12[s(x_t,t,d)+s(x',t+d,d)] 裡的 12\tfrac12 來自:

想一想

Shortcut 為什麼一定要有 d=0d=0 的 flow matching 樣本?

想一想

Align Your Flow 能用 Lagrangian 恆等式,而 Shortcut 與 MeanFlow 不能。原因是:

想一想

CTM 的損失 Gθ(xt,ts)Gθ(x~u,us)G_\theta(x_t,t\to s)\approx G_{\theta^-}(\tilde x_u,u\to s) 用的是哪條恆等式?

參考文獻

  1. Frans, K., Hafner, D., Levine, S., Abbeel, P. One Step Diffusion via Shortcut Models. ICLR 2025.(步長輸入、self-consistency 目標、d=0d=0 的 FM 底層。)
  2. Sabour, A., Fidler, S., Kreis, K. Align Your Flow: Scaling Continuous-Time Flow Map Distillation. 2025.(AYF-EMD 與 AYF-LMD;consistency model 隨步數退化的觀察。)
  3. Kim, D. et al. Consistency Trajectory Models. ICLR 2024.
  4. Geng, Z., Deng, M., Bai, X., Kolter, J. Z., He, K. Mean Flows for One-step Generative Modeling. 2025.
  5. Boffi, N. M., Albergo, M. S., Vanden-Eijnden, E. Flow Map Matching. 2024.