Mean Flow 與第 11 章結語:平均速度、微分形式,以及同一個 flow map 的三種看法
CTM 直接學「從 \(s\) 跳到哪裡」,訓練時得解 ODE。Mean Flow 改學區間上的平均速度 \(\mathbf h^*\),再對起點時間微分,得到一個只需要瞬時速度和一次 Jacobian–向量乘積的目標:不用解 ODE,也不用老師。這一頁先講 MF 的訓練與取樣,再證明 CTM 和 MF 的 oracle 誤差只差一個時間權重,最後照書的第 11 章結語,用半群、Lagrangian、Eulerian 三種古典觀點,把 KD、PD、CM、CTM、MF 收進同一個框架。
讀完這頁你應該能夠
- 寫出 Mean Flow 的平均速度 \(\mathbf h^*\)、它的 oracle 損失,以及 \(s\to t\) 時它化成 flow matching。
- 從 \((t-s)\mathbf h^*=\int_s^t\mathbf v^*\,du\) 推出 MF 恆等式,說明訓練目標裡的 JVP 是什麼、切向量為什麼是 \([\mathbf v^*,1,0]\)。
- 證明 CTM 和 MF 的平方 oracle 誤差只差權重 \(1/s^2\),並說明兩者的實際目標為什麼仍然不同(積分形式 vs 微分形式)。
- 用半群、Lagrangian、Eulerian 三種觀點描述同一個 ODE flow,從半群恆等式推出另外兩個微分恆等式,並把本章各方法放進這三種觀點。
前置知識
- B29:統一的 flow map 目標、半群性質、CTM 與 MF 的概觀(MF 目標的推導在 B29 第 4 節已經展開過一次)。
- B30:連續時間 CM 的切向量與 JVP、CTM 的參數化 \(\mathbf g\) 與 γ 取樣。
- B12:flow matching 與 conditional flow matching 損失;B16:diffusion model 的各種等價參數化(§6.3)。
「書 §」標出原文位置。灰框「轉述者補充」是書裡沒有的內容;藍框「推導」展開書中省略的步驟。
01Mean Flow 的建模與訓練書 §11.5、§11.5.1
就像 diffusion model 有許多等價的參數化和訓練目標,一般的 flow map \(\bm\Psi_{s\to t}\) 也可以用好幾種合理的方式學。這一節介紹 Mean Flow(MF,Geng et al. 2025),它是一般 flow map 家族中較晚出現的代表,展示另一種有原則、能有效學到這種映射的觀點。
CM 和 CTM 建立在 EDM 的框架上,MF 則建立在 flow matching 的表述上(\(\alpha_t=1-t\)、\(\sigma_t=t\),\(t\in[0,1]\))。MF 不直接參數化 flow map,而是學區間 \([t,s]\)(\(t\lt s\))上的平均漂移:
對應的 oracle 損失是
$$\mathbb E_{t\lt s}\,\mathbb E_{\mathbf x_s\sim p_s}\Big[w(s)\,\big\|\mathbf h_{\bm\theta}(\mathbf x_s,s,t)-\mathbf h^*(\mathbf x_s,s,t)\big\|_2^2\Big].$$特別是當 \(s\to t\),損失函數化成 flow matching 損失,學的是瞬時速度:
$$\mathbb E_t\,\mathbb E_{\mathbf x_t\sim p_t}\Big[w(t)\,\big\|\mathbf h_{\bm\theta}(\mathbf x_t,t,t)-\mathbf v^*(\mathbf x_t,t)\big\|_2^2\Big].$$為什麼 \(s\to t\) 時平均速度變成瞬時速度
\(\frac{1}{t-s}\int_s^t\mathbf v^*(\mathbf x_u,u)\,du\) 是 \(\mathbf v^*\) 在區間上的平均。區間縮成一點時,平均值趨近那一點的值:\(\mathbf h^*(\mathbf x_s,s,s)=\mathbf v^*(\mathbf x_s,s)\)。這和 B30 第 8 節 CTM 的 \(\mathbf g^*(\mathbf x_s,s,s)=\mathbf x_s-s\mathbf v^*\) 是同一件事:兩種參數化在對角線上都還原 diffusion model。
第 3 節會看到 MF 仍然和 B29 的一般目標 \(\mathcal L_{\text{oracle}}\) 一致,只是從另一個(等價的)角度接近它。因為 oracle 的回歸目標 \(\mathbf h^*(\mathbf x_s,s,t)\) 一般沒有閉式,MF 利用一個恆等式構造替代目標:把
$$(t-s)\,\mathbf h^*(\mathbf x_s,s,t)=\int_s^t\mathbf v^*(\mathbf x_u,u)\,du$$對 \(s\) 微分,得到 MF 恆等式:
第二行用了連鎖律,以及 \(\frac{d}{ds}\mathbf x_s=\mathbf v^*(\mathbf x_s,s)\)。
MF 恆等式的推導
固定終點 \(t\),讓起點 \(s\) 沿同一條 PF-ODE 軌跡移動。
右邊:積分路徑不變,只有下限在動,\(\frac{d}{ds}\int_s^t\mathbf v^*(\mathbf x_u,u)\,du=-\mathbf v^*(\mathbf x_s,s)\)。
左邊:乘積法則,\(\frac{d}{ds}\big[(t-s)\mathbf h^*\big]=-\mathbf h^*+(t-s)\frac{d}{ds}\mathbf h^*\)。
兩邊相等:\(-\mathbf h^*+(t-s)\frac{d\mathbf h^*}{ds}=-\mathbf v^*\),所以 \(\mathbf h^*=\mathbf v^*+(t-s)\frac{d\mathbf h^*}{ds}=\mathbf v^*-(s-t)\frac{d\mathbf h^*}{ds}\)。全導數 \(\frac{d\mathbf h^*}{ds}\) 再用連鎖律拆成 \((\partial_{\mathbf x}\mathbf h^*)\frac{d\mathbf x_s}{ds}+\partial_s\mathbf h^*\),其中 \(\frac{d\mathbf x_s}{ds}=\mathbf v^*\)。
讀法:長區間的平均速度 = 起點的瞬時速度 − 一個修正項,修正項描述「起點沿軌跡滑動時,平均速度怎麼變」。區間越長(\(s-t\) 越大),修正越重要。第 6 節會看到這正是 Eulerian 恆等式換個參數化。
受這個恆等式啟發,MF 把拿不到的 oracle 換成一個 stop-gradient 的替代,得到實用的訓練目標:
其中回歸目標是
$$\mathbf h^{\text{tgt}}_{\bm\theta^-}(\mathbf x_s,s,t):=\mathbf v^*(\mathbf x_s,s)-(s-t)\Big[\underbrace{(\partial_{\mathbf x}\mathbf h_{\bm\theta^-})(\mathbf x_s,s,t)\,\mathbf v^*(\mathbf x_s,s)+\partial_s\mathbf h_{\bm\theta^-}(\mathbf x_s,s,t)}_{\text{JVP}}\Big].$$實務上 oracle 速度 \(\mathbf v^*\) 沒有閉式,必須近似。有兩種常見策略:依賴預訓練的 diffusion model(蒸餾),或直接從資料構造估計量(從頭訓練)。不管選哪一個,最後都要算目標網路 \(\mathbf h_{\bm\theta^-}\) 的 Jacobian–向量乘積(JVP):
$$\big[\partial_{\mathbf x}\mathbf h_{\bm\theta^-},\ \partial_s\mathbf h_{\bm\theta^-},\ \partial_t\mathbf h_{\bm\theta^-}\big]^\top\cdot\big[\mathbf v^*,\,1,\,0\big].$$(切向量裡 \(\mathbf x\) 的分量是 \(\mathbf v^*\)、\(s\) 的分量是 1、\(t\) 的分量是 0:起點沿軌跡走,終點不動。)
- 蒸餾:用以 flow matching 為骨幹的預訓練 diffusion model,\(\mathbf v_{\bm\phi^\times}\approx\mathbf v^*\)。
- 從頭訓練:用一點條件速度 \(\alpha'_s\mathbf x_0+\sigma'_s\bm\epsilon\),它來自正向加噪 \(\mathbf x_s=\alpha_s\mathbf x_0+\sigma_s\bm\epsilon\)(\(\bm\epsilon\sim\mathcal N(\mathbf 0,\mathbf I)\))。在配對的 \((\mathbf x_0,\bm\epsilon)\) 上取值時,它是 \(s\) 這個等級上瞬時漂移的無偏單樣本估計。(flow matching 時程下就是 \(\bm\epsilon-\mathbf x_0\)。)
從頭訓練時,一點速度放進了 JVP 的切向量裡(轉述者補充)
MF 從頭訓練時,一點速度出現在兩個地方:目標的第一項 \(\mathbf v^*\),以及 JVP 的切向量。後者讓目標對速度不再是線性的嗎?其實還是線性的:JVP \((\partial_{\mathbf x}\mathbf h)\mathbf v+\partial_s\mathbf h\) 對 \(\mathbf v\) 是線性的,所以整個 \(\mathbf h^{\text{tgt}}\) 對 \(\mathbf v\) 是仿射的。給定 \(\mathbf x_s\) 取條件期望,一點速度換成 \(\mathbf v^*\),期望目標和用精確速度時一樣。這和 B30 第 4 節「連續時間 CT 和 CD 期望相同」是同一個道理;差別只在變異數。
不過「期望相同」不代表「學到的結果相同」:平方損失對一個有雜訊的目標回歸,最小解是目標的條件平均,這部分沒問題;但訓練時間有限、網路有限,雜訊會影響最佳化。Demo A 可以比較一點速度、精確速度和 oracle 三種目標。
MF 論文的實際做法(Geng et al. 2025)
- 演算法:抽 \((r,t)\)、\(\bm\epsilon\),\(z=(1-t)x+t\bm\epsilon\),\(v=\bm\epsilon-x\);用
jvp(fn, (z, r, t), (v, 0, 1))同時得到 \(u\) 和 \(\frac{du}{dt}\);目標 \(u_{\text{tgt}}=v-(t-r)\frac{du}{dt}\) 加上 stopgrad。因為 \(\frac{du}{dt}\) 在 stopgrad 裡,不需要高階梯度,JVP 只多一次反向傳遞的成本。(論文記號裡 \(t\) 是出發、\(r\) 是到達,所以切向量寫成 \((v,0,1)\),和書的 \([\mathbf v^*,1,0]\) 是同一件事。) - \(r\ne t\) 的比例(ImageNet 256、B/4、80 epoch 的消融,1-NFE FID):0%(就是 flow matching)328.91;25% 61.06;50% 63.14;100% 67.32。預設 25%。
- JVP 的切向量:正確的 \((v,0,1)\) 是 61.06;換成 \((v,0,0)\)、\((v,1,0)\)、\((v,1,1)\) 分別是 268.06、329.22、137.96。
- 調適的損失權重:\(w=1/(\|\Delta\|_2^2+c)^p\)(\(\Delta\) 是誤差、\(c\) 例如 \(10^{-3}\),對 \(w\) 取 stopgrad);\(p\) = 0、0.5、1、1.5、2 的 FID 是 79.75、63.98、61.06、66.57、69.19,預設 \(p=1\)。
- 時間抽樣:logit-normal,預設 \(\text{lognorm}(-0.4,1.0)\),抽兩個值後大的當出發時間。
- 結果:ImageNet 256×256 從頭訓練,1-NFE FID 3.43,不需要預訓練、蒸餾或課程學習。
02Mean Flow 的取樣書 §11.5.2
訓練好 MF \(\mathbf h_{\bm\theta^\times}\) 之後,它自然地還原 flow map 的一個替身。對任何起點 \(\mathbf x_s\),從 \(s\) 到 \(t\) 的映射(近似)是
$$\bm\Psi_{s\to t}(\mathbf x_s)=\mathbf x_s+(t-s)\,\mathbf h^*(\mathbf x_s,s,t)\approx\mathbf x_s+(t-s)\,\mathbf h_{\bm\theta^\times}(\mathbf x_s,s,t).$$這讓一步和多步取樣都可行。例如抽 \(\mathbf x_T\sim p_{\text{prior}}\),一步生成乾淨樣本是
(flow matching 時程下 \(T=1\),就是「雜訊減去平均速度」。)另外,也可以準備一組時間格點、依序套用這個映射做多步生成,就像 CTM 的逐步推進。因為 MF 學的是一般的 flow map,它也支援 CTM 的 γ 取樣(B30 第 11 節),用一個可控的超參數 \(\gamma\) 在取樣過程中注入隨機性。
Demo A從頭訓練 Mean Flow轉述者補充
一維資料(權重 0.6 / 0.4、中心 −1.2 / 1.3、標準差 0.25 / 0.35),flow matching 時程 \(x_s=(1-s)x_0+s\epsilon\)。網路 \(h_{\bm\theta}(x,s,t)\) 是 3→32→32→1 的 tanh MLP,輸入就是 \((x,s,t)\)。每個樣本:\((s,t)\) 從 logit-normal(−0.4, 1) 抽兩次、大的當 \(s\);以「\(s\ne t\) 的比例」決定要不要令 \(t=s\)(那時就是 flow matching)。目標用 MF 恆等式(stop-gradient),JVP 用前向模式自動微分。6,000 次更新、批次 64、Adam \(10^{-3}\)(最後 30% 乘 0.3),評估用參數的滑動平均(0.995);起點是 \(p_1=\mathcal N(0,1)\) 的 2,000 個分層分位數,一步生成 \(x_0=x_1-h(x_1,1,0)\)。
「oracle h*」那一項不用恆等式,目標是用 RK4 精確解 PF-ODE 算出的 \((\bm\Psi_{s\to t}(x_s)-x_s)/(t-s)\),作為「替代目標本身造成多少損失」的對照。瀏覽器實測(固定種子,同一個瀏覽器重跑結果一樣)。\(p=0\) 的各組和 Node 原型逐位相同;\(p=1\) 的權重 \(1/(|\Delta|^2+10^{-3})\) 在誤差很小時可以放大到上千倍,浮點末位的差別會被放大,所以和 Node 差在小數第 2 位(例如論文預設那一組 Node 是 0.234):
| 設定 | 一步 | 兩步 | 對角線 16 步 |
|---|---|---|---|
| 一點速度、25%、(v,1,0)、p = 1(論文預設) | 0.249 | 0.267 | 0.199 |
| 一點速度、25%、p = 0 | 0.171 | 0.181 | 0.106 |
| 一點速度、100%、p = 1 | 0.198 | 0.195 | 0.150 |
| 一點速度、100%、p = 0 | 0.118 | 0.118 | 0.123 |
| 一點速度、0%(純 FM)、p = 1 | 0.420 | 0.287 | 0.183 |
| 一點速度、25%、(v,0,0)、p = 1 | 0.669 | 0.231 | 0.176 |
| 精確速度、25%、p = 1 | 0.212 | 0.166 | 0.095 |
| oracle h*、25%、p = 0 | 0.153 | 0.085 | 0.085 |
- 兩種失敗和論文一致。沒有 \(s\ne t\) 的配對(純 flow matching)時,\(h(x_1,1,0)\) 從來沒被訓練到,一步生成失敗(0.420)。JVP 漏掉 \(\partial_s h\) 那一項時,目標根本不是 MF 恆等式,一步更糟(0.669)。用另外兩個種子(7、13,Node)重跑,這兩組分別是 0.810、1.112 和 0.792、0.954,失敗很穩定。
- 兩個論文預設在一維不是最好的。這個小例子裡,100% 的 \(s\ne t\) 比 25% 好,\(p=0\) 比 \(p=1\) 好。調適權重 \(1/(|\Delta|^2+c)\) 在一維幾乎把誤差正規化成正負號,和 B30 Demo B 的切向量正規化是同一個現象。論文的消融是 ImageNet 上的結果,這裡只說明「預設值不一定能搬到別的問題」。
- 種子的影響不小。論文預設那一組,種子 1 在瀏覽器是 0.249,另外兩個種子(7、13,Node)是 0.274、0.426;「100%、p = 0」是 0.118、0.141、0.157。所以只有上面「失敗」的兩組差距遠大於種子的影響;其他排序要謹慎看。
- 替代目標有代價,但不大。直接回歸 oracle \(h^*\) 是 0.153(兩步 0.085),一點速度加恆等式的最好設定是 0.118;兩者在同一個量級,種子變異內難分高下。
- 對角線就是 flow matching 模型。只用 \(h(x,s,s)\) 當速度跑 16 步 Euler,也能生成(上表大多在 0.09–0.2)。
03CTM 和 MF 的關係書 §11.5.3
乍看之下 CTM 和 MF 似乎無關。其實兩者是同一個 oracle flow map \(\bm\Psi_{s\to t}\) 的不同參數化,它們對應的平方 oracle 回歸誤差只差一個隨時間變化的權重(Hu et al. 2025)。
參數化的關係
兩個方法在同一個一般框架下運作,只是用不同方式表示要學的函數。flow map 可以等價地寫成
$$\begin{aligned}\bm\Psi_{s\to t}(\mathbf x_s)&=\mathbf x_s+\int_s^t\mathbf v^*(\mathbf x_u,u)\,du\\&=\frac ts\,\mathbf x_s+\frac{s-t}{s}\underbrace{\Big[\mathbf x_s+\frac{s}{s-t}\int_s^t\mathbf v^*(\mathbf x_u,u)\,du\Big]}_{\approx\ \mathbf g_{\bm\theta}}\\&=\mathbf x_s+(t-s)\underbrace{\Big[\frac{1}{t-s}\int_s^t\mathbf v^*(\mathbf x_u,u)\,du\Big]}_{\approx\ \mathbf h_{\bm\theta}}.\end{aligned}$$第一行是 flow map 的定義,第二行強調 CTM 透過 \(\mathbf g_{\bm\theta}\) 的參數化(B30 第 8 節),最後一行強調 MF 透過 \(\mathbf h_{\bm\theta}\) 的參數化。
訓練損失的關係
把 oracle flow map 用 CTM 參數化 \(\mathbf g_{\bm\theta}\approx\mathbf g^*:=\mathbf x_s+\frac{s}{s-t}\int_s^t\mathbf v^*\,du\) 和 MF 參數化 \(\mathbf h_{\bm\theta}\approx\mathbf h^*:=\frac{1}{t-s}\int_s^t\mathbf v^*\,du\) 重新解讀之後,可以證明兩者的訓練損失其實等價。考慮關係
$$\mathbf g_{\bm\theta}(\mathbf x_s,s,t):=\mathbf x_s-s\,\mathbf h_{\bm\theta}(\mathbf x_s,s,t),$$並以 \(d(\mathbf x,\mathbf y):=\|\mathbf x-\mathbf y\|^2\) 為例。代進 B29 的一般目標,把 \(\mathbf G_{\bm\theta}\) 看成 CTM 的 flow map 參數化,得到
$$\begin{aligned}d\big(\mathbf G_{\bm\theta}(\mathbf x_s,s,t),\bm\Psi_{s\to t}(\mathbf x_s)\big)&=\Big(\frac{s-t}{s}\Big)^2\Big\|\mathbf g_{\bm\theta}(\mathbf x_s,s,t)-\Big(\mathbf x_s+\frac{s}{s-t}\int_s^t\mathbf v^*\,du\Big)\Big\|^2\\&=(s-t)^2\Big\|\mathbf h_{\bm\theta}(\mathbf x_s,s,t)-\frac{1}{t-s}\int_s^t\mathbf v^*\,du\Big\|^2.\end{aligned}$$逐行展開
第一個等號。\(\mathbf G_{\bm\theta}=\frac ts\mathbf x_s+\frac{s-t}{s}\mathbf g_{\bm\theta}\),而 \(\bm\Psi_{s\to t}=\frac ts\mathbf x_s+\frac{s-t}{s}\mathbf g^*\)。相減時 \(\frac ts\mathbf x_s\) 抵消,剩 \(\frac{s-t}{s}(\mathbf g_{\bm\theta}-\mathbf g^*)\),平方範數提出 \((\frac{s-t}{s})^2\)。
第二個等號。代入 \(\mathbf g_{\bm\theta}=\mathbf x_s-s\mathbf h_{\bm\theta}\):
$$\mathbf g_{\bm\theta}-\mathbf g^*=-s\,\mathbf h_{\bm\theta}-\frac{s}{s-t}\int_s^t\mathbf v^*\,du=-s\Big(\mathbf h_{\bm\theta}-\frac{1}{t-s}\int_s^t\mathbf v^*\,du\Big)=-s\,(\mathbf h_{\bm\theta}-\mathbf h^*),$$(用了 \(-\frac{1}{s-t}=\frac{1}{t-s}\)。)所以 \((\frac{s-t}{s})^2\cdot s^2\|\mathbf h_{\bm\theta}-\mathbf h^*\|^2=(s-t)^2\|\mathbf h_{\bm\theta}-\mathbf h^*\|^2\)。
(轉述者註:書的這段推導有一行原樣重複了兩次,是排版上的小疏失,不影響結果。)
因此
撇開學 flow map 的具體演算法不談,CTM 和 MF 的損失有相同的數學形式,只差一個權重函數。此外,兩者取 \(t=0\) 都還原 CM 的設定(\(\bm\Psi_{s\to0}\)),每個狀態直接送到乾淨資料。
實務上的輔助損失
CTM 用 B30 第 9 節的一致性損失,加上它自己定義的 diffusion model 損失一起訓練。MF 採用類似的策略:如第 1 節,\(s\to t\) 時 MF 損失化成標準的 flow matching 目標。實務上 MF 控制 \(s\ne t\) 和 \(s=t\) 兩種配對的比例,所以整體最佳化是 MF 目標和 flow matching 目標的混合。
兩種參數化都能從 diffusion model 的訓練(以固定的回歸目標學瞬時速度)平滑地過渡到 flow map 的學習(用 stop-gradient 的偽回歸目標)。
兩種參數化都能彈性推論
CTM 的 \(\mathbf G_{\bm\theta}(\mathbf x_s,s,t)\) 和 MF 的 \(\mathbf h_{\bm\theta}(\mathbf x_s,s,t)\) 都要近似底層的 flow map:
$$\mathbf G_{\bm\theta}(\mathbf x_s,s,t)\approx\bm\Psi_{s\to t},\qquad\mathbf x_s+(t-s)\,\mathbf h_{\bm\theta}(\mathbf x_s,s,t)\approx\bm\Psi_{s\to t}.$$因為兩者都學任意兩個時間之間的明確映射,它們自然支援 CTM 的 γ 取樣,也和原本為 diffusion model 發展的推論技巧相容,例如 guidance(第 8 章)、精確 likelihood 計算(§4.3)、高階解法加速取樣(第 9 章)。這種相容性來自:在無窮小極限 \(t\to s\),它們的參數化還原瞬時的 diffusion 漂移:
$$\mathbf g^*(\mathbf x_s,s,s)=\mathbf x_s-s\,\mathbf v^*(\mathbf x_s,s),\qquad\mathbf h^*(\mathbf x_s,s,s)=\mathbf v^*(\mathbf x_s,s).$$CM 家族這種特殊的 flow map \(\bm\Psi_{s\to0}\) 沒有這個性質。所以 CTM 和 MF 都可以看成有彈性、一般的 flow map 表述,把以 diffusion 為基礎的推論推廣到直接的時間到時間映射。
04積分形式與微分形式書 §11.5.3
CTM 和 MF 的關係,類似 diffusion model 不同參數化之間的關係(§6.3,B16):在 oracle 層級,它們編碼同一個底層的 flow map。在平方誤差回歸和上面的參數化關係下,它們的 oracle 回歸誤差只差一個已知的、隨時間變化的縮放。但它們的實際訓練目標仍然不同,因為用的替代目標和最佳化程序不同。
雖然 CTM 和 MF 有這樣的關係,它們在怎麼學目標上,概念和演算法都不同:
- CTM 的目標是「積分」形式:直接作用在 flow map 上。積分形式的目標不能直接計算,所以 CTM 訓練時必須解 ODE(老師或自己誘導的老師)。
- MF 的目標是「微分」形式:依賴 flow map 的有限差分。MF 用 MF 恆等式構造一個可計算的微分形式目標,不需要解 ODE。
這個關係類似 energy-based 和 score-based 方法之間的關係:前者學機率密度本身(積分形式),後者匹配密度的梯度(微分形式)。實務上,CTM 和 MF 可能因為損失權重、網路架構、最佳化動態等因素而表現不同,在某些條件下其中一個會比另一個好。
這個觀點也提示:CTM 和 MF 不是唯一可行的表述。其他 flow map 的參數化也可能做到有效率又穩定的訓練,帶來新的獨立生成模型。探索這些替代方案,可能會進一步豐富 diffusion model 和它們的 flow map 延伸,推進少步生成的邊界。
energy 與 score 的類比,具體在說什麼(轉述者補充)
05第 11 章結語:同一個 flow map書 §11.6
這最後一章讓我們的探索繞了一圈:從慢的反覆 diffusion 取樣器,到(從頭學的)快速少步生成器。本章各方法背後的共同物件,是 B29 介紹的 oracle flow map:
$$\bm\Psi_{s\to t}(\mathbf x_s)=\mathbf x_s+\int_s^t\mathbf v^*(\mathbf x_\tau,\tau)\,d\tau.$$學這個映射,就是用一次或少數幾次學到的跳躍,取代許多小的數值更新。
這時值得從個別演算法退一步看。Knowledge Distillation(B28)、Progressive Distillation(B28)、CM(B29)、CTM(B30)、MF(本頁)是透過不同的訓練構造介紹的,但它們都明確或隱含地利用同一個 ODE 解映射的結構。
flow map 本身是微分方程與動力系統裡的古典物件,在連續介質與流體力學裡有密切相關的「以粒子為主」和「以場為主」的描述(B09 的歷史說明)。這裡用同一個 ODE flow 的三種古典描述:半群、Lagrangian、Eulerian,作為整理上面這些現代學習方法的透鏡。
書的註腳:在現代生成模型裡,Boffi et al. (2024) 把 PD、CM、CTM、MF 裡已經出現的結構想法整合起來,用共同的語言描述 diffusion PF-ODE flow map 的學習;主要的成分大多來自這些既有的研究線。本節的呈現和圖也參考了 Dieleman (2026) 的說明(部落格〈Learning the integral of a diffusion model〉)。
半群觀點:把旅程切段
如 B29 第 6 節,有限步的恆等式是
$$\bm\Psi_{u\to t}\big(\bm\Psi_{s\to u}(\mathbf x_s)\big)=\bm\Psi_{s\to t}(\mathbf x_s).$$直覺和沿一條固定路線旅行一樣:從 \(s\) 到 \(u\)、再從 \(u\) 到 \(t\),和直接從 \(s\) 到 \(t\) 落在同一點。在這個觀點下:
- KD 學完整的轉移 \(\bm\Psi_{T\to0}\);
- PD 把相鄰的兩個老師步壓成一個學生步;
- CM 學特殊的「任意時間到乾淨資料」映射 \(\bm\Psi_{s\to0}\);
- CTM 把同樣的複合原則延伸到一般的映射 \(\bm\Psi_{s\to t}\)。
06Lagrangian 與 Eulerian 觀點書 §11.6
Lagrangian 觀點:移動終點
固定起點的狀態與時間 \((\mathbf x_s,s)\),改變終點時間 \(t\)。終點就沿同一條軌跡移動:
「Lagrangian」這個名字來自古典的粒子觀點:終點時間改變時,追蹤沿軌跡移動的終點。在無窮小尺度下,終點以那一點的局部 ODE 速度移動。
Eulerian 觀點:移動起點
固定終點時間 \(t\),讓起點沿同一條軌跡滑動。時間 \(t\) 的終點保持不動:
$$\frac{d}{ds}\bm\Psi_{s\to t}(\mathbf x_s)=\mathbf 0.$$因為 \(\frac{d}{ds}\mathbf x_s=\mathbf v^*(\mathbf x_s,s)\),連鎖律給出
「Eulerian」這個詞借用古典的以場為主的觀點:這裡終點時間 \(t\) 固定,起點的狀態與時間 \((\mathbf x_s,s)\) 沿同一條 ODE 軌跡移動,所以時間 \(t\) 的終點不變。對 CM,終點時間固定在 \(t=0\),終點就是乾淨樣本:
$$\mathbf f^*(\mathbf x_s,s)=\bm\Psi_{s\to0}(\mathbf x_s).$$所以 B30 第 2 節的連續時間條件,正是 B29、B30 研究的這個特殊 flow map 的「起點時間一致性」條件。
用 Eulerian 觀點回顧 CTM 與 MF
這個觀點也總結了第 3 節 CTM 和 MF 的關係。兩者近似同一個路徑積分 \(\bm\Psi_{s\to t}(\mathbf x_s)=\mathbf x_s+\int_s^t\mathbf v^*(\mathbf x_\tau,\tau)\,d\tau\),但提供不同的可訓練替代量。CTM 用位移式的參數化表示終點,MF 用平均漂移 \(\mathbf h^*(\mathbf x_s,s,t)=\frac{1}{t-s}\int_s^t\mathbf v^*\,d\tau\) 表示同一個終點。把
$$\bm\Psi_{s\to t}(\mathbf x_s)=\mathbf x_s+(t-s)\,\mathbf h^*(\mathbf x_s,s,t)$$代進 Eulerian 的起點時間恆等式,得到
$$\mathbf h^*(\mathbf x_s,s,t)=\mathbf v^*(\mathbf x_s,s)-(s-t)\Big[\partial_s\mathbf h^*(\mathbf x_s,s,t)+(\partial_{\mathbf x}\mathbf h^*)(\mathbf x_s,s,t)\,\mathbf v^*(\mathbf x_s,s)\Big].$$這就是基本的 Mean Flow 恆等式:長區間上的平均漂移,等於起點的瞬時漂移,再修正「起點沿同一條軌跡滑動時,平均漂移怎麼變」。
代進去的那一步
\(\frac{d}{ds}\big[\mathbf x_s+(t-s)\mathbf h^*\big]=\mathbf v^*-\mathbf h^*+(t-s)\frac{d\mathbf h^*}{ds}=\mathbf 0\)(第一項來自 \(\frac{d\mathbf x_s}{ds}=\mathbf v^*\),第二項來自 \(\frac{d}{ds}(t-s)=-1\))。移項得 \(\mathbf h^*=\mathbf v^*+(t-s)\frac{d\mathbf h^*}{ds}\),再展開全導數。結果和第 1 節「對積分式微分」完全一樣,只是出發點換成 Eulerian 恆等式。
07三種觀點的等價書 §11.6
對精確的 ODE flow,半群、Lagrangian、Eulerian 三個恆等式表達的是同一個簡單原則:在標準的存在性、唯一性和光滑性假設下,ODE 通過每一個「狀態–時間」點只決定一條軌跡。也就是說,一旦固定某個時間的狀態,只有一條路可走。半群觀點把這條路切成相連的幾段;Lagrangian 觀點在終點時間改變時追蹤終點;Eulerian 觀點讓起點沿同一條路移動、保持終點不變。所以三個恆等式是同一個 ODE flow 的等價描述(Arnold 1988;Chorin & Marsden 1993)。把半群恆等式看成有限區間的敘述,Lagrangian 和 Eulerian 恆等式看成它的兩種無窮小形式(分別在終點附近或起點附近把一小段區間縮小),它們的關聯就特別清楚。
半群恆等式是這個原則的有限區間形式:
$$\bm\Psi_{u\to t}\big(\bm\Psi_{s\to u}(\mathbf x_s)\big)=\bm\Psi_{s\to t}(\mathbf x_s),\qquad\bm\Psi_{s\to s}=\mathbf I.$$兩種微分觀點,就是把其中一段區間縮小。
終點時間的極限:Lagrangian 恆等式
固定起點 \((\mathbf x_s,s)\),縮小旅程的最後一段。對 \(\Delta t>0\),
$$\bm\Psi_{t\to t-\Delta t}\big(\bm\Psi_{s\to t}(\mathbf x_s)\big)=\bm\Psi_{s\to t-\Delta t}(\mathbf x_s).$$令 \(\mathbf x_t:=\bm\Psi_{s\to t}(\mathbf x_s)\)。短程 flow 的一階展開是
$$\bm\Psi_{t\to t-\Delta t}(\mathbf x_t)=\mathbf x_t-\Delta t\,\mathbf v^*(\mathbf x_t,t)+\mathcal O\big((\Delta t)^2\big).$$因此
$$\frac{\bm\Psi_{s\to t-\Delta t}(\mathbf x_s)-\bm\Psi_{s\to t}(\mathbf x_s)}{-\Delta t}=\mathbf v^*(\mathbf x_t,t)+\mathcal O(\Delta t).$$令 \(\Delta t\to0\),得到 Lagrangian 恆等式 \(\partial_t\bm\Psi_{s\to t}(\mathbf x_s)=\mathbf v^*(\bm\Psi_{s\to t}(\mathbf x_s),t)\)。起點固定、終點時間改變時,終點以那一點的 ODE 速度移動。
起點時間的極限:Eulerian 恆等式
固定終點時間 \(t\),把起點沿同一條軌跡往回移一小段 \(\Delta s>0\):
$$\mathbf x_{s-\Delta s}:=\bm\Psi_{s\to s-\Delta s}(\mathbf x_s)=\mathbf x_s-\Delta s\,\mathbf v^*(\mathbf x_s,s)+\mathcal O\big((\Delta s)^2\big).$$半群恆等式給出 \(\bm\Psi_{s-\Delta s\to t}(\mathbf x_{s-\Delta s})=\bm\Psi_{s\to t}(\mathbf x_s)\)。把左邊對起點的狀態和時間都展開:
$$\bm\Psi_{s-\Delta s\to t}(\mathbf x_{s-\Delta s})=\bm\Psi_{s\to t}(\mathbf x_s)-\Delta s\,\big(\partial_{\mathbf x}\bm\Psi_{s\to t}\big)(\mathbf x_s)\,\mathbf v^*(\mathbf x_s,s)-\Delta s\,\partial_s\bm\Psi_{s\to t}(\mathbf x_s)+\mathcal O\big((\Delta s)^2\big).$$和半群恆等式比較、除以 \(-\Delta s\):
$$\partial_s\bm\Psi_{s\to t}(\mathbf x_s)+\big(\partial_{\mathbf x}\bm\Psi_{s\to t}\big)(\mathbf x_s)\,\mathbf v^*(\mathbf x_s,s)=\mathcal O(\Delta s).$$令 \(\Delta s\to0\),得到 Eulerian 恆等式。終點時間固定、起點沿同一條軌跡移動,所以終點不變。
從任一個微分恆等式還原 flow map
反過來,任一個微分恆等式加上邊界條件 \(\bm\Psi_{s\to s}=\mathbf I\),都還原同一個 flow map:
- Lagrangian 恆等式從 \(\bm\Psi_{s\to s}(\mathbf x_s)=\mathbf x_s\) 出發,把終點往前推(它本身就是一條以終點為未知數的 ODE)。
- Eulerian 恆等式說 \(\bm\Psi_{\tau\to t}(\mathbf x_\tau)\) 沿特徵線 \(\mathbf x_\tau=\bm\Psi_{s\to\tau}(\mathbf x_s)\) 是常數,所以 \(\bm\Psi_{s\to t}(\mathbf x_s)=\bm\Psi_{t\to t}(\mathbf x_t)=\mathbf x_t\)。
雖然這些觀點在 oracle 層級等價,一旦引入近似,它們會導出不同的實際演算法:必須選擇要強制哪一個恆等式、stop-gradient 目標放在哪裡、怎麼抽時間對、怎麼參數化映射。
本章各方法各自強制的是哪個恆等式(轉述者整理)
| 方法 | 學的映射 | 強制的恆等式 | 目標從哪來 |
|---|---|---|---|
| KD(B28) | \(\bm\Psi_{T\to0}\) | 直接回歸(積分形式) | 老師解完整個 ODE |
| PD(B28) | 每輪的 \(\bm\Psi_{t_k\to t_{k+2}}\) | 半群(相鄰兩步合一) | 老師的兩步 |
| 離散 CM(B29) | \(\bm\Psi_{s\to0}\) | 半群(\(u=s-\Delta s\)、\(t=0\)) | 老師一步 DDIM 或一點估計 |
| 連續 CM/sCM(B30) | \(\bm\Psi_{s\to0}\) | Eulerian(\(t=0\)) | 切向量(JVP) |
| CTM(B30) | \(\bm\Psi_{s\to t}\) | 半群(\(u\in[t,s)\)) | 老師或自己誘導的 ODE 解法 |
| MF(本頁) | \(\bm\Psi_{s\to t}\)(經由 \(\mathbf h\)) | Eulerian | MF 恆等式(JVP) |
書在本章正文沒有介紹以 Lagrangian 恆等式訓練的方法;這張表只整理本章出現過的那些。
Demo B一條軌跡上的三個恆等式轉述者補充
同一個一維資料、flow matching 時程,PF-ODE 速度 \(v^*(x,s)=(x-\mathbb E[x_0\mid x_s])/s\) 精確計算,flow map 用 400 步 RK4 解。橫軸是 \(s\)(左邊 0 是資料,右邊 1 是雜訊),灰線是幾條精確軌跡,黑線是選定的那條(用它在 \(s=10^{-4}\) 的位置來選)。在 \(x_s\)(黑點)畫出瞬時速度(藍色短線,斜率 \(v^*\))和平均速度(橙色虛線,從 \(x_s\) 連到 \(\bm\Psi_{s\to t}(x_s)\) 的弦,斜率 \(h^*\))。讀數用中央差分(步長 \(10^{-3}\))檢查三個恆等式。
讀數(瀏覽器實測,和 Node 原型逐位相同):
- 瞬時速度和平均速度可以差很多。預設(軌跡 1、\(s=0.8\)、\(t=0.2\)):\(v^*=0.4752\),\(h^*=-0.6627\),連正負號都不同。軌跡在這一段是彎的:在 \(s=0.8\) 附近往 \(s\) 大的方向是上升的,但從 0.8 走回 0.2,整體是往上走 0.397。所以一步用瞬時速度(Euler)會走錯方向,MF 要學的是弦的斜率。
- MF 恆等式成立。\(v^*-(s-t)\frac{dh^*}{ds}=-0.6627\),和 \(h^*\) 差 \(1.5\times10^{-6}\)(差分誤差的大小)。其他兩組:(軌跡 −1.2、\(s=0.5\)、\(t=0\))差 \(2.8\times10^{-6}\);(軌跡 0.9、\(s=1\)、\(t=0\))差 \(6.1\times10^{-7}\)。
- Lagrangian 與 Eulerian。預設下 \(\partial\Psi/\partial t=-1.5540\),和終點的 \(v^*(\Psi,t)=-1.5540\) 相同;起點沿軌跡滑動時 \(d\Psi/ds=1.1\times10^{-10}\),也就是終點不動。
- \(t=0\) 時就是 CM。把 \(t\) 拉到 0,\(\Psi\) 回到選定的端點(例如 1.0000),CTM 的 \(g^*=x_s-s\,h^*\) 也幾乎等於它(差在小數第 4 位,因為數值上終點取 \(t=10^{-4}\)):在 \(t=0\),\(\mathbf G(\mathbf x_s,s,0)=\mathbf g\),三種參數化都在描述 consistency function。
08結語書 §11.6
本章探索的核心轉變,是從學一個局部的速度場,轉向學它的 ODE 解映射的有限片段。傳統的 diffusion 取樣器反覆計算局部場、做數值積分;flow map 模型則在訓練時把一部分積分「攤銷」掉,讓一個長區間可以用一次或少數幾次網路計算走完。
這開出一條通往快速生成的直接路線,但把困難從取樣搬到了學習。模型必須近似一個更全域的物件,它的成敗取決於映射的參數化、可計算目標的構造、時間對的抽樣和權重,以及最佳化的穩定。
這樣看來,flow map 學習不是一個新的動力學概念,而是建立在古典概念上的現代學習策略。它保留了 diffusion model 以軌跡為基礎的根本,同時擴大了高效生成的設計空間。目標不再只是在推論時更有效率地積分生成 ODE,而是直接學到它的解映射中有用的有限時間轉移。
轉述者註:B29、B30 和這一頁的 demo 一路量到這個「困難搬家」:CT 的有限格點偏差、大 \(N\) 收斂慢(B29)、sCM 的切向量爆炸(B30)、MF 漏掉 \(\partial_s\) 或缺少 \(s\ne t\) 配對就失敗(本頁)。取樣端都只要一兩次網路計算,麻煩全在訓練端。