離散流:精確概似,彆扭的限制
回想指南 1:正規化流堆疊可逆層,並用變數變換公式讀出精確概似。實務工程全在那個 Jacobian:耦合層(coupling layer)把輸入切半,以其中一半為條件變換另一半,留下一個三角形 Jacobian,其對數行列式只是一個簡單的求和。你得到精確密度與精確取樣——但雙射、保維度的限制讓流模型很吃參數,歷史上在原始影像品質上總是落後一步。
連續正規化流:讓深度趨於無限
連續正規化流(continuous normalizing flows, CNFs)用一個神經 ODE 取代離散層的堆疊:一個速度場 *vθ(x, t)*,對時間積分後把基底密度傳輸到資料。瞬時變數變換公式把對數行列式變成速度場散度(divergence)對時間的積分——不需要任何三角形架構的體操,任何網路都能當速度場。這是彈性最大的傳輸。
連續歸一化流將速度場作為神經常微分方程積分;對數密度按速度場雅可比跡(散度)的相反數演化。
痛點在訓練。原始 CNF 透過模擬 ODE 前向並反向傳播穿過求解器來最大化概似——昂貴,而且那個散度積分還需要隨機跡估計。CNF 是被自身訓練成本扼住的優雅理論,多年來一直上不了排行榜。突破,是乾脆完全不再模擬。
流匹配:直接回歸速度,不再模擬
流匹配(flow matching)問了一個看似簡單的問題:如果我固定一條從雜訊內插到資料的目標機率路徑,是什麼速度場生成它——而我能不能直接回歸到那個速度上?答案是可以。挑一條逐樣本的條件路徑(例如從一個雜訊點到一個資料點的直線),算出它封閉形式的速度,再用普通的均方誤差訓練 vθ 去匹配它。迴圈裡沒有 ODE 求解、沒有散度估計、沒有對抗者。
條件流匹配目標:將網路速度回歸到已知的逐樣本目標速度——無需模擬常微分方程。
# conditional flow matching (straight-line path) x0 = randn_like(x1) # noise x1 = data_sample() t = rand() # time in [0,1] xt = (1 - t) * x0 + t * x1 # point on the path u = x1 - x0 # target velocity (constant on a line) loss = mse(v_net(xt, t), u)
整流流:把路徑拉直
彎曲的傳輸路徑迫使 ODE 求解器走許多小步;筆直的路徑原則上一步就能跨過。整流流(rectified flow)訓練一個軌跡盡量筆直的流:把每個雜訊樣本與一個資料樣本配對,回歸到那條直線的常數速度——再選擇性地重流(reflow):用當前模型重新生成配對並重訓,可證明能把路徑拉得更直。更直的路徑意味著取樣時遠更少的函數評估次數。
整流流將速度回歸到雜訊與資料之間的直線位移,使軌跡趨於筆直,逼近單步傳輸。
這就是為什麼好幾個頂尖的影像生成器採用整流流/流匹配訓練:品質與擴散相同,但其幾何刻意為了便宜的少步取樣而設計。這也為最後一篇指南鋪好了核心問題——我們究竟能少到幾步?