U3.2 拉直(一):Reflow
要怎麼讓模型學出更直的 trajectory?
在 U3.1 中,我們推得:固定步長 與 Lipschitz 常數 後,Euler 的 finite-step error 會被
控制,其中 是沿著 trajectory 感受到的 velocity 變化。這個積分越小,error bound 就越小;如果 learned trajectory 是等速直線,,Euler 一步也不會漏掉任何 velocity 變化。
要怎麼做,才能讓模型學出的 velocity field
產生接近等速直線、又仍然把 搬到 的 ODE trajectory?
沿用前面的散場例子。想像你原本跟著一群人往東邊走,走到一半卻遇到另一大群人往北走;又或者原本的人潮突然分成兩邊,一半繼續往東,一半轉向北邊。當你不知道目的地、只能參考附近的人時,看到的方向越不一致,就越容易一路改變決定。
放回 Flow Matching,知道自己要去哪裡的人走出 reference paths;迷路的人則沿著 learned velocity 前進。如果同一個位置附近同時出現許多不同的 reference velocities,L2 regression 會把它們平均起來;而沿途遇到的人一變,平均方向也會跟著變。即使每一條 reference path 都是直線,最後產生的 ODE trajectory 還是可能不斷轉向。
所以問題變成:我們能不能重新安排起點與終點的配對,讓同一個位置看到的方向更一致,同時又不改變兩端的 distributions?
使用已經一對一配好的端點
想讓 learned velocity 看到的 reference paths 更確定、不要那麼凌亂,一個自然的想法是先找一組比較 deterministic 的配對。這裡的 deterministic(確定性)是指:給定起點之後,終點與中間怎麼走都已經決定,不需要再抽新的 randomness。
咦?我們第一次訓練得到的 learned velocity,不是已經會走出一條 deterministic 的 ODE trajectory 了嗎?給定起點 與 velocity field 後,
會決定整條 trajectory。只要這條 ODE 的解是唯一的,不同起點出發的 trajectories 就不會在同一時刻交叉。
因此,終點不再是從 隨機抓來配給 :每個起點都會沿著自己的 flow trajectory,走到唯一的終點 。
補充為什麼 ODE trajectories 在同一時刻不會交叉?
直覺上,velocity field 是一個 function:給定同一個時間 與位置 ,它只會給出一個 velocity,不可能同時叫一個人往東、另一個人往北。因此兩條 trajectories 若在同一個 相遇,當下收到的方向一定相同。
不過,「當下方向相同」還不足以保證之後永遠走在一起;嚴謹的結論還需要 ODE 的解具有唯一性。假設兩條解 與 在同一時刻 到達同一個位置:。把這個位置當成 的初始條件後,兩條曲線都在解同一條 ODE;如果解是唯一的,它們往前與往後都必須是同一條 trajectory,不可能來自兩個不同的起點。
因此,「不交叉」更精確地說,是兩條不同的 ODE trajectories 不能在同一個 相遇後再分開。它們仍可能在不同時刻經過同一個空間位置。
這條 ODE trajectory 很確定,卻不一定是直線;直接沿用它,並沒有解決少步 Euler 會漏掉 velocity 變化的問題。那我們能不能保留它已經決定好的起點與終點,卻把中間換成直線?
如果我們利用 決定出來的端點配對,但重新用直線連接它們呢?
想像散場後,我們先讓每個人照目前的導航走過一次。現在每個人的起點與實際抵達的位置都有了;與其再隨機替他指定一個終點,我們可以把同一個人的起點與終點重新配在一起,再畫一條直線作為下一輪的 reference path。
把這個想法寫成數學時,我們先考慮模型學到理想 velocity 的情況。令第一輪使用的 coupling 為 ;通常會從獨立配對開始。接著做三件事:
- 照 U3.0 的直線插值 ,得到邊際速度 。
- 解 ODE 、,走到 得到 。
- 把 的 joint distribution 當成新的 coupling:
Liu、Gong 與 Liu [1] 把這一組「學 velocity、跑 ODE、把兩端配回去」的運算稱為 rectification。另外,因為它把舊的 coupling 變成新的 ,我們用 記錄 coupling 之間的關係:
的輸入與輸出都是 coupling。它沒有改 Flow Matching 的 objective;改的是下一輪要怎麼抽出一對 來製造 reference paths。
做到這裡,我們只完成了一次 rectification。如果再從 抽出端點、重新訓練 velocity 並產生下一組配對,就可以反覆寫成
原論文把這個反覆進行 rectification 的程序稱為 reflow。
從左往右看: 決定直線 ,它們的 conditional mean velocity 決定新 ODE ,最後收集兩端得到 。紫色箭頭把新配對送回下一輪;保留的是端點,下一輪仍要重新畫 reference lines、重新學 velocity。
上下交叉後,ODE 會怎麼走?
先用一個經典的交叉 toy 看一次。起點與終點各有上下兩個 Gaussian clusters:
不過,我們故意把左上配到右下、左下配到右上。令 各以 機率取樣,再設定
因此,每一條直線 reference path 都會朝另一側走,兩束 paths 在中央交叉。但 learned velocity 在同一個 只能給一個方向;它會依這個位置比較可能屬於哪一束,對兩束的 reference velocities 做 conditional average。
補充初始 coupling 的 velocity 為什麼可以直接算?
對直線插值 ,固定 後,位置的 mean、共同 variance 與 conditional velocity 分別是
所以 optimal velocity 是
上下兩束的 prior 都是 ;但看到當下的位置 後,兩束的權重會變成與 成正比。因此不能在每個位置都直接把 與 做算術平均。
這個 closed form 只適用於原本的交叉 coupling。完成 rectification 後,端點配對已經改變;demo 會改用新端點建立的直線 paths,重新估計它們的 conditional mean velocity。
互動 demo:從交叉配對走到 reflow 後的 ODE。 先看綠色 reference paths 如何交叉,再切到黃色 rectified ODE;這時 velocity 使用上面的 closed form,並按當下的 density 決定兩束各佔多少。最後切到紫色,demo 會把黃色 ODE 產生的新端點配回起點,再只用這批新配對重新估計 velocity。拖動時間,可以看到兩束 particles 在三個階段分別怎麼移動。
這個程序後來也被帶到大規模影像生成:Liu 等人的 InstaFlow [2] 把 reflow 用在一步文字生圖;Esser 等人的 SD3 [3] 則採用 rectified flow 的線性路徑,但沒有反覆做 reflow。兩者都使用「rectified flow」這個名字,改動的部分並不完全一樣。
Reflow 可以做到我們想做到的事嗎?
直覺上,上面的方法似乎有那麼一點道理。但我們不能凡事只靠直覺,一樣要用數學檢查這個想法到底有沒有效、有沒有根據。
我們想確認兩件事情:
- Reflow 是否仍然建立一條從 到 的路徑,不會改掉最後生成的 distribution?
- Reflow 是否真的會讓 ODE trajectories 越來越直?
為了看清楚 怎麼產生 ,下面先考慮理想 velocity 與精確、解唯一的 ODE,並假設端點具有有限二階矩。令 表示舊配對。
第 輪仍然用直線連接這組端點,它的 reference process 是
這條直線的 reference velocity 是 。依照 U2.1 的 L2 regression,為了和圖中的輪次一致,將舊配對 決定、用來產生新 ODE 的 optimal velocity 記成
用舊配對重新平均下一輪的速度
- 在時間 、位置 ,只看舊配對重新畫出的直線中,哪些滿足 。
- 每一條相容直線的速度,都是它的舊端點位移 。
- 對這些速度取 conditional expectation。平均的權重由本輪 coupling 決定。
- 這個平均就是 。它要由本輪的 reference paths 重新決定;不是把上一輪的 field 再積分一次。
下一輪不是沿用舊 trajectory 的 velocity,而是沿著這個重新平均出來的 field 前進:
舊 ODE 的端點決定新的 reference paths;它們平均出的 velocity,再決定新的 ODE trajectory。 每一輪的 都由當輪的 重新決定,不是把同一個 field 反覆積分。
(一)保留 marginals。 Rectification 重新安排的是「每個起點要配到哪個終點」,不是兩端各自的 distribution。新的 ODE 仍從原本的起點出發,因此
接著回想 U2.2:在理想 velocity 與精確 ODE 下,學到的 ODE process ,會和它參考的 interpolation 在每個時刻產生相同的 marginal。因為舊配對的終點 ,所以 ,進而得到
所以 仍然連接 與 。
想像原本每個人都配好一個目的地。Rectification 可以重新安排「誰去哪裡」,但出發地與目的地的整體人數分布不變。也就是說,端點的配對改了,但兩端的 distributions 沒有變。
成本下降,和兩種 velocity variance 有什麼關係?
(二)成本不會增加。 我們先看最具體的平方運輸成本,也就是每組端點的位移平方,再對 coupling 取平均:
回到散場的例子,這個量比較的是每個人被分配到的目的地有多遠,不是他沿 ODE 實際走過的路有多長。那從舊配對產生下一輪後, 究竟會是多少?
先看舊 reference paths。站在同一個時間、位置,不同的人可能要求不同的 velocity,而 只能給它們的平均。原論文 [1] 用 量出這些 reference velocities 離平均有多遠:
這就是 conditional variance:先固定 ,看相容的 reference velocities 有多不一致,再對位置與時間平均。向量的平方 norm 會把各分量的 variance 加總成一個數。 時,幾乎所有 上的 reference velocities 都已經一致;它不是神經網路沒學好的誤差。
固定 後,左圖仍可能看到不同的 ;它們與平均 的平方距離,構成這裡的 conditional variance。 再對位置與時間平均。右圖的 reference velocities 全部一致,因此這個位置的 conditional variance 是零。
再看新的 ODE trajectory。即使每個位置只給出一個 velocity,同一個人沿途看到的 velocity 還是可能改變。因為時間區間是 ,這條 trajectory 的平均 velocity 就是總位移:
因此,我們可以看同一條 trajectory 沿時間的 velocity variance,再對隨機起點取平均。Liu、Gong 與 Liu 的原論文 [1] 把這個量稱為 straightness:
同一個人的速度沿途有多不一致
- 是新 ODE trajectory 上,這個人當下的 velocity。
- 整段時間長度是 ,所以端點位移 就是這個人整段路的平均 velocity。
- 把當下 velocity 與這個人自己的平均 velocity 相減,再取平方長度。這一步沒有把不同人的速度混成同一個平均。
- 換一個起點便換一條 ODE trajectory;期望值把各條路上同一種平方偏差平均起來。
- 最後對 積分,得到 straightness 。若 ,幾乎每個人的 velocity 沿途都等於自己的端點位移,也就是等速直線。
時,幾乎每一條 ODE trajectory 都以固定速度走直線,因此一步 Euler 就能精確走到終點。不同人可以有不同速度; 比較的是同一個人的速度沿途有沒有變,不是把所有人的速度混在一起算 variance。
先只看一條 :端點位移是 ,但瞬間 velocity 是 。在 ,兩支箭頭分別為 與 。因此這條路的 ;一般情況再對隨機起點取期望。圖省略了輪次,上文的新 trajectory 則記成 。
展開細節straightness 和 U3.1 的加速度積分有什麼關係?
這裡的 straightness 和 U3.1 使用的加速度積分
並不是同一個量。 比較當下 velocity 與整段路所需的固定 velocity;加速度積分則量 velocity 沿途總共改變了多少,包含轉向、加速與減速。不過它們在等速直線上會接起來:
所以 straightness 等於零時,U3.1 控制 Euler error 的加速度積分也等於零;但在一般情況下,兩個數值不必一起變大或變小。Reflow 的定理直接控制的是下面的 ,要把它連到 finite-step error,仍然要使用 U3.1 的分析。
接著把兩個 variance 接進成本計算。舊 reference velocity 可以拆成「conditional mean 」與「離平均的偏差」。後者在給定 時平均為零,因此展開平方後,交叉項會消失:
這就是平方誤差的 variance 分解。接著, 與 在每個時刻的 marginal 相同,所以同一個函數 對它們取平均,結果也相同:
最後看右邊。將 的平方展開,交叉項用剛才的 計算:
也就是「速度平方的時間平均,減去平均速度的平方」。移項後得到
把這條式子代回舊成本的分解,就得到原論文 Theorem 3.7 [1] 使用的等式:
這一輪省下的成本來自哪裡
- 量的是同一個時間、位置上,舊 reference velocities 離 conditional mean 有多遠。
- 量的是同一條新 trajectory 上,瞬間 velocity 離它自己的時間平均有多遠。這是另一種 variance。
- 在理想 velocity 與精確 ODE 下,平方成本的下降量恰好等於這兩個非負量相加。因此成本不增加;這條等式沒有保證 或 本身逐輪下降。
左邊是這一輪平方運輸成本下降了多少;右邊是舊 paths 在同一位置的 velocity variance,加上新 ODE 在同一條 trajectory 沿時間的 velocity variance。兩者都非負,因此 ;只要 ,這一輪成本就會嚴格下降。
運輸成本逐輪不增加,但成本下降量 ,以及個別的 、,不保證逐輪變小。
展開細節換成一般 convex transport cost,仍然不會增加嗎?
會。令 convex function 描述搬運一段位移的成本,並假設相關 expectations 有限。新 ODE 的位移是 velocity 的時間積分;先對時間平均使用 Jensen,再利用兩個 process 的 marginals 相同,最後對 conditional mean 再使用一次 Jensen:
兩次 Jensen 分別處理沿時間的平均,以及同一個 上 reference velocities 的 conditional average。一般 convex cost 仍逐輪不增加;但精確的 等式,是平方成本才有的分解。
把每一輪的等式從 加到 ,中間的運輸成本會前後抵消:
右邊的 只由最初的 coupling 決定。左邊則是前 輪留下的 全部加起來,而且每一項都不小於零。將上面的不等式除以 ,就得到這些數的平均:
一組數裡的最小值一定不會大於平均值,因此
換句話說,reflow 做得越多輪,前面這些輪次裡至少能找到一輪,它的 ODE trajectory 已經更接近等速直線,而且 reference directions 也更一致。
不過,這個總和其實還告訴我們另一件事。令
每根柱子是 ,虛線是這幾輪的平均。紅柱不大於平均,對應剛才的 ;柱高仍可以上下波動,因此這個 bound 沒有保證每一輪都更好。柱高只是示意,並非實測數據。
如果每一輪都能繼續做 rectification,而且 ,那麼
一串非負數的總和有限,每一項就必須趨近零;否則只要有某個正數反覆出現,總和便會一直增加。因此
而非負的 與 也都會趨近零。也就是說,在理想條件下,reflow 的確會漸近得到更直、方向更一致的 flow。
但要注意這兩個結論的差別: 是針對前 輪中最好的 ,告訴我們其中最好的一輪可以有多好; 則告訴我們,後面的 reference velocities 會漸近一致,ODE trajectories 也會在 的意義下漸近成為等速直線。不過,這裡並沒有推出
所以,成本 確實逐輪不增加;不保證單調下降的,是每一輪的下降量 ,以及其中的 、。 我們可以說後三者會趨近零,卻不能只靠上面的等式,就說它們每一輪都比上一輪小。
成本下降也不等於已經找到最省的配對。後者需要在所有連接 、 的 couplings 中,比較哪一個成本最小,這才是 optimal transport(OT,最優傳輸)。
補充這裡的 OT coupling 是什麼?
令 表示兩端 marginals 分別為 、 的所有 joint distributions。Quadratic optimal transport 找的是
也就是兩端的 distributions 不變,但在所有合法配對中,找出平均位移平方最小的那一種。Reflow 證明成本不比上一輪大;OT 還要求它不比任何其他合法配對大,兩個要求並不相同。
此外, 只代表 coupling 給出的路徑會越來越直;但這個結果不能推出普通 reflow 一定收斂到 OT coupling。
展開細節路徑已經完全直,為什麼還可能不是 OT?
Straightness 與 OT 問的是兩件不同的事:straightness 問「每組端點之間能不能等速直走」,OT 還要進一步在所有合法 couplings 中,比較哪一種配對讓指定的 transport cost 最小。可以直走的配對可能有很多個,但它們要搬的距離不一定一樣。
例如令
再把每個起點旋轉 ,令 。它的直線 interpolation 是
對 rotation 而言,
所以這個矩陣在 都可逆。給定 就能唯一找回 ,同一個位置不會出現彼此衝突的 reference velocities;這個 coupling 已經是 straight 的,。
但它不是 quadratic OT。因為 ,直接使用 identity coupling 的成本是
而旋轉配對需要把每個點搬到另一個位置,成本嚴格大於零。路線沒有繞路,不代表一開始選的目的地就是最近、最省的目的地。 後續研究也給出了更一般的 non-optimal straight fixed points [5,6]。
展開細節後續研究在什麼條件下得到更強的結論?
有,但都需要額外條件,或修改原本的 rectification。
- Bansal 等人 [4] 證明:如果第一次 rectification 所得到的 endpoint map 滿足特定的 Jacobian 條件,接下來的 2-RF 會是完全直的。他們也在 Gaussian-to-Gaussian 與部分 Gaussian-mixture 例子中驗證這些條件;若再滿足更強的 commutativity 條件,得到的 map 也會是二次成本下的 Monge optimal map。
- Hertrich、Chambolle 與 Delon [5] 則給出 non-optimal fixed points 與 vanishing-loss counterexamples:即使 flow 已經直,甚至額外限制 velocity 是 gradient field,在缺少 support 與 regularity 條件時仍不代表 OT。
- Wang 等人 [6] 進一步證明,在 centered Gaussian 的例子裡,普通 rectified flow 只有在兩端 covariance matrices commute 時才得到 OT;不 commute 時,第一輪就可能停在一個 non-optimal fixed point。他們提出的 -rectified flow 會針對指定成本限制 velocity 的形式,才在額外的 compactness 與 uniform-integrability 條件下得到收斂至 OT 的保證。
因此,後續結果補上的是「在什麼額外條件或修改下,可以得到更強保證」,並沒有把普通 reflow 在一般情況下直接升級成 straightness 逐輪單調下降,或必然收斂至 OT。
課堂提問Q1
ODE trajectories 在解唯一時不會互相交叉。既然 reflow 把同一條 trajectory 的起點與終點配在一起,為什麼一次 rectification 之後還可能不夠直?
先想一想,再展開看整理後的答案
因為下一輪並不沿著原本的 ODE trajectories 訓練,而是只保留它們的端點,再重新畫直線:
兩條彎曲的 ODE trajectories 可以互不相交,但連接各自端點的兩條弦仍然可能相交。到了交叉處,下一輪的 optimal velocity 又得平均不同方向,所以新的 ODE trajectory 仍可能轉彎。
Rectification 做的是把原本「隨機抓的端點」換成「同一條 ODE trajectory 的兩端」。這通常已經會大幅減少交叉,卻不保證一次就把 壓到零;因此才有把輸出再送回去的 reflow。
互動 demo:同一個起點,比較 reflow 0 次與 1 次。 拖動黃色起點,將 numerical steps 固定在 1、2 或 3,再比較原本的 velocity 與完成一次 rectification 後的結果。黃線是細切的 ODE trajectory,紫線則是少步 Euler;兩者的終點距離直接告訴我們,這一輪的 velocity 只查詢幾次是否已經足夠。
消化一下
參考文獻
- Liu, X., Gong, C., Liu, Q. Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow. ICLR 2023. (rectification 運算、三個性質、straightness 與 的收斂。)
- Liu, X., et al. InstaFlow: One Step is Enough for High-Quality Diffusion-Based Text-to-Image Generation. ICLR 2024. (把 reflow 推到文字生圖上、真的做到一步。)
- Esser, P., et al. Scaling Rectified Flow Transformers for High-Resolution Image Synthesis. ICML 2024. (大規模用線性路徑訓練的實務細節;注意它並沒有做 reflow 迭代。)
- Bansal, V., Roy, S., Rinaldo, A., Sarkar, P. On the Convergence and Straightness of Rectified Flow. ICLR 2025. (給出 2-RF 完全變直的 sufficient condition,並分析它何時同時是 Monge map。)
- Hertrich, J., Chambolle, A., Delon, J. On the Relation between Rectified Flows and Optimal Transport. NeurIPS 2025. (non-optimal fixed points、vanishing loss 不足以推出 OT,以及所需的額外條件。)
- Wang, L., Xu, Z., Liu, Q., Zhou, H. H. Computational and Statistical Guarantees of the -Rectified Flow. arXiv preprint, 2026. (ordinary RF 的 Gaussian failure case,以及 -rectified flow 在額外條件下的 OT convergence。)