擴散模型原理 B13 · 機率路徑與速度場
The Principles of Diffusion Models · 第 5 章 §5.3

建構機率路徑與速度場:條件高斯、仿射流與「直線」的真正意思

B12 說:FM 要能 simulation-free 地訓練,需要一個能直接抽樣的條件路徑 \(p_t(\cdot\mid\mathbf z)\),和一個有封閉形式的條件速度 \(\mathbf v_t(\cdot\mid\mathbf z)\)。這一頁實際把它們造出來。起點是唯一完全算得出來的情形:兩端都是高斯。從它得到兩種造法:先指定每個時刻的條件分佈(Euler 觀點),或先指定粒子怎麼走(Lagrange 觀點)。兩種造法最後都落到同一個訓練目標 \(a_t'\mathbf x_0+b_t'\mathbf x_1\);在 \(a_t=1-t\)、\(b_t=t\) 時就是常見的 \(\mathbf x_1-\mathbf x_0\)。最後一節提醒:每條條件路徑都是直線,生成時走的邊際軌跡卻通常是彎的。

書的範圍:第 5 章 §5.3(含 §5.3.1–5.3.5) 閱讀時間:約 50 分鐘

讀完這頁你應該能夠

  1. 對高斯機率路徑 \(\mathcal N(\bm\mu(t),\sigma^2(t)\mathbf I)\) 和它的仿射 flow map,推出速度場 \(\frac{\sigma'(t)}{\sigma(t)}(\mathbf x-\bm\mu(t))+\bm\mu'(t)\)。
  2. 說出雙側(「光束」)和單側(「聚光燈」)條件路徑各自怎麼選 \(\pi(\mathbf z)\)、條件路徑和條件速度,並證明兩者的 CFM 目標有相同的最小化解。
  3. 用 \(\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1\) 的表格比較 VE、VP、FM/RF、三角函數插值,並說明 Gaussian FM 和 diffusion 的關係。
  4. 從條件仿射流 \(\bm\mu_t(\mathbf z)+\mathbf A_t(\mathbf z)\mathbf x_0\) 推出條件速度,並說明「先指定路徑」和「先指定流」各自的長處。
  5. 用一維高斯反例解釋:條件路徑是直線,不代表邊際 ODE 的軌跡是直線,也不代表一步 Euler 就夠。

前置知識

  • B12:FM 的三個步驟、CFM 損失、邊際速度是條件速度的後驗平均、連續方程不唯一決定速度場、flow map 與 Euler 速度 \(\mathbf v_t=\partial_t\bm\Psi_{0\to t}\circ\bm\Psi_{0\to t}^{-1}\)。
  • B10:VE、VP 的擾動核,以及哪些 \((\alpha_t,\sigma_t)\) 是合法的 diffusion(SNR 不增)。
  • 仿射變換下的高斯:\(\mathbf x\sim\mathcal N(\bm m,\mathbf S)\Rightarrow\mathbf A\mathbf x+\mathbf c\sim\mathcal N(\mathbf A\bm m+\mathbf c,\mathbf A\mathbf S\mathbf A^\top)\)。
時間方向。這一頁用 FM 的慣例:\(t=0\) 是來源(通常是高斯先驗)、\(t=1\) 是目標(通常是資料);\(\mathbf x_0\sim p_{\text{src}}\)、\(\mathbf x_1\sim p_{\text{tgt}}\)。唯一的例外是第 3 節表格裡的 VE、VP 兩欄,書保留了 diffusion 的時鐘。

「書 §」標出原文位置。灰框「轉述者補充」是書裡沒有的內容;藍框「推導」展開書中省略的步驟。

01兩種建構觀點書 §5.3

Flow matching 的本質是把來源分佈逐漸變成目標分佈。要引導這個轉變,需要兩個元素:機率路徑 \(p_t\),給出每個時刻分佈的快照;和速度場 \(\mathbf v_t\),描述個別粒子沿路徑怎麼移動。兩者不是獨立的,由連續方程連在一起,保證粒子的動態和分佈的演化一致。所以學習任務化約成找一個能忠實推動這個過程的速度場 \(\mathbf v_t\)。困難是:對一般複雜的分佈,真正的邊際速度 \(\mathbf v_t\) 是未知的,回歸目標拿不到。

Conditional Flow Matching 的核心想法是造一個人工、但好處理的過程:引入條件變數 \(\mathbf z\),刻意把條件速度 \(\mathbf v_t(\mathbf x_t\mid\mathbf z)\) 和/或條件路徑 \(p_t(\mathbf x_t\mid\mathbf z)\) 設計得很簡單。因為這些條件物件有封閉形式,它們可以當替代的回歸目標,得到合法的訓練損失 \(\mathcal L_{\text{CFM}}\),前提是兩個實務要求成立:(i) 能有效率地從 \(p_t(\cdot\mid\mathbf z)\) 抽樣;(ii) 對應的 \(\mathbf v_t(\cdot\mid\mathbf z)\) 有封閉形式。

怎麼設計一個行為良好的條件過程?書從唯一完全理解的情形找靈感:高斯到高斯的橋(第 2 節)。這個例子突顯兩個自然的設計策略:每個時刻都用高斯機率路徑,或指定一個仿射的速度場,兩者都可以解析處理。依此把建構推廣到一般的端點分佈,用兩個互補的觀點(也見書附錄 B 的連續時間極限,B34),它們對應運送的古典 Euler 和 Lagrange 描述:

  • 先指定條件機率路徑(Euler 觀點)。先給條件密度路徑 \(p_t(\cdot\mid\mathbf z)\),再找滿足連續方程的條件速度 \(\mathbf v_t(\cdot\mid\mathbf z)\)。因為密度路徑本身一般不唯一決定速度,這個建構還需要選一個相容的速度場。
  • 先指定條件流(Lagrange 觀點)。改成透過條件 flow map \(\bm\Psi_{0\to t}(\cdot\mid\mathbf z)\) 指定個別粒子怎麼走。密度由 pushforward 得到;flow map 可逆時,對應的 Euler 速度場是 \(\mathbf v_t=\partial_t\bm\Psi_{0\to t}\circ\bm\Psi_{0\to t}^{-1}\)。

第 3 節詳談第一種,它和 B12 第 2 節的 diffusion 建構非常相似;第 4 節介紹第二種。兩個觀點合起來提供定義 \(p_t(\mathbf x_t\mid\mathbf z)\) 和 \(\mathbf v_t(\mathbf x_t\mid\mathbf z)\) 的實用框架,讓訓練 simulation-free,也能在任意的來源與目標分佈之間造流。

Euler 觀點和 Lagrange 觀點是什麼意思

這兩個名詞來自流體力學。Euler 觀點站在固定的位置 \(\mathbf x\) 看:這裡現在的密度 \(p_t(\mathbf x)\) 是多少、經過這裡的流速 \(\mathbf v_t(\mathbf x)\) 是多少。Lagrange 觀點跟著一個粒子走:它從 \(\mathbf y\) 出發,時間 \(t\) 在 \(\bm\Psi_{0\to t}(\mathbf y)\)。兩者的換算就是「在位置 \(\mathbf x\) 的速度 = 現在剛好在 \(\mathbf x\) 的那個粒子的速度」:先用 \(\bm\Psi_{0\to t}^{-1}(\mathbf x)\) 找出那個粒子的起點,再對它的軌跡微分。這正是 \(\mathbf v_t=\partial_t\bm\Psi_{0\to t}\circ\bm\Psi_{0\to t}^{-1}\)。

02關鍵特例:高斯到高斯的橋書 §5.3.1

先看兩端都是高斯的情形,這時可以解析地算出邊際密度 \(p_t(\mathbf x_t)\) 和速度場 \(\mathbf v_t(\mathbf x_t)\)。它會是之後一般條件建構的範本。

當 \(p_{\text{src}}\)、\(p_{\text{tgt}}\) 都是高斯,速度場 \(\mathbf v_t(\cdot)\) 有封閉形式。考慮內插的邊際密度路徑

$$p_t(\mathbf x_t)=\mathcal N\big(\mathbf x_t;\bm\mu(t),\sigma^2(t)\mathbf I\big),$$

平均 \(\bm\mu(t)\) 和變異數 \(\sigma^2(t)>0\) 隨時間變化。兩端是 \(p_{\text{src}}=p_0=\mathcal N(\bm\mu(0),\sigma^2(0)\mathbf I)\)、\(p_{\text{tgt}}=p_1=\mathcal N(\bm\mu(1),\sigma^2(1)\mathbf I)\),所以路徑 \(\{p_t\}\) 連起這兩個分佈。

對這條路徑,其實有很多速度場都能誘導出滿足「\(\mathbf x\sim p_0\Rightarrow\bm\Psi_{0\to t}(\mathbf x)\sim p_t\)」的 ODE 流(B12 的 Demo B 就是一例)。一個特別簡單的實現是

$$\bm\Psi_{0\to t}(\mathbf x):=\bm\mu(t)+\sigma(t)\Big(\frac{\mathbf x-\bm\mu(0)}{\sigma(0)}\Big):$$

先標準化,再用時間 \(t\) 的平均和標準差還原。書的註腳:Lipman et al. (2022) 用的是 \(\bm\Psi_{0\to t}(\mathbf x)=\bm\mu(t)+\sigma(t)\mathbf x\),它需要對 \(\bm\mu(t)\)、\(\sigma(t)\) 加限制才能滿足邊界條件;書改用等價、但已經標準化的寫法,避開這些限制。

對這條高斯路徑(每個 \(t\) 都是高斯),誘導出上面那個 ODE 流的速度場被唯一且解析地刻畫如下(Lipman et al. 2022):

書中的命題:高斯密度路徑的封閉形式速度場 令 \(p_t\) 是上面的高斯路徑。則生成上面那個 ODE 流 \(\bm\Psi_{0\to t}\) 的速度場 \(\mathbf v_t(\cdot)\) 對這個 \(\bm\Psi_{0\to t}\) 是唯一的,而且 $$\mathbf v_t(\mathbf x)=\frac{\sigma'(t)}{\sigma(t)}\big(\mathbf x-\bm\mu(t)\big)+\bm\mu'(t).$$
證明(書)

考慮以 \(\mathbf y\) 為初始條件的 ODE:\(\frac{d}{dt}\bm\Psi_{0\to t}(\mathbf y)=\mathbf v_t(\bm\Psi_{0\to t}(\mathbf y))\)。因為 \(\sigma(t)>0\),\(\bm\Psi_{0\to t}\) 可逆;令 \(\mathbf x=\bm\Psi_{0\to t}(\mathbf y)\)、\(\mathbf y=\bm\Psi_{0\to t}^{-1}(\mathbf x)=\bm\Psi_{t\to0}(\mathbf x)\),得到 \(\bm\Psi_{0\to t}'\big(\bm\Psi_{0\to t}^{-1}(\mathbf x)\big)=\mathbf v_t(\mathbf x)\)(\('\) 是對 \(t\) 微分)。對 \(t\) 微分 flow map:

$$\bm\Psi_{0\to t}'(\mathbf y)=\bm\mu'(t)+\sigma'(t)\Big(\frac{\mathbf y-\bm\mu(0)}{\sigma(0)}\Big).$$

反解起點:\(\mathbf y=\bm\mu(0)+\sigma(0)\frac{\mathbf x-\bm\mu(t)}{\sigma(t)}\),所以 \(\frac{\mathbf y-\bm\mu(0)}{\sigma(0)}=\frac{\mathbf x-\bm\mu(t)}{\sigma(t)}\)。代回去:

$$\mathbf v_t(\mathbf x)=\bm\mu'(t)+\sigma'(t)\,\frac{\mathbf x-\bm\mu(t)}{\sigma(t)}.\qquad\blacksquare$$

直覺:粒子的「標準化座標」\((\mathbf x-\bm\mu(t))/\sigma(t)\) 在整個過程中保持不變。速度分成兩部分:跟著中心平移(\(\bm\mu'\)),加上依標準差的相對變化率 \(\sigma'/\sigma\) 往中心收縮或往外擴張。

書提醒:對一個固定的 flow map \(\bm\Psi_{0\to t}\)(先指定流的觀點),速度由 \(\mathbf v_t=\partial_t\bm\Psi_{0\to t}\circ\bm\Psi_{0\to t}^{-1}\) 唯一決定,而且 \((p_t,\mathbf v_t)\) 自動滿足連續方程。相反地,只給密度路徑 \(t\mapsto p_t\)、不固定 \(\bm\Psi_{0\to t}\)(先指定路徑的觀點)時,速度場不唯一。這個區別精確地刻畫了兩種觀點的差別。

這個封閉形式在以潛在變數 \(\mathbf z\) 為條件時仍然成立。下面用這個洞見造條件高斯路徑 \(p_t(\cdot\mid\mathbf z)\),並推出對應的條件速度場 \(\mathbf v_t(\cdot\mid\mathbf z)\)。

03先指定條件機率路徑書 §5.3.2

書中的圖:兩種常見的條件機率路徑
書中的圖(§5.3.2):兩種常見的條件機率路徑。三格的左邊都是藍色的 \(p_{\text{src}}\)(三團),右邊都是橘色的 \(p_{\text{tgt}}\)(兩團)。左格(雙側):在 \(p_{\text{src}}\) 取一點 \(\mathbf x_0\)、在 \(p_{\text{tgt}}\) 取一點 \(\mathbf x_1\),兩點用一條細直線連起來,像一道「光束」。中格與右格(單側):只固定一端的一個點,另一端是整個分佈,中間用一個灰色的圓錐連起來,像「聚光燈」:中格固定的點落在 \(p_{\text{tgt}}\) 那一側,右格固定的點落在 \(p_{\text{src}}\) 那一側。圖片出處:Lai et al. (2026),作者自繪。

轉述者注:書的圖和圖說把落在 \(p_{\text{tgt}}\) 的點叫 \(\mathbf x_0\)、落在 \(p_{\text{src}}\) 的點叫 \(\mathbf x_1\)(圖說寫「\(\mathbf x_0\sim p_{\text{tgt}}\)、\(\mathbf x_1\sim p_{\text{src}}\)」),用的是 diffusion 時鐘的標記;正文和本頁都用 FM 慣例 \(\mathbf x_0\sim p_{\text{src}}\)、\(\mathbf x_1\sim p_{\text{tgt}}\)。看圖時只要記得:中格是「以一個資料點為條件」(正文的 \(\mathbf z=\mathbf x_1\)),右格是「以一個來源點為條件」(\(\mathbf z=\mathbf x_0\))。左格的標記和正文一致。

目標是先造條件密度路徑 \(p_t(\cdot\mid\mathbf z)\),再(用上面的命題)推出對應的條件速度場 \(\mathbf v_t(\cdot\mid\mathbf z)\)。依 \(\mathbf z\) 的選法有兩種自然的情形:(i) 雙側條件化 \(\mathbf z=(\mathbf x_0,\mathbf x_1)\);(ii) 單側條件化 \(\mathbf z=\mathbf x_0\) 或 \(\mathbf x_1\)。兩種情形下,建構都必須符合邊界分佈:

$$p_{\text{src}}(\mathbf x_0)=\int p_0(\mathbf x_0\mid\mathbf z)\pi(\mathbf z)\,d\mathbf z,\qquad p_{\text{tgt}}(\mathbf x_1)=\int p_1(\mathbf x_1\mid\mathbf z)\pi(\mathbf z)\,d\mathbf z.$$

具體建構一旦指定,驗證這些限制很直接,所以書不強調驗證步驟。

I. 雙側 \(\mathbf z=(\mathbf x_0,\mathbf x_1)\):「光束」路徑

選 \(\pi(\mathbf z)\)。考慮 \(\mathbb R^D\) 上一般的 \(p_{\text{src}}\)、\(p_{\text{tgt}}\)。令 \(\mathbf x_0\sim p_{\text{src}}\)、\(\mathbf x_1\sim p_{\text{tgt}}\) 獨立:\(\pi(\mathbf z)=p_{\text{src}}(\mathbf x_0)\,p_{\text{tgt}}(\mathbf x_1)\)。

選條件路徑。用線性內插加上一個固定、很小的變異數 \(\sigma>0\):

$$p_t(\mathbf x_t\mid\mathbf z=(\mathbf x_0,\mathbf x_1))=\mathcal N(\mathbf x_t;a_t\mathbf x_0+b_t\mathbf x_1,\sigma^2\mathbf I),$$

\(a_t\)、\(b_t\) 是時間的函數,滿足 \(a_0=1,b_0=0\)、\(a_1=0,b_1=1\)。Lipman et al. (2022) 和 Liu et al. (2022) 建議的選擇是 \(a_t=1-t\)、\(b_t=t\)。在確定性的情形 \(\sigma=0\),條件路徑是 \(p_t(\mathbf x_t\mid\mathbf z)=\delta\big(\mathbf x_t-[a_t\mathbf x_0+b_t\mathbf x_1]\big)\):一條從 \(\mathbf x_0\) 到 \(\mathbf x_1\) 的確定性內插路徑。

書的註腳:也可以保留固定的條件變異數 \(\sigma^2\mathbf I\)。因為變異數不隨時間變,條件速度仍然是 \(a_t'\mathbf x_0+b_t'\mathbf x_1\);但兩端的邊際會變成 \(p_{\text{src}}\)、\(p_{\text{tgt}}\) 的高斯平滑版本,在 \(\sigma\to0\) 時趨近想要的端點。

推出條件速度。由上面的命題,

$$\mathbf v_t(\mathbf x\mid\mathbf z)=a_t'\mathbf x_0+b_t'\mathbf x_1.$$
套用命題的那一步

以 \(\mathbf z=(\mathbf x_0,\mathbf x_1)\) 為條件,路徑是 \(\bm\mu(t)=a_t\mathbf x_0+b_t\mathbf x_1\)、標準差 \(\sigma(t)\equiv\sigma\) 的高斯。\(\sigma'(t)=0\),所以命題的第一項消失,剩下 \(\bm\mu'(t)=a_t'\mathbf x_0+b_t'\mathbf x_1\)。它甚至不依賴 \(\mathbf x\):每個條件粒子都以同一個速度平移。\(a_t=1-t,b_t=t\) 時就是常數向量 \(\mathbf x_1-\mathbf x_0\)。

CFM 損失。\(\sigma=0\)、\(\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1\) 時,CFM 損失化為

$$\mathcal L_{\text{CFM}}=\mathbb E_{t,\,\mathbf x_0\sim p_{\text{src}},\,\mathbf x_1\sim p_{\text{tgt}}}\Big\Vert\mathbf v_{\bm\phi}(\mathbf x_t,t)-\big(a_t'\mathbf x_0+b_t'\mathbf x_1\big)\Big\Vert^2.$$

由 B12 的邊際速度式和 CFM 定理,最佳速度場是

$$\mathbf v^*(\mathbf x_t,t)=\mathbb E[\mathbf x_t'\mid\mathbf x_t]=\mathbb E\big[a_t'\mathbf x_0+b_t'\mathbf x_1\mid\mathbf x_t\big],$$

期望對 \(p(\mathbf x_0,\mathbf x_1\mid\mathbf x_t)\) 取:所有可能產生觀測到的內插點 \(\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1\) 的來源–目標配對的條件分佈。(\(\mathbf x_t'\) 是內插點對 \(t\) 的導數。)

II. 單側 \(\mathbf z=\mathbf x_0\) 或 \(\mathbf x_1\):「聚光燈」路徑

在單側設定下示範這個建構,考慮標準的生成設定 \(p_{\text{src}}=\mathcal N(\mathbf 0,\mathbf I)\)、\(p_{\text{tgt}}=p_{\text{data}}\)。書強調:這個高斯來源不是額外的假設,而是下面定義的條件路徑直接造成的。任意端點的一般處理在第 4 節。

選 \(\pi(\mathbf z)\)。取 \(\mathbf z=\mathbf x_1\)、\(\pi(\mathbf z)=p_{\text{data}}(\mathbf x_1)\)(\(\mathbf z=\mathbf x_0\sim p_{\text{prior}}\) 的情形類似)。

選條件路徑。對固定的 \(\mathbf x_1\sim p_{\text{data}}\),定義

$$p_t(\mathbf x_t\mid\mathbf z=\mathbf x_1)=\mathcal N\big(\mathbf x_t;b_t\mathbf x_1,a_t^2\mathbf I\big),$$

\(a_0=1,b_0=0,a_1=0,b_1=1\)(通常理解成極限)。在兩端:\(p_0(\cdot\mid\mathbf x_1)=\mathcal N(\cdot;\mathbf 0,\mathbf I)\)、\(p_1(\cdot\mid\mathbf x_1)=\delta(\cdot-\mathbf x_1)\)。對 \(\mathbf x_1\) 取邊際,得到 \(p_0=\mathcal N(\mathbf 0,\mathbf I)\)(和 \(p_{\text{data}}\) 無關)、\(p_1=p_{\text{data}}\)。

為什麼來源「自動」是高斯

\(t=0\) 時條件分佈是 \(\mathcal N(\mathbf 0,\mathbf I)\),對每個 \(\mathbf x_1\) 都一樣。對 \(\pi\) 取平均,一堆相同的高斯平均起來還是它自己:\(p_0=\int\mathcal N(\cdot;\mathbf 0,\mathbf I)\,p_{\text{data}}(\mathbf x_1)\,d\mathbf x_1=\mathcal N(\cdot;\mathbf 0,\mathbf I)\)。\(t=1\) 時條件分佈是點質量 \(\delta(\cdot-\mathbf x_1)\),平均起來就是 \(p_{\text{data}}\) 本身。所以「來源是高斯」是這個條件路徑的結果,不是另外要求的。

推出條件速度。對 \(a_t>0\) 的 \(t\in(0,1)\),把命題套用到這條條件高斯路徑:

$$\mathbf v_t(\mathbf x\mid\mathbf x_1)=b_t'\mathbf x_1+\frac{a_t'}{a_t}\big(\mathbf x-b_t\mathbf x_1\big).$$
套用命題的那一步

以 \(\mathbf x_1\) 為條件,\(\bm\mu(t)=b_t\mathbf x_1\)、\(\sigma(t)=a_t\)。命題給出 \(\frac{a_t'}{a_t}(\mathbf x-b_t\mathbf x_1)+b_t'\mathbf x_1\)。這次 \(\sigma(t)\) 會變(從 1 縮到 0),所以速度依賴 \(\mathbf x\):離圓錐中心 \(b_t\mathbf x_1\) 越遠的點,被拉回中心的速度越大(\(a_t'<0\))。這就是 B12 那張條件化圖裡的綠色箭頭。

單側 CFM 目標。\(t\sim\mathcal U(0,1)\)(或任何固定的抽樣分佈)、\(\mathbf x_1\sim p_{\text{data}}\),CFM 損失變成

$$\mathcal L_{\text{CFM}}=\mathbb E_{t,\mathbf x_1}\mathbb E_{\mathbf x_t\sim p_t(\cdot\mid\mathbf x_1)}\Big\Vert\mathbf v_{\bm\phi}(\mathbf x_t,t)-\Big[b_t'\mathbf x_1+\tfrac{a_t'}{a_t}\big(\mathbf x_t-b_t\mathbf x_1\big)\Big]\Big\Vert_2^2.$$

由 MSE 的最佳性,唯一的最小化解是邊際速度場

$$\mathbf v^*(\mathbf x,t)=\mathbb E\big[\mathbf v_t(\mathbf x\mid\mathbf x_1)\,\big|\,\mathbf x_t=\mathbf x\big]=\mathbb E\big[a_t'\mathbf x_0+b_t'\mathbf x_1\,\big|\,\mathbf x_t=\mathbf x\big].$$

和雙側目標等價。對配對的樣本 \((\mathbf x_0,\mathbf x_1)\),\(\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1\):

$$\mathbf v_t(\mathbf x_t\mid\mathbf x_1)=b_t'\mathbf x_1+\tfrac{a_t'}{a_t}\big(\mathbf x_t-b_t\mathbf x_1\big)=a_t'\mathbf x_0+b_t'\mathbf x_1.$$
代數

\(\mathbf x_t-b_t\mathbf x_1=a_t\mathbf x_0\),所以 \(\tfrac{a_t'}{a_t}(\mathbf x_t-b_t\mathbf x_1)=a_t'\mathbf x_0\)。因此,抽樣時用來造 \(\mathbf x_t\) 的那個 \(\mathbf x_0\)(\(\mathbf x_t\sim p_t(\cdot\mid\mathbf x_1)\) 就是 \(b_t\mathbf x_1+a_t\mathbf x_0\)、\(\mathbf x_0\sim\mathcal N(\mathbf 0,\mathbf I)\)),讓單側的目標逐樣本地等於雙側的目標。兩個損失不只最小化解相同,在同一批 \((t,\mathbf x_0,\mathbf x_1)\) 上連數值都完全一樣。

所以單側損失回歸的是雙側目標在給定 \(\mathbf x_t\) 下的條件期望:\(\mathbf v^*(\mathbf x,t)=\mathbb E[a_t'\mathbf x_0+b_t'\mathbf x_1\mid\mathbf x_t=\mathbf x]\),單側和雙側的 CFM 目標有相同的最小化解。

Gaussian FM = Diffusion Model

用 FM 的慣例,\(t=0\) 是來源/先驗、\(t=1\) 是目標/資料:\(p_{\text{src}}=p_{\text{prior}}\)、\(p_{\text{tgt}}=p_{\text{data}}\)。相對地,diffusion model 通常從資料往雜訊編時間(\(t=0\) 是資料、\(t=1\) 是先驗)。主要討論用 FM 的編號;但為了比較,下表的 VE、VP 兩欄保留它們平常的 diffusion 時間編號。

如果再加上 \(p_{\text{src}}=\mathcal N(\mathbf 0,\mathbf I)\),那麼對固定的條件 \(\mathbf x_1\sim p_{\text{data}}\),條件路徑 \(p_t(\cdot\mid\mathbf x_1)\) 自然取成高斯,而目標分佈 \(p_{\text{tgt}}\) 本身不必是高斯。這種條件高斯路徑的設定叫 Gaussian FM。diffusion 的機率路徑是這類高斯路徑的一個重要子類。但一般的高斯時程不一定對應一個合法的前向 diffusion SDE:時程還必須滿足 B10 Lemma 的 SDE 相容條件。

選 \(a_t=1-t\)、\(b_t=t\)(在 diffusion model 裡用 \(a_t:=\sigma_t\)、\(b_t:=\alpha_t\) 重新命名,等價於 \(\alpha_t=t\)、\(\sigma_t=1-t\))就還原了熟悉的 FM/RF 時程(Lipman et al. 2022;Liu et al. 2022)。

書中的表:不同插值寫成 \(\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1\),\(\mathbf x_0\sim p_{\text{src}}=p_{\text{prior}}\)、\(\mathbf x_1\sim p_{\text{tgt}}=p_{\text{data}}\)。FM/RF 和三角函數兩欄用 FM 慣例;VE、VP 兩欄保留 diffusion 時鐘(\(t=0\) 資料、\(t=1\) 先驗),\(a_t:=\sigma_t\)、\(b_t:=\alpha_t\)。VE 在有限的終端雜訊下,真正的終端邊際是 \(p_{\text{data}}*\mathcal N(\mathbf 0,a_1^2\mathbf I)\);表裡的高斯先驗是終端雜訊遠大於資料尺度時的常用近似。
VEVPFM/RF三角函數(Albergo et al. 2023)
\(a_t\)(先驗係數)\(a_t\)\(\sqrt{1-b_t^2}\)\(1-t\)\(\cos(\tfrac\pi2t)\)
\(b_t\)(資料係數)\(1\)\(b_t\)\(t\)\(\sin(\tfrac\pi2t)\)
\(a_0\)0011
\(b_0\)1100
\(a_1\)\(a_1\)100
\(b_1\)1011
\(p_{\text{prior}}\)\(p_{\text{data}}*\mathcal N(\mathbf 0,a_1^2\mathbf I)\approx\mathcal N(\mathbf 0,a_1^2\mathbf I)\)\(\mathcal N(\mathbf 0,\mathbf I)\)\(\mathcal N(\mathbf 0,\mathbf I)\)\(\mathcal N(\mathbf 0,\mathbf I)\)
讀這張表的兩個小提醒

(1) 三角函數那欄滿足 \(a_t^2+b_t^2=\cos^2+\sin^2=1\),和 VP 欄的 \(a_t=\sqrt{1-b_t^2}\) 是同一個條件:它是一條變異數保持(VP 型)的路徑,只是用 FM 的時間方向寫。FM/RF 則不是:\(t=\tfrac12\) 時 \(a_t^2+b_t^2=\tfrac12\)。(2) VE、VP 兩欄的 \(a_0=0\)、\(b_0=1\) 是因為那兩欄 \(t=0\) 在資料端;把時間翻過來(\(t\mapsto1-t\)),它們的端點就和右兩欄一致。

在 Gaussian FM 的設定下,光束型和聚光燈型的條件路徑都導出和標準 diffusion 損失相似的訓練目標。第 6 章(B15–B17)會詳細說明:Gaussian FM 其實可以等價地解讀成在線性時程 \(a_t=1-t\)、\(b_t=t\) 下訓練來預測速度的 diffusion model。這個觀點突顯 flow matching 和 diffusion 沒有根本的不同,而是可以互相轉換的兩種等價寫法。Gaussian FM 的目標在實務上特別吸引人:損失 \(\mathbb E_{t,\mathbf x_t}\big[\Vert\mathbf v_{\bm\phi}(\mathbf x_t,t)-(\mathbf x_1-\mathbf x_0)\Vert_2^2\big]\) 很簡單,而且已被證明在大規模下有競爭力(Esser et al. 2024)。

Demo A同一組端點,兩種時程轉述者補充

來源 \(\mathcal N(0,1)\)、目標是 B08–B12 的 \(0.6\,\mathcal N(1.2,0.25^2)+0.4\,\mathcal N(-1,0.2^2)\),獨立配對。比較表裡的 FM/RF(\(a_t=1-t\)、\(b_t=t\))和三角函數(\(a_t=\cos\frac{\pi t}2\)、\(b_t=\sin\frac{\pi t}2\))兩種時程。這個例子的邊際速度 \(v^*(x,t)=\mathbb E[a_t'x_0+b_t'x_1\mid x_t=x]\) 可以精確算出(和 B12 Demo A 同樣的聯合高斯公式)。上圖是 \(p_t\)(深淺)和 16 條精確的邊際 ODE 軌跡;下圖是用 \(N\) 步 Euler 解這條 ODE 得到的 2,000 個樣本。

pt(越深越密)精確的邊際 ODE 軌跡
Euler N 步的樣本pdata

上圖的深淺在每個 \(t\) 各自正規化,只看形狀。FM/RF 時程下,分佈先往中間收窄(\(t=\tfrac12\) 時變異數是 \(\tfrac14+\tfrac14\operatorname{Var}(x_1)\approx0.55\)),藍色軌跡在 \(t\approx0.5\) 之後分成兩束;三角函數時程滿足 \(a_t^2+b_t^2=1\),變異數一路保持在 1 附近,軌跡一直張開,到 \(t\approx0.65\) 之後才分開。瀏覽器實測,和精確 ODE 終點(RK4 200 步)的平均距離:

Euler 步數 \(N\)1248163264
FM/RF1.0640.4420.1340.0710.0380.0190.010
三角函數0.4360.2490.0680.0330.0170.0090.005

三件事值得注意。(1) FM/RF 的 \(N=1\):2,000 個樣本全部落在 \(0.320=\mathbb E[x_1]\)(讀數的「上團 100%」只是因為 0.32 > 0),正是第 6 節補充框說的塌縮。三角函數的 \(N=1\) 則是把整個 \(\mathcal N(0,1)\) 平移 \(\tfrac\pi2\cdot0.32\),平均 0.494,也沒有分成兩團。(2) 步數加倍,誤差大約減半,這是 Euler 法的一階收斂;在這個例子裡,三角函數時程的誤差在每個 \(N\) 都大約是 FM/RF 的一半。這只是這個例子的觀察,不是一般結論;哪種時程比較好積分,第 9 章(B24–B27)會從 solver 的角度再談。(3) 讀數最後一行:兩種時程的精確終點最大只差 \(7\times10^{-7}\)(RK4 的數值誤差)。這是一維的特性:ODE 的軌跡不會交叉,所以從 \(\mathcal N(0,1)\) 到 \(p_{\text{data}}\) 的終點映射必定是保序的那一個(分位數對分位數),時程只改變中間怎麼走。高維時沒有這個限制,不同的時程一般會給出不同的配對。

04先指定條件流書 §5.3.3

這一節處理一般情形:端點 \(p_{\text{src}}\)(在 \(t=0\))和 \(p_{\text{tgt}}\)(在 \(t=1\))是任意的。目標是直接在軌跡空間設計一個條件流,把樣本從 \(p_{\text{src}}\) 運到 \(p_{\text{tgt}}\),並得到可以當回歸目標的封閉形式 \(\mathbf v_t(\mathbf x_t\mid\mathbf z)\)。

動機。不先設計條件密度路徑,而是直接指定一個沿軌跡移動樣本的條件 flow map \(\bm\Psi_{0\to t}(\cdot;\mathbf z)\)。這有兩個實務好處:(i) 沿軌跡對時間微分,立刻得到訓練用的回歸目標;(ii) 在有幾何結構的空間上(Riemann 流形、Lie 群、受限的子流形),直接從幾何造條件 flow map 往往很自然(例如測地線、指數映射或 premetric;Lipman et al. 2024),能得到解析、simulation-free 的目標速度。

條件仿射流(連到第 2 節的命題)

固定一個條件變數 \(\mathbf z\sim\pi\)(例如單側「聚光燈」訓練裡的 \(\mathbf z=\mathbf x_1\sim p_{\text{tgt}}\)),把 \(\mathbf x_0\sim p_{\text{src}}\) 透過隨時間變化的條件仿射流 pushforward:

$$\bm\Psi_{0\to t}(\mathbf x_0;\mathbf z):=\bm\mu_t(\mathbf z)+\mathbf A_t(\mathbf z)\,\mathbf x_0,\qquad t\in[0,1],$$

\(\bm\mu_t(\mathbf z)\in\mathbb R^D\),\(\mathbf A_t(\mathbf z)\in\mathbb R^{D\times D}\) 在 \(t\in(0,1)\) 可逆。邊界 \(\mathbf A_0(\mathbf z)=\mathbf I\)、\(\bm\mu_0(\mathbf z)=\mathbf 0\) 在 \(t=0\) 還原 \(p_{\text{src}}\)。\(t\to1\) 的邊界習慣上理解成極限:終端映射可能把質量集中到一個低維的集合或一個點上。(書的註腳:允許 \(\mathbf A_1(\mathbf z)\) 奇異,例如 \(\mathbf 0\),和在 \((0,1)\) 上可逆並不衝突,它讓路徑在 \(t=1\) 收縮到指定的端點。)

誘導出的條件路徑。這個建構定義了

$$p_t(\cdot\mid\mathbf z)=\big(\bm\Psi_{0\to t}(\cdot;\mathbf z)\big)_\#p_{\text{src}},\qquad p_t(\cdot)=\int p_t(\cdot\mid\mathbf z)\pi(\mathbf z)\,d\mathbf z.$$

在 \(\mathcal L_{\text{CFM}}\) 裡真正要緊的是怎麼抽樣:先抽 \(\mathbf z\sim\pi\),再抽 \(\mathbf x_0\sim p_{\text{src}}\),最後令 \(\mathbf x_t=\bm\mu_t(\mathbf z)+\mathbf A_t(\mathbf z)\mathbf x_0\)。

書提醒:當 \(\bm\Psi_{0\to t}\) 對 \(\mathbf x_0\) 是仿射的,\(p_t(\cdot\mid\mathbf z)\) 是高斯若且唯若 \(p_{\text{src}}\) 是高斯。特別是,對任意(非高斯)的 \(p_{\text{src}}\),仿射流一般給出非高斯的 \(p_t(\cdot\mid\mathbf z)\)。

為什麼是「若且唯若」

(⟸)高斯的仿射像是高斯:\(\mathbf A\mathbf x_0+\bm\mu\sim\mathcal N(\mathbf A\bm m+\bm\mu,\mathbf A\mathbf S\mathbf A^\top)\)。(⟹)在 \(t\in(0,1)\),\(\mathbf A_t\) 可逆,\(\mathbf x_0=\mathbf A_t^{-1}(\mathbf x_t-\bm\mu_t)\) 也是 \(\mathbf x_t\) 的仿射函數;若 \(\mathbf x_t\) 是高斯,\(\mathbf x_0\) 也必須是。所以這一節的建構可以處理非高斯的來源,代價是條件路徑不再是高斯,但沒關係:訓練只需要「能抽樣」和「有封閉形式的條件速度」,不需要條件密度本身。

推出條件速度。條件速度 \(\mathbf v_t(\cdot\mid\mathbf z)\) 由對條件 flow map 的 \(t\) 微分得到。仿照第 2 節命題的推導,考慮以 \(\mathbf y\) 為初始條件、由 \(\bm\Psi_{0\to t}(\mathbf y;\mathbf z)\) 定義的條件 ODE,目標是找出對應的條件速度場:

$$\frac{d}{dt}\bm\Psi_{0\to t}(\mathbf y;\mathbf z)=\mathbf v_t\Big(\underbrace{\bm\Psi_{0\to t}(\mathbf y;\mathbf z)}_{\mathbf x}\,\Big|\,\mathbf z\Big).$$

因為 \(\bm\Psi_{0\to t}(\cdot;\mathbf z)\) 在 \(t\in(0,1)\) 可逆,可以把到達目前狀態 \(\mathbf x\) 的起點寫成 \(\mathbf y=\bm\Psi_{0\to t}^{-1}(\mathbf x;\mathbf z)=\bm\Psi_{t\to0}(\mathbf x;\mathbf z)\)。所以對應的 Euler 速度場是

$$\mathbf v_t(\mathbf x\mid\mathbf z):=\left.\frac{\partial}{\partial t}\bm\Psi_{0\to t}(\mathbf y;\mathbf z)\right|_{\mathbf y=\bm\Psi_{0\to t}^{-1}(\mathbf x;\mathbf z)}.$$

也就是:先固定起點 \(\mathbf y\)、對前向 flow map 的 \(t\) 微分,再代入「軌跡在時間 \(t\) 到達 \(\mathbf x\)」的那個起點。因為 \(\mathbf x_t=\bm\mu_t(\mathbf z)+\mathbf A_t(\mathbf z)\mathbf x_0\) 且 \(\mathbf A_t(\mathbf z)\) 在 \((0,1)\) 可逆,\(\mathbf x_0=\mathbf A_t(\mathbf z)^{-1}(\mathbf x-\bm\mu_t(\mathbf z))\),得到

$$\mathbf v_t(\mathbf x\mid\mathbf z)=\bm\mu_t'(\mathbf z)+\mathbf A_t'(\mathbf z)\,\mathbf A_t(\mathbf z)^{-1}\big(\mathbf x-\bm\mu_t(\mathbf z)\big).$$
中間那一步

固定起點 \(\mathbf y\):\(\partial_t\bm\Psi_{0\to t}(\mathbf y;\mathbf z)=\bm\mu_t'(\mathbf z)+\mathbf A_t'(\mathbf z)\mathbf y\)。把 \(\mathbf y=\mathbf A_t(\mathbf z)^{-1}(\mathbf x-\bm\mu_t(\mathbf z))\) 代進去,就是上式。和第 2 節比:\(\mathbf A_t=\tfrac{\sigma(t)}{\sigma(0)}\mathbf I\) 時 \(\mathbf A_t'\mathbf A_t^{-1}=\tfrac{\sigma'(t)}{\sigma(t)}\mathbf I\),正是命題裡的伸縮率。

單側條件化(\(\mathbf z=\mathbf x_1\))。選 \(\bm\mu_t(\mathbf z)=b_t\mathbf z\)、\(\mathbf A_t(\mathbf z)=a_t\mathbf I\),\(a_0=1,a_1=0\)、\(b_0=0,b_1=1\)(\(t\in(0,1)\) 時 \(a_t>0\)),得到

$$\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1,\qquad\mathbf v_t(\mathbf x\mid\mathbf x_1)=b_t'\mathbf x_1+\frac{a_t'}{a_t}\big(\mathbf x-b_t\mathbf x_1\big).$$

在配對的樣本 \((\mathbf x_0,\mathbf x_1)\) 上(\(\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1\)),化簡成常用的 CFM 目標 \(\mathbf v_t(\mathbf x_t\mid\mathbf x_1)=a_t'\mathbf x_0+b_t'\mathbf x_1\)。和第 3 節的聚光燈路徑一模一樣,但這次 \(p_{\text{src}}\) 不必是高斯。

雙側條件化(\(\mathbf z=(\mathbf x_0,\mathbf x_1)\))。同一個模板,取 \(\bm\mu_t(\mathbf x_0,\mathbf x_1)=b_t\mathbf x_1\)、\(\mathbf A_t(\mathbf x_0,\mathbf x_1)=a_t\mathbf I\),條件路徑變成確定性的:

$$\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1,\qquad p_t(\cdot\mid\mathbf x_0,\mathbf x_1)=\delta\big(\cdot-(a_t\mathbf x_0+b_t\mathbf x_1)\big),$$

條件速度是 \(\mathbf v_t(\mathbf x_t\mid\mathbf x_0,\mathbf x_1)=a_t'\mathbf x_0+b_t'\mathbf x_1\),也就是標準的雙側 CFM 目標。

無條件的高斯路徑是特例。若 \(\bm\mu_t\) 不依賴 \(\mathbf z\)(記作 \(\bm\mu(t)\)),且 \(\mathbf A_t=\tfrac{\sigma(t)}{\sigma(0)}\mathbf I\),則

$$\bm\Psi_{0\to t}(\mathbf x_0)=\bm\mu(t)+\sigma(t)\frac{\mathbf x_0-\bm\mu(0)}{\sigma(0)},\qquad\mathbf v_t(\mathbf x)=\bm\mu'(t)+\frac{\sigma'(t)}{\sigma(t)}\big(\mathbf x-\bm\mu(t)\big),$$

還原了第 2 節的高斯密度路徑和封閉形式速度。

05先指定路徑 vs. 先指定流書 §5.3.4

兩種建構對應運送的互補描述。先指定機率路徑(Euler)的觀點先給條件密度路徑 \(p_t(\cdot\mid\mathbf z)\),再透過連續方程選一個相容的速度場;因為密度路徑本身一般不唯一決定速度,可能需要額外的運送結構來選定。先指定流(Lagrange)的觀點則指定條件 flow map \(\bm\Psi_{0\to t}(\cdot\mid\mathbf z)\),直接描述粒子軌跡;對應的密度路徑由 pushforward 得到,映射可逆時,Euler 速度由 \(\mathbf v_t=\partial_t\bm\Psi_{0\to t}\circ\bm\Psi_{0\to t}^{-1}\) 唯一還原。所以兩種建構從不同起點描述同一類運送物件,但一條指定的密度路徑,選出的速度不一定和另外指定的 flow map 相同。

書的結論:條件路徑有封閉形式的速度時,先指定路徑比較自然;對軌跡有很強的結構先驗時,先指定流比較自然。下表整理兩者的對比。

面向先指定條件機率路徑先指定條件流
給定條件密度路徑 \(p_t(\cdot\mid\mathbf z)\)條件 flow map \(\bm\Psi_{0\to t}(\cdot\mid\mathbf z)\)(每個固定 \(\mathbf z\) 的軌跡)
怎麼得到速度對每個 \(\mathbf z\),找 \(\mathbf v_t(\cdot\mid\mathbf z)\) 使 \(\partial_tp_t(\cdot\mid\mathbf z)+\nabla\cdot\big(p_t(\cdot\mid\mathbf z)\mathbf v_t(\cdot\mid\mathbf z)\big)=0\)。不唯一:若 \(\nabla\cdot(p_t\mathbf w_t)=0\),\(\mathbf v_t+\mathbf w_t\) 給出同樣的 \(p_t\)。沿路徑(對每個 \(\mathbf z\)):\(\mathbf v_t\big(\bm\Psi_{0\to t}(\cdot\mid\mathbf z)\mid\mathbf z\big)=\tfrac{d}{dt}\bm\Psi_{0\to t}(\cdot\mid\mathbf z)\)。\(\bm\Psi_{0\to t}\) 可逆時可以解出 \(\mathbf v_t(\mathbf x\mid\mathbf z)=\partial_t\bm\Psi_{0\to t}(\mathbf y\mid\mathbf z)\big|_{\mathbf y=\bm\Psi_{0\to t}^{-1}(\mathbf x\mid\mathbf z)}\)。
\(\mathbf v_t(\cdot\mid\mathbf z)\) 的封閉形式\(p_t(\cdot\mid\mathbf z)\) 是高斯/指數族時方便;否則求 \(\mathbf v_t(\cdot\mid\mathbf z)\) 並不容易。\(\bm\Psi_{0\to t}(\cdot\mid\mathbf z)\) 有結構(仿射、低秩)時方便;不需要計算密度。
\(\mathbf v_t(\cdot\mid\mathbf z)\) 的唯一性對每個 \(\mathbf z\),除非加上選擇規則(例如位勢流、最小動能),否則 \(\mathbf v_t(\cdot\mid\mathbf z)\) 是欠定的。給定 \(\bm\Psi_{0\to t}(\cdot\mid\mathbf z)\),\(p_t(\cdot\mid\mathbf z)=(\bm\Psi_{0\to t}(\cdot\mid\mathbf z))_\#p_0\) 和粒子軌跡都確定。flow map 可逆時,對應的 Euler 速度場唯一確定;否則不一定存在唯一的全域 Euler 場。
可實現性必須驗證造出來的 \(\mathbf v_t(\cdot\mid\mathbf z)\) 在預期的支撐上解連續方程。依建構自動成立:\(p_t(\cdot\mid\mathbf z)=(\bm\Psi_{0\to t}(\cdot\mid\mathbf z))_\#p_0(\cdot\mid\mathbf z)\)。
符合 \((p_{\text{src}},p_{\text{tgt}})\)混合條件分佈:\(p_{\text{src}}=\int p_0(\cdot\mid\mathbf z)\pi(\mathbf z)\,d\mathbf z\)、\(p_{\text{tgt}}=\int p_1(\cdot\mid\mathbf z)\pi(\mathbf z)\,d\mathbf z\)。在係數不依賴 \(\mathbf z\) 的高斯–仿射條件路徑下,\(p_{\text{src}}\) 會被迫是高斯。對一般固定的端點 \(p_{\text{src}}\)(可能非高斯),\(p_t(\cdot\mid\mathbf z)\) 的選擇一般不會釘住 \(p_{\text{src}}\)。令 \(\bm\Psi_{0\to0}=\mathrm{Id}\),再選邊界條件去命中任何 \(p_{\text{tgt}}\)。
適合的情境diffusion 式的建構;用條件高斯 \(p_t(\cdot\mid\mathbf z)\) 得到解析目標。透過映射 \(\bm\Psi_{0\to t}(\cdot\mid\mathbf z)\) 加入強結構先驗;容易控制邊界;能處理奇異或低維的端點;自然適合以映射為基礎的正則化或運送成本。

06條件路徑直,不代表邊際軌跡直書 §5.3.5

典型的仿射插值 \(\mathbf x_t=(1-t)\mathbf x_0+t\mathbf x_1\) 有一個吸引人的幾何性質:以一對特定的端點 \((\mathbf x_0,\mathbf x_1)\) 為條件,插值是一條以常數速度 \(\mathbf x_1-\mathbf x_0\) 前進的直線。這種條件意義下的「直」在 Flow Matching 和 Rectified Flow 裡被大量使用。

但重要的是區分這些條件插值路徑的直,和生成時使用的邊際 ODE 軌跡的直。在耦合 \(\pi(\mathbf x_0,\mathbf x_1)\) 下,母體最佳的邊際速度是

$$\mathbf v^\star(\mathbf x,t)=\mathbb E\big[\mathbf x_1-\mathbf x_0\,\big|\,\mathbf x_t=\mathbf x\big].$$

端點配對的後驗一般隨 \((\mathbf x,t)\) 改變。所以沿著一條邊際 ODE 軌跡遇到的速度不必保持常數,即使訓練用的每條條件插值都是直線。

因此,單單選了典型的仿射時程,並不代表學到的邊際 ODE 恰好是直的,也不代表一步 Euler 就是精確的。Rectified Flow 正是針對這個區別:它的 rectification(或 Reflow)程序改變端點的耦合,讓誘導出的因果流逐步接近直的流(Liu et al. 2022);B14 會詳談。下面的例子把這個區別說清楚。

書中的例子:一個簡單的一維反例 一維設定,\(x_0\sim\mathcal N(0,\sigma_0^2)\)、\(x_1\sim\mathcal N(0,\sigma_1^2)\),獨立耦合,典型的仿射插值 \(x_t=(1-t)x_0+tx_1\)。每條條件路徑 \((1-t)x_0+tx_1\) 在時間上都是直線。現在計算誘導出的邊際速度場。

因為 \((x_1-x_0,\,x_t)\) 是聯合高斯,條件期望對 \(x\) 是線性的:

$$v^*(x,t)=\mathbb E[x_1-x_0\mid x_t=x]=\frac{\operatorname{Cov}(x_1-x_0,\,x_t)}{\operatorname{Var}(x_t)}\,x.$$ 直接計算:\(\operatorname{Var}(x_t)=(1-t)^2\sigma_0^2+t^2\sigma_1^2=:V(t)\),\(\operatorname{Cov}(x_1-x_0,\,x_t)=t\sigma_1^2-(1-t)\sigma_0^2=\tfrac12V'(t)\)。所以 $$v^*(x,t)=\frac{V'(t)}{2V(t)}\,x.$$ 邊際 ODE \(\frac{dz_t}{dt}=v^*(z_t,t)\) 的精確解是 $$z_t=z_0\sqrt{\frac{V(t)}{V(0)}}=z_0\sqrt{(1-t)^2+\frac{\sigma_1^2}{\sigma_0^2}\,t^2}.$$ 時間上的直線插值要求 \(z_t\) 對 \(t\) 是仿射的,也就是 \(z_t=(1-t)z_0+tz_1\)。但 \(\sqrt{(1-t)^2+\frac{\sigma_1^2}{\sigma_0^2}t^2}\) 對任何正的 \(\sigma_0,\sigma_1\) 都不是 \(t\) 的仿射函數,所以 ODE 軌跡一般不是時間上的直線插值。例如 \(\sigma_0=\sigma_1\) 時 \(z_1=z_0\),直線插值就是常數路徑 \(z_t=z_0\);但實際的 ODE 軌跡滿足 \(z_{1/2}=z_0/\sqrt2\ne z_0\)。所以即使每條條件插值都是直的,誘導出的邊際 ODE 軌跡不一定是。
例子裡的每一步

變異數與共變異數。\(x_0,x_1\) 獨立、平均 0:\(\operatorname{Var}(x_t)=(1-t)^2\sigma_0^2+t^2\sigma_1^2\);\(\operatorname{Cov}(x_1-x_0,(1-t)x_0+tx_1)=t\operatorname{Var}(x_1)-(1-t)\operatorname{Var}(x_0)=t\sigma_1^2-(1-t)\sigma_0^2\)。對 \(V\) 微分:\(V'(t)=-2(1-t)\sigma_0^2+2t\sigma_1^2\),正好是共變異數的兩倍。

聯合高斯的條件期望。平均為 0 的聯合高斯 \((u,x)\) 滿足 \(\mathbb E[u\mid x]=\frac{\operatorname{Cov}(u,x)}{\operatorname{Var}(x)}x\)(回歸線通過原點)。

解 ODE。\(\frac{dz}{dt}=\frac{V'}{2V}z\) 可以分離變數:\(\frac{dz}{z}=\frac12\frac{V'}{V}dt\),積分得 \(\ln|z_t|-\ln|z_0|=\tfrac12\big(\ln V(t)-\ln V(0)\big)\),所以 \(z_t=z_0\sqrt{V(t)/V(0)}\)。也可以這樣看:\(z_t/\sqrt{V(t)}\) 是常數,粒子在 \(p_t=\mathcal N(0,V(t))\) 裡的標準化座標不變,和第 2 節的高斯命題(\(\mu\equiv0\)、\(\sigma(t)=\sqrt{V(t)}\))一致。

書中的圖:邊際 ODE 軌跡不是直的
書中的圖(§5.3.5):在典型仿射插值下,邊際 ODE 軌跡不是直的。\(\sigma_0=2\)、\(\sigma_1=3\),獨立耦合。橫軸 \(t\in[0,1]\)、縱軸 \(z_t\)。左邊緣是藍色的 \(p_{\text{src}}=\mathcal N(0,\sigma_0^2)\),右邊緣是紅色的 \(p_{\text{tgt}}=\mathcal N(0,\sigma_1^2)\)。灰色的細線是抽樣的條件路徑 \((1-t)x_0+tx_1\),依建構都是直線;背景的淺色箭頭是速度場 \(v^*(x,t)\)。實線是精確的邊際 ODE 軌跡 \(z_t=z_0\sqrt{(1-t)^2+(\sigma_1/\sigma_0)^2t^2}\),從 \(z_0\in\{6,4.5,3,1.5,0.5,-1,-2,-3.5,-5\}\) 出發;虛線是從 \(z_0\) 到 \(z_1\) 的對應直線插值。每條實線都先往 0 彎、再往外張開(例如 \(z_0=6\) 的軌跡先降到約 5、最後到 9,超出圖的上緣),和虛線之間有明顯的縫隙,確認邊際 ODE 軌跡對 \(t\) 不是仿射的,雖然每條條件路徑都是直線。圖片出處:Lai et al. (2026),作者在 AI 輔助寫程式下繪製。
為什麼一步 Euler 會把所有樣本送到同一個點

在 \(t=0\),\(\mathbf x_t=\mathbf x_0\),所以獨立耦合下 \(\mathbf v^\star(\mathbf x,0)=\mathbb E[\mathbf x_1-\mathbf x_0\mid\mathbf x_0=\mathbf x]=\mathbb E[\mathbf x_1]-\mathbf x\)。一步 Euler(\(h=1\))就是 \(\mathbf x+\mathbf v^\star(\mathbf x,0)=\mathbb E[\mathbf x_1]\):不管從哪裡出發,都落在目標分佈的平均。這是「條件路徑直,但邊際軌跡不直」最極端的後果。上面的例子裡 \(\mathbb E[x_1]=0\),一步 Euler 的終點標準差是 0,而不是 \(\sigma_1\);Demo A 的線性時程 \(N=1\) 也一樣,所有樣本都落在 \(\mathbb E[x_1]=0.32\)。(三角函數時程在 \(t=0\) 時 \(a_0'=0\),\(\mathbf v^\star(\mathbf x,0)=\tfrac\pi2\mathbb E[\mathbf x_1]\),一步 Euler 只把整個分佈平移,不會塌成一點,但也不會分成兩團。)

Demo B直線條件路徑,彎曲的邊際軌跡轉述者補充

書中例子的互動版。灰色細線是抽樣的條件路徑 \((1-t)x_0+tx_1\);彩色實線是精確的邊際 ODE 軌跡 \(z_0\sqrt{V(t)/V(0)}\);虛線是同一對端點之間的直線。藍色的點是用 \(N\) 步 Euler 解邊際 ODE 時經過的位置。

條件路徑(直線)精確的邊際 ODE 軌跡端點之間的直線Euler N 步

預設 \(\sigma_0=2\)、\(\sigma_1=3\)(書的圖):在 \(t=\tfrac12\),ODE 軌跡在 \(0.901\,z_0\),直線插值在 \(1.250\,z_0\)。軌跡先往 0 收縮,再張開到 \(1.5\,z_0\)。Euler 法生成的標準差(真值 3):\(N=1\) 是 0、\(N=2\) 是 1.385、\(N=4\) 是 2.121、\(N=8\) 是 2.531、\(N=16\) 是 2.757、\(N=64\) 是 2.937,永遠偏小。原因是 Euler 用每一步開頭的速度往前走,而在 \(t\) 小時速度把粒子往中心拉;把 \(\sigma_1\) 調到等於 \(\sigma_0\)(端點完全相同、直線插值是靜止不動),\(N=2\) 時 \(z_0\) 只被乘上 0.500(標準差只剩一半),\(N=64\) 也只有 0.980 倍。所以「每條訓練路徑都是直線」換不到「少步數就準」,除非邊際軌跡本身變直(B14 的 Reflow)。

與 CS236 的對照

本頁CS236 複習頁
Flow matching、rectified flow 的直線插值第 17 講
VE/VP 的擾動核、PF-ODE第 14 講、第 16 講
flow map、pushforward、仿射變換的變數變換第 8 講
連續方程、Euler 與 Lagrange 描述補充課 C
Euler 法的步數與誤差補充課 B

常見誤解

誤解:「Rectified flow 的訓練路徑是直線,所以生成一步就夠」。直的是條件路徑;邊際軌跡一般是彎的。獨立耦合下一步 Euler 會把所有樣本送到 \(\mathbb E[\mathbf x_1]\)(第 6 節、Demo B)。要讓邊際流變直,得改變耦合(Reflow,B14)。
誤解:「單側和雙側 CFM 是兩種不同的訓練方法」。在 \(\mathbf x_t=a_t\mathbf x_0+b_t\mathbf x_1\) 的配對樣本上,兩者的回歸目標逐樣本相等(第 3 節)。差別在於寫法和能處理的端點,不在學到什麼。
誤解:「Gaussian FM 要求資料是高斯」。要求的是條件路徑 \(p_t(\cdot\mid\mathbf x_1)\) 是高斯;來源因此是高斯,目標 \(p_{\text{data}}\) 可以是任何分佈(第 3 節)。
誤解:「任何高斯時程 \((a_t,b_t)\) 都是一個 diffusion model」。它還要滿足 B10 Lemma 的 SDE 相容條件;diffusion 路徑只是高斯路徑的一個子類(第 3 節)。
誤解:「仿射流只能用在高斯來源」。先指定流的建構對任何 \(p_{\text{src}}\) 都成立;只是來源非高斯時條件路徑也非高斯,但訓練不需要條件密度(第 4 節)。

自我測驗

1. 高斯路徑 \(\mathcal N(\bm\mu(t),\sigma^2(t)\mathbf I)\) 配上 \(\bm\Psi_{0\to t}(\mathbf x)=\bm\mu(t)+\sigma(t)\frac{\mathbf x-\bm\mu(0)}{\sigma(0)}\),速度場是什麼?怎麼推?
\(\mathbf v_t(\mathbf x)=\frac{\sigma'(t)}{\sigma(t)}(\mathbf x-\bm\mu(t))+\bm\mu'(t)\)。對 \(t\) 微分 flow map,再把起點 \(\mathbf y=\bm\mu(0)+\sigma(0)\frac{\mathbf x-\bm\mu(t)}{\sigma(t)}\) 代回去。
2. 單側路徑 \(\mathcal N(b_t\mathbf x_1,a_t^2\mathbf I)\) 的條件速度是什麼?為什麼它在配對樣本上等於 \(a_t'\mathbf x_0+b_t'\mathbf x_1\)?
\(b_t'\mathbf x_1+\frac{a_t'}{a_t}(\mathbf x-b_t\mathbf x_1)\)。配對樣本上 \(\mathbf x_t-b_t\mathbf x_1=a_t\mathbf x_0\)。
3. 為什麼聚光燈路徑的來源「自動」是 \(\mathcal N(\mathbf 0,\mathbf I)\)?
\(p_0(\cdot\mid\mathbf x_1)=\mathcal N(\mathbf 0,\mathbf I)\) 對每個 \(\mathbf x_1\) 都相同,對 \(\pi\) 平均還是它自己。
4. 條件仿射流 \(\bm\mu_t(\mathbf z)+\mathbf A_t(\mathbf z)\mathbf x_0\) 的條件速度是什麼?什麼時候它的條件路徑是高斯?
\(\bm\mu_t'+\mathbf A_t'\mathbf A_t^{-1}(\mathbf x-\bm\mu_t)\)。若且唯若 \(p_{\text{src}}\) 是高斯。
5. 先指定路徑和先指定流,各自在什麼時候比較自然?哪一個的速度場是唯一的?
條件路徑有封閉形式速度(例如高斯)時先指定路徑;對軌跡有結構先驗、要處理非高斯或低維端點、在流形上時先指定流。給定可逆的 flow map,Euler 速度唯一;只給密度路徑時速度不唯一。
6. 在 \(\sigma_0=\sigma_1\) 的一維反例裡,直線插值和實際的 ODE 軌跡在 \(t=\tfrac12\) 各在哪裡?
直線插值是常數 \(z_0\);ODE 軌跡在 \(z_0\sqrt{1/4+1/4}=z_0/\sqrt2\)。
7. 獨立耦合、線性時程下,一步 Euler 從 \(t=0\) 走到 \(t=1\) 會得到什麼?
\(\mathbf v^\star(\mathbf x,0)=\mathbb E[\mathbf x_1]-\mathbf x\),所以每個起點都落在 \(\mathbb E[\mathbf x_1]\)。