U7.1 Flow Map Matching:三條恆等式,三種損失
本篇重用M0.3漂流的溫度計:全導數、微分穿過積分與 JVP·M2.1從一片葉子到一群葉子:Flow Map 與 Pushforward·M1.1從鞋子猜身高:Conditional Expectation
從條件到損失
上一篇的四個條件是判準:拿一個 來,能檢查它合不合格。要拿它們訓練,得把「合格」變成一個可以對 微分的數。Boffi、Albergo 與 Vanden-Eijnden 的 Flow Map Matching [1] 把這件事做得很系統:條件四有兩種微分方式,條件三本身就是一條等式,於是有三條恆等式、三種損失。這一篇逐一看它們,重點放在一個問題上——速度場 在哪一個點被需要? 因為這決定了能不能用 U2.2 的條件速度代替,也就決定了要不要 teacher。
第一條:Lagrangian——跟著輸出點走
條件四寫的是 。固定輸入 ,讓目標時間 動,輸出點 就像一顆粒子沿軌跡前進,它的速度必須等於那一點的速度場。這是粒子的觀點——跟著它走——所以叫 Lagrangian。損失:
速度場在輸出點被需要。這是麻煩的地方: 是網路算出來的一個位置,我們手上沒有任何一組 的直線恰好經過它——U2.3 Q1 說過邊際軌跡不是任何一條條件直線。所以這裡的 只能來自一個已經訓好的速度場:Lagrangian 損失是 distillation 專用的。
第二條:Eulerian——固定輸出,讓輸入沿軌跡動
換一個角度微分。取一條軌跡 ,看 :不論從軌跡上哪一點出發,跳到 都是同一個位置。所以沿著軌跡對 的全導數是零:
(全導數的展開是 U6 用 JVP 算 時的同一條式子: 隨 動,速度是 。)這次是場的觀點——把 看成定義在 上的一個場,要求它沿著每條軌跡是常數,就像 U2.1 把「粒子怎麼走」翻成「密度怎麼變」那樣——所以叫 Eulerian。
速度場在輸入點 被需要。而輸入點是我們自己造的:,手上就有這組 ,條件速度 現成可用。這就是 consistency training 能拿掉 teacher 的原因,這個單元從頭訓練的方法也全部走這條路。Eulerian 是能夠不要 teacher 的那一條。 怎麼代替才在期望上精確,下面的展開框先說一半,下一篇 U7.2 的 Q1 說完。
展開細節用條件速度代替時的一個陷阱:squared loss 直接代會多出一項
把 直接換成 塞進 squared loss: 。 記 ,它給定 的條件期望是零——那正是邊際速度 的定義(U2.2 定理 2 的交叉項用的也是這一條)。展開:
交叉項因 消失,但第二項依賴 ——它在懲罰 的 Jacobian,會把最小值拉偏。這和 U2.2 的情形不同:那裡的 是「被回歸的量」,條件速度是「目標」,變異數項不含 ;這裡 卻乘在 上。
解法是把含 的部分移到 stop-gradient 的目標裡,讓目標對 是線性的。U6.3 的 consistency training、U6.4 的 sCM 都是這個結構:把 (用條件速度算的)整個當成不回傳梯度的目標。這時 squared loss 對隨機目標取期望,等於對目標的條件期望回歸再加一個與 無關的常數——這就是 U1.2 的 conditional trick,代換在期望上精確。下一篇 MeanFlow 的 Q1 會把這句話說完整。
課堂提問Q1
三條恆等式都在說同一件事( 沿軌跡不變),但只有 Eulerian 那一條可以不用 teacher。
差別到底在哪裡?從「速度場在哪一個點被需要」去看。
先想一想,再展開看整理後的答案
把三條並排,只看 出現在哪個位置:
| 恆等式 | 被需要的位置 | 那個點是誰造的 |
|---|---|---|
| Lagrangian | 輸出點 | 網路的輸出——我們沒有它的 |
| Eulerian | 輸入點 | 我們自己造的: |
| progressive | 不需要 ,但需要 自己走中間那一段 | 網路的輸出 |
關鍵是第三欄。條件速度 只有在「我知道這個點是由哪一組 造出來的」時候才拿得到。輸入點是我們自己插值出來的,所以那組端點就在手上;輸出點是網路吐出來的,我們不知道它落在哪一條條件直線上,只能去問一個已經學會速度場的 teacher。
所以「要不要 teacher」不是這三條恆等式的附帶性質,而是由「 被求值的位置」直接決定的。這一欄也解釋了下一篇為什麼走得通:MeanFlow 換了座標,但 仍然只在輸入點被需要。
(progressive 那一列是另一種依賴:它不要 teacher 的 ,但要學生自己先會走 那一段,所以是 bootstrapping——U7.3 的 Shortcut 就付這個代價。)
第三條:progressive——兩小步等於一大步
條件三不用微分,本身就是等式:
損失就是兩邊的距離。它完全不出現速度場——這是它最特別的地方。那動力學的資訊從哪裡進來?從最小的那一步:兩個時間很近時,條件四說 。所以 progressive 損失一定要配一個「底層」:要嘛底層由 teacher 提供(U6.1:teacher 走兩小步、學生學一大步,一輪一輪把步數減半),要嘛底層是 flow matching 自己(本單元的 Shortcut:步長為零時就是 FM 損失),從小步一路 bootstrap 到大步。
代價是誤差累積:每一級大步都以上一級小步為目標,小步的誤差會一級一級往上帶。U6.1 的逐輪退化與 U3.3 reflow 的多輪誤差是同一件事。
三條恆等式,各自要什麼
現在可以把 U6 和本單元的方法排在一起。每一列的讀法:這個方法學的是 flow map 的哪一片、用哪條恆等式、 用什麼估計、要不要 teacher。
| 方法 | 學的物件 | 恆等式 | 的估計量 | teacher |
|---|---|---|---|---|
| Flow matching(U2.2) | 本身 | 條件四的無窮小極限 | 條件速度 | 否 |
| Reflow(U3.3) | (新配對) | 同上 | ODE 配對下的 | 上一輪的自己 |
| Progressive distillation(U6.1) | ,離散步 | progressive | teacher 走兩小步 | 是 |
| Consistency distillation(U6.3) | Eulerian,離散化 | teacher 走一步到 | 是 | |
| Consistency training(U6.3) | Eulerian,離散化 | 條件重插值 ; 曲率 bias | 否 | |
| sCM(U6.4) | Eulerian,連續(JVP) | 條件速度,放在 stop-gradient 目標裡 | 否 | |
| CTM(U7.0) | progressive,第一段交給 teacher | teacher solver | 是 | |
| MeanFlow(下一篇) | 平均速度 ,等價於 | Eulerian,連續,換到 座標 | 條件速度,目標對 線性 | 否 |
| Shortcut(下下篇) | progressive; 是 FM | 自己的兩小步; 用條件速度 | 否 | |
| Align Your Flow(下下篇) | Eulerian 與 Lagrangian,連續 | teacher 的 | 是 |
不要 teacher 的方法全部在 Eulerian 那一欄,或在 progressive 配 FM 底層那一欄——因為只有這兩種寫法讓 出現在我們自己造的點上。consistency model 家族學的都是 這一片;把第二個時間放開,方法本身幾乎不用改。而 U6.3 那個 的曲率 bias 出現在「離散化」的那幾列;連續版(sCM、MeanFlow)把差分換成導數,bias 消失,代價是要算 JVP。下一篇就是這一列。
先消化一下
參考文獻
- Boffi, N. M., Albergo, M. S., Vanden-Eijnden, E. Flow Map Matching. 2024.(Lagrangian、Eulerian、progressive 三種損失的來源;與 CM、progressive distillation 的對應。)
- Salimans, T., Ho, J. Progressive Distillation for Fast Sampling of Diffusion Models. ICLR 2022.(progressive 恆等式配 teacher 底層。)
- Song, Y., Dhariwal, P., Chen, M., Sutskever, I. Consistency Models. ICML 2023.(Eulerian 恆等式在 、離散化。)
- Kim, D. et al. Consistency Trajectory Models. ICLR 2024.(progressive 恆等式、第一段交給 teacher。)