Velocity 當成回歸目標:Flow Matching 在學什麼
第三種局部訊號登場——而且它讓生成變得格外乾淨。
前兩篇的局部訊號分別是「猜噪聲」和「指向高密度」。flow matching 用的是第三種:直接問這個樣本此刻該往哪移動、移多快。聽起來和 Vector Field 裡的向量場一模一樣——沒錯,這一篇就是把那個場變成一個可以回歸出來的訓練目標。
換個角度:把生成變成一道回歸題
回想 跟著一顆粒子走 和 Vector Field:生成 = 解 ODE 。所以只要學會速度場 ,生成就解決了。flow matching 的聰明之處,是給出一個讓 有標準答案的設計,於是訓練就退化成最樸素的監督式回歸。
先抓住這個畫面
取一個 noise 點 和一個 data 點 ,用直線把它們連起來。那麼在這條線上任一時刻,樣本「該往哪走」幾乎不用想——就是朝著終點,速度固定。
下面的 demo 把這件事畫出來:每個樣本沿直線從 noise 走向 data,箭頭就是它當下的速度;拖時間 、切直線/彎曲,看速度場如何隨之改變。
把畫面寫成數學
最常見的直線插值(也叫 conditional OT path):
對這條直線微分,速度是個常數:
模型 就回歸這個速度:
生成時解 ODE:從 出發, 積分到 。整個訓練就是一道 L2 回歸題——這正是 flow matching 直觀又好用的地方。和 score / denoising 比,velocity 的回歸目標是一個「位移」,不是噪聲、也不是密度梯度;但它們其實彼此可換算,這條線會在 三種語言 收起來。
幾個容易想歪的地方
那為什麼「平均一下」就對了?
每一對 給的目標 都指向某一張特定的圖,看起來很「粗」。化解這個弔詭的關鍵只有一句話:很多不同的配對,會在途中經過空間裡同一個位置。
當 L2 回歸遇到「同一個輸入、卻有很多不同目標」時,它的最佳解不是去遷就任何一個,而是把這些目標平均起來。所以模型在每個位置學到的,是「所有經過這裡的配對速度的平均」——而這個平均,剛好就是推動整群分布的那個邊際(marginal)速度場。粗糙的條件目標,被平均磨成了對的場。
一句話:對「可以算的」條件目標做回歸,最佳解自動變成「算不出來的」邊際場。
這就是為什麼這麼樸素的訓練學得到對的東西。至於「條件目標的平均剛好等於邊際場」這件事的嚴格證明,屬於比較深的數學,留給 Diffusion & Flow Models 課程;在這門入門課,記住上面的直覺就夠用了。
這怎麼接到論文?
flow matching 把生成轉成 supervised velocity regression,訓練穩定、好擴展,而且和 diffusion 共用同一套 probability-path 語言。它和 denoising、score 其實是同一件事的不同寫法——這條線會在 三種語言 收束起來。
下一步
你已經知道模型在每個位置學的是「平均速度場」。那實際生成時,怎麼把這個場變成一張圖?答案是沿著它一步步走。下一篇 取樣即解微分方程 把抽象的「解 ODE」變成你真的會在意的步數與成本。
參考文獻
- Lipman, Y., et al. Flow Matching for Generative Modeling. ICLR 2023.
- Liu, X., et al. Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow. ICLR 2023.