U6.5 多步 CM 的極限:每一步都得回到 x₀
本篇重用M2.0河面上的箭頭:Vector Field 與 ODE·M6.1兩個城市的人口分佈差多少:W₂ 距離
一步不夠,那就兩步
訓好了,一步生成是 。品質不錯但不完美—— 有逼近誤差,一步之內沒有任何機會修正它。前三個單元的直覺會說:多走幾步。
CM 確實可以多步 [1]。程序是:
- 抽 ,跳:。
- 選一個中間時刻 ,重新加噪:, 是新抽的噪聲。
- 再跳:。
- 需要的話再選 ,重複 2–3。
兩步()在實務上比一步好很多——原文與 iCT 的表格裡,兩步的 FID 常常是一步的一半 [1, 2]。然後就不太動了:三步、四步、八步,增益迅速變小,遠不像 ODE 取樣那樣「步數翻倍、誤差減半」。
課堂提問Q1
ODE 取樣的誤差隨步數 以 下降(U3.2)。多步 CM 為什麼不是這樣?為什麼第二步幫很多,之後就不再照那個速率改善?
先想一想,再展開看整理後的答案
常見的答案主要有三種:「因為 每一步都帶同樣的誤差,多幾步也不會變小」(對,但要說出為什麼ODE 不是這樣)、「因為重新加噪把資訊洗掉了」(對一半)、「因為 CM 沒有 score」(對,這是 U3.1 的語言)。三個都對,而且它們是同一件事的三個面。
第一個面:這不是在離散化任何東西。 ODE 的 步是同一條軌跡的 段折線,每一段的誤差是 、加起來 ,步數越多越貼近那條軌跡——存在一個「連續的極限」被逼近。多步 CM 不是這樣:第一跳落在 ,重新加噪後的 用的是新的噪聲 ,它與 沒有任何關係。 不在 那條 PF-ODE 軌跡上,也不在任何一條「原本的」軌跡上——它是從 這組新的、獨立的配對重新出發的一條條件直線上的點。第二跳算的是「經過 的那條軌跡的終點」,那是另一條軌跡、另一個終點。所以多步 CM 沒有在逼近任何連續極限;它是一連串各自獨立的「加噪-去噪」,步數再多也不會收斂到什麼。
這正是 U2.3 Q1 的圖:條件直線 與邊際軌跡不是同一條線,它們交叉。每一次重加噪就是畫一條新的、隨機方向的條件直線,然後從它上面的一點沿邊際軌跡走回來——起點與終點的對應每一步都在換。
第二個面:每一跳的誤差都是「滿的」。 第 跳的輸出是 ,它的誤差是 在 處的逼近誤差 ,與 無關、與前面跳過幾次無關。最後一跳決定輸出,而最後一跳的誤差不會因為前面多跳了幾次而變小。那第二步為什麼幫很多?因為 : 要跨的距離短、要表達的映射簡單,逼近誤差本來就比 小(U6.1 說過一步跨整條軌跡是最難的)。第二步的增益不是「修正了第一步」,是「換了一個比較容易的問題」。而 不能一路變小—— 太小時 、,第二跳幾乎是恆等,第一跳的錯誤原樣保留。所以存在一個最佳的 ,通常在中段,而第三步以後已經沒有「更容易的問題」可以換了。
第三個面:沒有 score,就沒有拉回。 U3.1 說自我修正是 Langevin 項的功勞: 把偏離 的樣本往高密度區推,噪聲再把它們攤開,兩者平衡時樣本就落在 上。CM 手上沒有 score—— 是一個確定映射,訓練時從來沒有學過 。重加噪看起來像 Langevin 的噪聲項,但少了配套的 drift;它只是把 的誤差平移到 ,然後交給另一個同樣有誤差的確定映射。多步 CM 的重加噪是 U3.1 那兩個旋鈕裡的「取樣噪聲」,卻沒有讓它發揮作用的 score。
三個面合起來:多步 CM 的每一步都必須回到 、再從 用一組獨立的噪聲重新出發。 回到 是因為 只會跳到終點(它的定義就是 );重新出發是因為沒有別的辦法從 得到一個 的點。這兩件事讓多步 CM 既不是 ODE 的離散化(沒有連續極限)、也不是 SDE 的取樣器(沒有 score)。
所以 U3.2 那個 的保證在這裡沒有了。它不保證誤差隨步數下降,也不保證持平:Sabour 等人 [4] 對 Gaussian 資料證明,存在一個次佳的 使得步數超過某個 之後 上升。換句話說,多步 CM 不一定還保有「多走幾步就更好」這件事——有沒有,要看那個 。
同一個結構問題,三種語言
把這一篇和前兩個單元並排:
| 連續(本單元) | 離散時間(U4.3) | 離散連續時間(U5.3) | |
|---|---|---|---|
| 一步做的事 | 直接跳到終點 | 一步同時翻開多個 token | 同上,rate 語言 |
| 一步裡假設了什麼 | 這一跳沒有誤差(沒有修正機會) | 翻開的位置條件獨立 | 同上 |
| 想多步時怎麼做 | 回到 、重加噪、再跳 | 少翻幾個、多走幾步 | 加一個「回到 [MASK]」的 rate |
| 為什麼多步有限 | 重加噪是獨立配對、無 score、每跳誤差滿的 | 因子化誤差只在翻開的那一步減少 | remask 要付「重來」的代價 |
三格說的是同一件事的三個版本:一步生成把「走」壓成「跳」,跳的過程裡沒有中間狀態可以修正;要修正只能「回到起點重來一次」——回到 再加噪、回到 [MASK] 再翻開。remasking 在離散世界至少能靠 U3.1 的旋鈕語言說清楚它的代價;多步 CM 連那個旋鈕都沒有,因為 手上沒有 score。
展開細節那 CD 呢?它有 teacher 的 score,能不能拿來做 SDE?
可以,但那已經不是 CM 的取樣器了——那是 teacher 的 SDE 取樣器,CM 只被用來做第一跳的「好起點」。原文的多步 CM 刻意不用 teacher,因為整個動機是取樣時只呼叫 。而 CT 根本沒有 teacher, 從頭到尾不存在於任何網路裡。所以「多步 CM 沒有修正」不是實作上的疏忽,是這個物件的定義使然: 只知道終點,不知道密度。
收在問題上
這個單元從「不走了,直接學那一步」出發,得到一個能一步生成、也能從任何 一步到底的 。它的極限也很清楚: 只會跳到 。所以想多步,就必須回到乾淨端、重新加噪、再從一個與原軌跡無關的點出發——每一次重來都是一次獨立配對的交叉,沒有連續極限、沒有 score、沒有修正。
如果 不只會跳到 ,而是能從 直接跳到任何中間的 ——不回到終點、不重新加噪、留在同一條軌跡上——多步就會變回「同一條路的幾段」,ODE 那種「步數增加、誤差下降」的結構就回來了。這樣一個雙時間的映射要滿足什麼條件、怎麼訓,是下一個單元的起點。這個單元在這裡停住,不給解法。
先消化一下
參考文獻
- Song, Y., Dhariwal, P., Chen, M., Sutskever, I. Consistency Models. ICML 2023.(多步取樣程序;一步 vs 兩步的結果。)
- Song, Y., Dhariwal, P. Improved Techniques for Training Consistency Models. ICLR 2024.(一步與兩步的 FID 對照。)
- Liu, X., Gong, C., Liu, Q. Flow Straight and Fast. ICLR 2023.(ODE 誘導的配對不交叉,與重加噪的獨立配對對照。)
- Sabour, A., Fidler, S., Kreis, K. Align Your Flow: Scaling Continuous-Time Flow Map Distillation. 2025.(Theorem 3.1:對 Gaussian 資料,存在次佳的 consistency model 使得步數變多之後 上升。)