U2.0 Forward Process 是必要的嗎?
本篇重用M2.0河面上的箭頭:Vector Field 與 ODE
上一個單元買的是一個套餐
U1 的推導鏈很漂亮:選一個加 Gaussian noise 的 forward process → 拿到 的 Gaussian closed form → denoising 回歸 → Tweedie 給出 score → reverse SDE 或 PF-ODE 取樣。
漂亮的地方在於每一環都扣著上一環。但這也意味著:它們是一起來的。 Tweedie 的證明用到 是 Gaussian;reverse SDE 的存在用到 forward 是一條 SDE。我們沒有分別挑過這些東西——我們只挑了「加 Gaussian noise」這一個動作,其餘全部跟著被決定了。
有點像點餐時只能點套餐:主餐、配菜、飲料綁在一起,價格漂亮,但你不能只換飲料。
如果我只想換掉套餐裡的其中一樣,
剩下的還能不能用?
課堂提問Q1
考慮兩個生成任務:
- 草圖 → 照片:從草圖的分布 生成照片的分布 ,兩邊都不是 Gaussian。
- 球面上的資料:例如蛋白質的骨架角度,資料本來就住在一個球面上;Gaussian noise 會把點推離球面。
用 U1 的框架做這兩件事,會卡在哪裡?
先想一想,再展開看整理後的答案
最直覺的回答是「起點必須是 Gaussian」。這對,但那只是最外層。往下追,可以整理出三個被綁在一起的旋鈕(這一節還是用 U1 的慣例: 是資料、 是噪聲。換慣例在本篇最後一節):
旋鈕一:起點分布。 forward SDE 有一個平穩分布 ,我們才有地方出發往回走。任務 1 的起點 (草圖)不是任何簡單 SDE 的平穩分布,所以連「從哪裡開始」都定不出來。
旋鈕二:路徑。 到 之間的中間分布完全由 決定,形狀永遠是「縮小的資料 + Gaussian 模糊」。任務 2 想讓中間分布留在球面上,這個形狀做不到。
旋鈕三:配對方式。 訓練時 與 是各自獨立抽的。在 U1 裡這看起來理所當然——噪聲本來就是隨便抽的——但它其實是一個選擇,而且這個選擇直接決定了模型要學的東西有多難。
理由 U1.2 已經算過了:模型學到的是 ,也就是「所有可能造出這個 的 」的加權平均。獨立配對意味著任何 都可能配上任何噪聲,所以每一個 背後的候選都很多——那張「 大的時候輸出是一團模糊」的圖就是這件事的畫面。如果配對可以挑,每個 的候選就會變少,要學的那個平均也就更銳利。但在 diffusion 的框架裡,我們沒有這個旋鈕。
Diffusion 把這三件事綑在「加 Gaussian noise」這一個動作裡。
flow matching 的動機就是把它們拆開,一個一個拿回設計權。
互動 demo:三個旋鈕。 三個下拉分別是起點分布、路徑、配對;把它們都轉到最上面那一組(Gaussian 起點、加噪路徑、隨機配對)就是 diffusion 能做的唯一一種組合,其他組合全部超出上一個單元的框架。拖 看中間分布怎麼變——特別試「環形起點」與「配對:依位置排過」。
換一個問法
U1 是從「學一個函數 」出發,再用 forward process 造出訓練配對。這個單元我們把順序反過來:
先決定我們想要的中間分布長什麼樣,再問要用什麼速度場,把粒子從起點推到終點。
這樣問有幾個直接的好處:起點可以是任意分布;中間路徑可以自己設計;而且不需要 SDE、不需要 score、不需要 Tweedie——只需要一條 ODE 和一個回歸目標。
代價當然也有。少了 Gaussian 結構,「條件好算、邊際難算」的困難會以新的樣子回來。U2.2 會處理它,用的是 U1.2 那個 conditional trick 的 velocity 版本。
這個單元換一套慣例
從這個單元起改用 flow matching 的慣例。這不是為了折磨人——文獻現在兩套慣例都在用,兩邊都得讀得懂。
| 概念 | U1(DDPM) | U2 起(FM) |
|---|---|---|
| 資料 | ||
| 噪聲/起點 | ||
| 時間方向 | ,往噪聲走 | ,往資料走 |
| 中間點 | ||
| 邊界 | ; | |
| 網路學的 | 速度場 | |
| 取樣 | 從 倒著走 | 從 順著解 ODE |
兩件最容易出錯的事:
- FM 的 是噪聲。 讀 U1 的式子時要在腦中對調,不然每個式子都會反過來。
- FM 的 不必滿足 。 DDPM 的 VP 路徑滿足這個關係,但 FM 最常用的 就不滿足——這正是「路徑」這個旋鈕被鬆開之後的具體樣子。
補充那個「三個旋鈕」的說法在文獻裡叫什麼?
把起點、路徑、加噪強度都當成設計變數的那條線,文獻上叫 stochastic interpolants [2];把資料換到球面、流形上的版本叫 Riemannian flow matching [3]。這個單元先只鬆開「路徑」與「配對」兩個旋鈕,把最乾淨的情況做完;U3 會把整族都攤開來。
消化一下
參考文獻
- Lipman, Y., Chen, R. T. Q., Ben-Hamu, H., Nickel, M., Le, M. Flow Matching for Generative Modeling. ICLR 2023. (這個單元的主線。)
- Albergo, M. S., Boffi, N. M., Vanden-Eijnden, E. Stochastic Interpolants: A Unifying Framework for Flows and Diffusions. 2023. (把三個旋鈕全部攤開的框架。)
- Chen, R. T. Q., Lipman, Y. Flow Matching on General Geometries. ICLR 2024. (球面/流形上的版本,對應 Q1 的任務 2。)