U7.0 不回到終點,能不能直接跳到中間?
本篇重用M2.0河面上的箭頭:Vector Field 與 ODE·M2.1從一片葉子到一群葉子:Flow Map 與 Pushforward
上一個單元留下的病根
U6.5 收在一個問題上。Consistency model 學到的是 :把軌跡上任何一點直接送到資料端。一步生成就是 。想多花幾步換品質,唯一的辦法是:跳到資料端、重新加噪聲到某個中間時刻、再跳一次。實驗上多花步數的增益很快就小下去,而且 ODE 那個「多走幾步誤差就小」的保證在那裡不成立。那一篇給了三個理由——每次重新加噪都是一次獨立配對,把 U2.3 Q1 的交叉問題重新請回來,所以整個程序不在逼近任何連續極限;每一跳的誤差都是滿的,最後一跳的誤差不會因為前面多跳了幾次而變小;而 是確定映射、沒有 score,所以也沒有 U3.1 那種把偏掉的樣本拉回來的機制。
把三個理由並排看,會發現它們指向同一個動作:「回到終點再加噪」。跳回終點是浪費——我們本來只想前進一小段;重新加噪是有害——它把已經走對的路徑打亂。如果有一個東西能從 直接送到 ( 是任何我們想去的中間時刻),不經過終點、不加噪,那兩個問題同時消失。
這個單元就是這個東西。
先把慣例對齊
U6 跟著書用 是資料、 的方向(U6.0 有說明)。這個單元的物件有兩個時間,「往哪個方向」不再是問題,所以我們可以回到 U2、U3 的 FM 慣例: 是噪聲 , 是資料 ,直線插值 ,條件速度 。唯一要換的是一個字母:前幾個單元的邊際速度場寫成 ,這個單元改記成 ,因為 這個字母兩篇之後要當「平均速度」用。
符號u 在這個單元有兩個身分,怎麼分
這個單元會出現兩次,靠它吃不吃參數分辨:
- 單獨出現,是 progressive 恆等式裡的中間時刻(, 落在 與 之間)。CTM 的損失、Shortcut 與 AYF 都用這個寫法,因為原文就是這樣寫的。
- 帶參數,是 U7.2 的平均速度。
邊際速度場則一律寫 ,不再用 。
這個東西該長什麼樣
先給畫面。U2.1 說速度場 定義了一組不交叉的軌跡,平面上每一點在每個時刻都恰好有一條軌跡經過。取一顆粒子,它在時刻 的位置是 ;沿著它的軌跡走到時刻 ,它會在某個確定的位置。把「時刻 的位置 」對應到「同一條軌跡在時刻 的位置」,這個對應就是我們要的東西,記成
可以大於 (往資料端走)也可以小於 (往噪聲端走),兩個時間都是自由的。它叫 flow map——ODE 教科書裡本來就有這個名字(U2.1 把它記成 ,而 U1.0 要的那個 就是 這一個特例)。U6 學的 consistency function 是它的另一個特例:終點固定在資料端。
課堂提問Q1
不看任何論文,只從「 是軌跡上的位置」這個定義出發:一個網路 想當合格的 flow map,必須滿足哪些條件? 請至少列出三個,並說出每一個對應前幾個單元的哪個物件。
先想一想,再展開看整理後的答案
最先想到的通常是「不跳就不能動」,接著是「跳到終點要等於上一個單元的 」;半群性質要換個角度想「分兩段跳」才會浮現,而與速度場的關係最容易被漏掉。四個條件整理如下。
一、恆等。 。從 跳到 就是原地不動。這是 consistency function 邊界條件 的推廣(U6.2 的乾淨端是 而不是 );U6.2 用 的參數化讓它自動成立,這個單元的參數化也會這麼做。
二、端點。 就是 consistency function——跳到資料端。(在 U6 的慣例裡資料在 ,寫成 ;只是慣例不同。)所以 consistency model 是 flow map 把第二個時間釘死的特例。
三、半群。 從 跳到 、再從 跳到 ,必須等於直接從 跳到 :
這是「軌跡上的位置」這個定義的直接後果:中途停一下不會換到另一條軌跡。它的力量在於多步取樣不再需要重新加噪—— 接 就是一條合法的兩步路,而且理論上與一步 落在同一點。U6.5 的交叉問題就是在這一條被拆掉的。
四、與速度場相容。 沿著 微分,位置的變化率就是那一點的速度:
第二式說:flow matching 學的速度場,是 flow map 在 時的無窮小極限。U2 學的是這個物件的一階 Taylor 項,U6 學的是它在 的切片,這個單元要學整張表。
四個條件不獨立:三推得一(取 ),三加四可以推得一切(無窮多個小跳接起來)。但拆成四條有一個好處——下一篇會看到,每一條都可以變成一個損失函數,而且對應到一個已知的方法。
第一個具體實作:CTM
有了四個條件,最直接的問題是:拿 U6 已經會的東西,能不能改一改就變成 flow map?Consistency Trajectory Models(CTM,Kim et al. [1])就是這麼做的。
U6.2 的 consistency 損失說:同一條軌跡上相鄰兩點 、, 的輸出要一樣。CTM 把 換成三個輸入的 ,並把「輸出要一樣」推廣成:從 直接跳到 ,要等於先走一段再跳到 。「先走一段」用 teacher 的速度場做——從 用 ODE solver 走到某個中間時刻 ,得到 ,然後
右邊是 stop-gradient 的目標( 是 EMA 或凍結的參數,U6.4 談過這個選擇)。讀一遍會發現這正是半群條件,只是第一段路交給 teacher:。
怎麼選很有意思。 貼著 (只走一小步)時,這就是 consistency distillation 推廣到任意終點 ; 時右邊變成 ——純粹回歸 teacher 走出來的軌跡點,是 U6.0 Q1 那個「最笨的做法」。CTM 把 在 隨機取,稱之為 soft consistency matching,讓兩種訊號都有。實務上 CTM 還加了 denoising score matching 的正則項與一個 adversarial 損失來提升樣本品質,那些是工程上的加料,主線只需要記住:CTM 是 consistency distillation 加上第二個時間輸入,並用半群條件當損失。
CTM 回答了起點問題——有了 ,多步取樣就是 ,不回終點、不加噪。CTM 的實驗確實看到步數增加時品質持續改善,而不是像 consistency model 那樣很快停住。
展開細節CTM 為什麼仍然需要 teacher?可以拿掉嗎?
CTM 的損失裡 teacher 出現在「先走一段」那裡: 是用 teacher 的速度場解 ODE 得到的。沒有 teacher,我們就不知道 的軌跡往哪裡走——這是所有 distillation 方法共同的依賴。
U6.3 的 consistency training 示範過怎麼拿掉 teacher:不真的走一步,改用同一組 重新插值出 ,靠 U1.2 的 conditional trick(條件目標在期望上等於邊際目標),代價是 的曲率 bias。同樣的替換原則上可以搬到 CTM 上,但要處理的細節更多: 不再固定,網路的輸出空間從「資料」變成「任何時刻的中間狀態」。這個單元接下來的三篇,本質上就是在回答「flow map 能不能像 consistency training 那樣從頭訓練、而且不帶曲率 bias」——答案是可以,而且方法不只一種。
這個單元的路線
現在手上有一個新物件(flow map)與一個第一版實作(CTM,需要 teacher、用半群條件)。接下來:
- 下一篇把四個條件裡的三個各寫成一個損失函數,並把上一個單元和這個單元所有方法排進同一張表——每個方法都是「哪一條恆等式 + 哪一個估計量」。
- 再一篇看 MeanFlow:用「平均速度」重新參數化 flow map,得到一條精確的恆等式,讓它能像 flow matching 一樣從頭訓練、一步就有競爭力。
- 然後是 Shortcut、Align Your Flow 這些同一張表上的其他格子。
- 最後換一條完全不同的路:不再要求「學生輸出等於某個目標點」,改要求「學生的分佈等於 teacher 的分佈」。
先消化一下
參考文獻
- Kim, D., Lai, C.-H., Liao, W.-H., Murata, N., Takida, Y., Uesaka, T., He, Y., Mitsufuji, Y., Ermon, S. Consistency Trajectory Models: Learning Probability Flow ODE Trajectory of Diffusion. ICLR 2024.(第一個具體的雙時間模型;soft consistency matching。)
- Boffi, N. M., Albergo, M. S., Vanden-Eijnden, E. Flow Map Matching. 2024.(flow map 的系統性定義與三種損失,下一篇的主角。)
- Song, Y., Dhariwal, P., Chen, M., Sutskever, I. Consistency Models. ICML 2023.(條件二對應的物件。)