擴散模型原理 B17 · Fokker–Planck 統一三觀點
The Principles of Diffusion Models · 第 6 章 §6.4–6.5

一切之下:Fokker–Planck 方程把三個觀點綁在一起

第 6 章的最後一塊拼圖。變分觀點的離散核、Score SDE 的隨機動態、flow 的確定性 ODE,各自生成的分佈都服從同一條密度方程。這一頁先用一張圖整理三者的關係,再證明這一章最實用的結論:給定一條邊際路徑,PF-ODE 只是一整族反向 SDE 裡雜訊為零的那一個;調整雜訊強度 \(\gamma(t)\) 會改變每個樣本怎麼走,但不改變任何時刻的分佈。最後是第 6 章的結語,也就是 Part B 理論部分的終點。

書的範圍:第 6 章 §6.4(含 §6.4.1)、§6.5 閱讀時間:約 35 分鐘

讀完這頁你應該能夠

  1. 畫出統一圖:前向(離散核 ⇔ 前向 SDE)、反向(變分反向核 ⇄ 反向 SDE ⇄ PF-ODE),都匯到同一條連續方程/Fokker–Planck 方程。
  2. 寫出以 \(\gamma(t)\) 為參數的一族反向 SDE,並證明它們和 PF-ODE 有相同的邊際。
  3. 從速度反推 score:\(\mathbf s^*=\frac1{\sigma_t}\frac{\alpha_t\mathbf v^*-\alpha_t'\mathbf x}{\alpha_t'\sigma_t-\alpha_t\sigma_t'}\),並說明怎麼用訓練好的速度模型做 SDE 取樣。
  4. 區分「底層連續理論的等價」和「實際訓練或取樣演算法的等價」。

前置知識

  • B08:前向 SDE、反向 SDE、PF-ODE;B09:Fokker–Planck 方程讓三者的邊際對齊。
  • B10:\((\alpha_t,\sigma_t)\Leftrightarrow(f,g)\) 的 Lemma,以及第 5 節用邊際化和貝氏定理啟發式地推 Fokker–Planck 和反向 SDE。
  • B16:四種預測的換算、\(\mathbf v^*=f(t)\mathbf x-\frac12g^2(t)\mathbf s^*\);B12:連續方程。
  • \(\nabla\cdot(\mathbf s\,p)=\nabla\cdot(\nabla p)=\Delta p\),因為 \(\mathbf s=\nabla\log p=\nabla p/p\)。
時間方向。和 B15、B16 一樣:\(t=0\) 是資料,\(t=T\) 是先驗。反向 SDE 用原本的時間變數 \(t\) 寫,但從 \(T\) 積分到 0,所以 \(dt<0\)、\(d\bar{\mathbf w}\) 是反向時間的布朗運動。

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

01一切之下:Fokker–Planck 方程書 §6.4

前向過程
變分觀點定義 \(p(\mathbf x_t\mid\mathbf x_{t-\Delta t})\),或 \(p_t(\mathbf x_t\mid\mathbf x_0)\Leftrightarrow\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\)
⇔
B10 的 Lemma
前向 SDE\(d\mathbf x(t)=f(t)\mathbf x(t)\,dt+g(t)\,d\mathbf w(t)\)
從 \(t=0\) 的 \(p_{\text{data}}\) 往前
↓
\(p_t(\mathbf x)\) 的連續方程/Fokker–Planck 方程
↑
反向過程
變分觀點由貝氏定理得到 \(p(\mathbf x_{t-\Delta t}\mid\mathbf x_t)\)
→ \(\Delta t\to0\)
← 離散化
反向 SDE\(d\bar{\mathbf x}=\big[\mathbf v^*-\tfrac12\gamma^2(t)\mathbf s^*\big]dt+\gamma(t)\,d\bar{\mathbf w}(t)\)
↓ \(\gamma\equiv0\) ↑ \(\gamma\not\equiv0\)
PF-ODE\(d\mathbf x(t)=\mathbf v^*(\mathbf x(t),t)\,dt\)
從 \(t=T\) 的 \(p_{\text{prior}}\) 倒回來
依書中的圖重繪(§6.4):透過連續方程連起變分、SDE 和 ODE 表述的統一觀點,所有的 \(p_t(\mathbf x)\) 都在同一個動態下演化。上方的「前向過程」框裡,變分觀點的轉移核和前向 SDE 由 B10 的 Lemma 雙向連結;下方的「反向過程」框裡,變分的反向核在 \(\Delta t\to0\) 時變成反向 SDE、反過來反向 SDE 離散化得到變分的反向核,反向 SDE 在 \(\gamma\equiv0\) 時變成 PF-ODE、反過來 PF-ODE 加上 \(\gamma\not\equiv0\) 得到反向 SDE。兩個大框都用粗箭頭指向中間的「連續方程/Fokker–Planck 方程」。書的圖說:速度場 \(\mathbf v^*(\mathbf x,t)=f(t)\mathbf x-\frac12g^2(t)\mathbf s^*(\mathbf x,t)\) 由 score function \(\mathbf s^*(\mathbf x,t):=\nabla_{\mathbf x}\log p_t(\mathbf x)\) 決定;\(f(t)\)、\(g(t)\)、\(\sigma_t\)、\(\alpha_t\) 是預先定義的時間函數,\(\gamma(t)\) 是可以調的時間超參數。

這一節說明 diffusion model 的三個主要觀點(變分、score-based、flow-based)不是三個各自獨立的建構,而是出自同一個統一的原則:在選定的前向過程下支配密度演化的連續(Fokker–Planck)方程。

首先回想 B10 第 5 節的分析(書 §4.6),它把基於離散核和貝氏定理的變分觀點,和連續動態的 score-based SDE 觀點統一起來。那裡的連結是:變分模型是底層前向與反向 SDE 的一致離散化。具體地說,用離散核一步一步算出的邊際密度,演化的方式和支配連續時間動態的 Fokker–Planck 方程一致。這確認了兩個觀點在根本上等價。

接著連起 flow-based 和 score-based 觀點。第 2 節會證明:一個 ODE 流決定的密度路徑,它的邊際永遠可以由一整族隨機過程實現。這把確定性的流和隨機的 SDE 放進同一個族裡。合起來,這些結果把三個觀點統一在一個框架下(上圖)。最後第 3 節總結這一章。

這張圖裡每條線各在哪一頁證明過
  • 前向:轉移核 ⇔ 前向 SDE:B10 的 Lemma(給定 \(\alpha_t,\sigma_t\) 算出 \(f,g\),反之亦然)。
  • 前向 SDE → Fokker–Planck:B09(書 §4.2);用邊際化啟發式地推,在 B10 第 5 節。
  • 變分反向核 ↔ 反向 SDE:B10 第 5 節用貝氏定理和泰勒展開,顯示 DDPM 的反向核在 \(\Delta t\to0\) 時收斂到反向 SDE 的一步。
  • 反向 SDE ↔ PF-ODE:B08 介紹了 \(\gamma=g\) 和 \(\gamma=0\) 兩個端點;本頁第 2 節把它們之間整個連續的族都補上。

02Flow-based 方法與 Score SDE 的連結書 §6.4.1

diffusion model 一個了不起的地方,是不同的動態系統,不論確定性或隨機,都可以描出同一個機率分佈的演化。這一節揭示第 5 章 flow matching 框架的 ODE 流和 Score SDE 之間自然而優雅的連結:定義生成 ODE 的速度場,可以轉成一個遵循同樣 Fokker–Planck 動態的隨機版本,在確定性插值和隨機取樣之間搭起有原則的橋。這給出一整個連續的模型族,從 ODE 到 SDE,都生成同一條資料分佈路徑。

考慮連續時間的設定,擾動核是 \(p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N(\mathbf x_t;\alpha_t\mathbf x_0,\sigma_t^2\mathbf I)\),\(\mathbf x_0\sim p_{\text{data}}\)。這個條件分佈照常誘導出邊際密度路徑 \(p_t(\mathbf x_t)=\mathbb E_{\mathbf x_0\sim p_{\text{data}}}[p(\mathbf x_t\mid\mathbf x_0)]\),\(p_T\approx p_{\text{prior}}\)。為了匹配這條密度路徑,考慮 ODE

$$\frac{d\mathbf x(t)}{dt}=\mathbf v_t(\mathbf x(t)),\qquad t\in[0,T],$$

其中 \(\mathbf v_t(\mathbf x)=\mathbb E[\alpha_t'\mathbf x_0+\sigma_t'\bm\epsilon\mid\mathbf x]\) 是 oracle 速度(B12 的邊際速度式,時間翻轉成 diffusion 的慣例)。從 \(\mathbf x(T)\sim p_{\text{prior}}\) 倒著積分,得到 \(p_0\) 的樣本。

這條 ODE 足以生成高品質的樣本,但加入隨機性可能提升樣本的多樣性。這引出下面的問題:

書中的問題有沒有一個 SDE,從 \(p_{\text{prior}}\) 出發,它的動態給出和上面的 ODE 相同的邊際密度?

答案是肯定的:有一整族反向時間的 SDE,誘導和對應 PF-ODE 相同的邊際密度路徑。這些 SDE 誘導的密度對這條路徑滿足同一個 Fokker–Planck 方程,所以它們的單一時刻邊際都和指定的插值 \(\{p_t\}_{t\in[0,T]}\) 一致。(書的註腳:為了完整,前向 SDE 的表示是 \(d\mathbf x(t)=f(t)\mathbf x(t)\,dt+g(t)\,d\mathbf w(t)\),\(f,g\) 和 \((\alpha_t,\sigma_t)\) 由 B10 的式子相關;這裡用不到。)

書中的命題:反向時間 SDE 生成和插值相同的邊際 令 \(\gamma(t)\ge0\) 是任意的時間函數。考慮用原時間變數 \(t\) 寫、從 \(T\) 倒著積分到 0 的反向時間 SDE $$d\bar{\mathbf x}(t)=\Big[\mathbf v^*(\bar{\mathbf x}(t),t)-\tfrac12\gamma^2(t)\,\mathbf s^*(\bar{\mathbf x}(t),t)\Big]dt+\gamma(t)\,d\bar{\mathbf w}(t),\qquad t:T\to0,$$ 終端條件 \(\bar{\mathbf x}(T)\sim p_T\)。則這個過程 \(\{\bar{\mathbf x}(t)\}_{t\in[0,T]}\) 符合 ODE 的密度路徑誘導的指定邊際 \(\{p_t\}_{t\in[0,T]}\)。這裡 \(\mathbf s^*(\mathbf x,t):=\nabla_{\mathbf x}\log p_t(\mathbf x)\) 是 score function,它和速度場 \(\mathbf v^*(\mathbf x,t)\) 的關係是 $$\mathbf v^*(\mathbf x,t)=f(t)\mathbf x-\frac12g^2(t)\,\mathbf s^*(\mathbf x,t),\qquad\mathbf s^*(\mathbf x,t)=\frac1{\sigma_t}\,\frac{\alpha_t\mathbf v^*(\mathbf x,t)-\alpha_t'\mathbf x}{\alpha_t'\sigma_t-\alpha_t\sigma_t'}.$$
證明(書;正負號與相消逐步展開)

反向時間的 Fokker–Planck。令 \(\mathbf b:=\mathbf v^*-\frac12\gamma^2\mathbf s^*\)。換成正向流動的時間 \(r=T-t\),過程 \(\mathbf y(r)=\bar{\mathbf x}(T-r)\) 是一般的(正向)SDE \(d\mathbf y=-\mathbf b\,dr+\gamma\,d\mathbf w(r)\),它的密度 \(q_r\) 滿足 Fokker–Planck 方程

$$\partial_rq_r=\nabla\cdot(\mathbf b\,q_r)+\tfrac12\gamma^2\Delta q_r.$$

換回 \(t\)(\(\partial_t=-\partial_r\),\(p_t=q_{T-t}\)):

$$\partial_tp_t=-\nabla\cdot\Big(\big[\mathbf v^*-\tfrac12\gamma^2\mathbf s^*\big]p_t\Big)-\tfrac12\gamma^2\Delta p_t.$$

這就是書寫的「以原時間變數 \(t\) 寫、但過程倒著積分」的 Fokker–Planck 方程。注意擴散項的符號是負的:倒著走時,擴散在原時間的方向上看起來像「反擴散」。

相消。展開右邊第一項:\(-\nabla\cdot(\mathbf v^*p_t)+\tfrac12\gamma^2\nabla\cdot(\mathbf s^*p_t)\)。因為 \(\mathbf s^*=\nabla\log p_t\),\(\mathbf s^*p_t=\nabla p_t\),所以 \(\nabla\cdot(\mathbf s^*p_t)=\Delta p_t\)。這一項和最後的 \(-\tfrac12\gamma^2\Delta p_t\) 正好抵消:

$$\partial_tp_t=-\nabla\cdot(\mathbf v^*p_t).$$

這是 PF-ODE 對應的一階連續方程,和 \(\gamma\) 無關。再由 B12 的質量守恆判準(以及終端條件相同),反向 SDE 和 ODE 誘導同一條邊際密度路徑 \(\{p_t\}\)。書指向 Ma et al. (2024) 附錄 A.2–A.3 的完整論證。∎

score 的反推式。就是 B16 第 4 節「速度到 score」的換算:\(\mathbf v^*=\frac{\alpha_t'}{\alpha_t}\mathbf x+\frac{\sigma_t(\alpha_t'\sigma_t-\alpha_t\sigma_t')}{\alpha_t}\mathbf s^*\),反解 \(\mathbf s^*\)。

在命題的 oracle 層級,\(\gamma(t)\) 可以任意選,不改變指定的邊際密度路徑:依賴 \(\gamma\) 的漂移和擴散項在 Fokker–Planck 方程裡精確抵消。幾個代表性的選擇:

  • \(\gamma(t)=0\):還原上面的 ODE。
  • \(\gamma(t)=g(t)\):變成 B08 的反向時間 SDE,因為 oracle 速度滿足 \(\mathbf v^*(\mathbf x,t)=f(t)\mathbf x-\frac12g^2(t)\mathbf s^*(\mathbf x,t)\)(B16 的命題)。
  • 其他選擇也有人研究;例如 Ma et al. (2024)(SiT)選 \(\gamma(t)\) 來最小化 \(p_{\text{data}}\) 和「從 \(t=T\) 解這個 SDE 得到的 \(t=0\) 密度」之間的 KL 差距。
\(\gamma=g\) 時為什麼就是 B08 的反向 SDE
$$\mathbf v^*-\tfrac12g^2\mathbf s^*=f\mathbf x-\tfrac12g^2\mathbf s^*-\tfrac12g^2\mathbf s^*=f(t)\mathbf x-g^2(t)\,\mathbf s^*,$$

正是 Anderson 反向 SDE 的漂移 \(f\mathbf x-g^2\nabla\log p_t\),擴散係數也是 \(g\)。所以 B08 的反向 SDE 是這個族裡 \(\gamma=g\) 的成員,PF-ODE 是 \(\gamma=0\) 的成員;一般的 \(\gamma\) 在兩者之間(或超過 \(g\))連續地插值。

依照 Score SDE 的做法,訓練好的速度場 \(\mathbf v_{\bm\phi^\times}(\mathbf x,t)\) 可以用上面的式子換成參數化的 score \(\mathbf s_{\bm\phi^\times}(\mathbf x,t)\)。代進反向 SDE 就定義了一個經驗反向時間 SDE,可以從 \(t=T\)、\(\bar{\mathbf x}(T)\sim p_{\text{prior}}\) 出發數值積分來取樣。

這個命題突顯了 diffusion model 一個了不起的彈性:一旦前向過程誘導出一條邊際密度路徑 \(\{p_t\}_{t\in[0,T]}\),它就可以由一整族反向時間動態實現,包括 PF-ODE 和反向時間 SDE

$$d\bar{\mathbf x}(t)=\big[\mathbf v^*(\bar{\mathbf x},t)-\tfrac12\gamma^2(t)\mathbf s^*(\bar{\mathbf x},t)\big]dt+\gamma(t)\,d\bar{\mathbf w}(t),\qquad\gamma(t)\ge0,$$

從 \(t=T\) 到 \(t=0\)。雖然 \(\gamma(t)\) 改變個別軌跡的隨機動態,對這條指定的密度路徑,對應的 Fokker–Planck 方程全都化成同一條支配密度的方程:

$$\partial_tp_t=-\nabla_{\mathbf x}\cdot\big(\mathbf v^*(\mathbf x,t)\,p_t(\mathbf x)\big).$$

確實,用 \(\mathbf s^*(\mathbf x,t)=\nabla_{\mathbf x}\log p_t(\mathbf x)\),額外依賴 \(\gamma\) 的漂移和擴散項在密度層級抵消。所以 \(\gamma(t)\) 控制樣本軌跡的隨機性,同時保持同樣的 oracle 單一時刻邊際,把確定性的 PF-ODE 和一族隨機的 SDE 連起來,如第 1 節的圖所示。

「邊際相同」不等於「什麼都相同」

命題保證的是單一時刻的邊際 \(p_t\) 相同。不同的 \(\gamma\) 給出不同的聯合分佈:例如起點 \(\bar{\mathbf x}(T)\) 和終點 \(\bar{\mathbf x}(0)\) 之間的關係。\(\gamma=0\) 時終點是起點的確定函數;\(\gamma\) 越大,終點越不依賴起點(Demo A 用相關係數量這件事)。另外兩個實務上的差別:用學到的、有誤差的 score 時,不同的 \(\gamma\) 對誤差的反應不同(雜訊有修正累積誤差的效果,Ma et al. 選 \(\gamma\) 正是為了這個);數值離散化時,\(\gamma\) 越大,漂移裡的 \(-\frac12\gamma^2\mathbf s^*\) 越強,需要的步數可能越多。

Demo A一整族反向 SDE,同一條邊際路徑轉述者補充

一維資料 \(0.6\,\mathcal N(1.2,0.25^2)+0.4\,\mathcal N(-1,0.2^2)\),DDPM 式的 VP 時程(\(\beta(t)=0.1+19.9t\),\(f=-\beta/2\)、\(g^2=\beta\)),精確的 oracle score 與速度。選 \(\gamma(t)=\lambda\,g(t)\):\(\lambda=0\) 是 PF-ODE,\(\lambda=1\) 是 B08 的反向 SDE。2,000 個粒子從精確的 \(p_1\) 出發,用 Euler–Maruyama 500 步從 \(t=1\) 積分到 \(t=0.01\)。上圖是 20 條軌跡;下圖是時刻 \(t\) 的直方圖和精確的 \(p_t\)。

2,000 個粒子的直方圖精確的 pt

上圖時間由右往左走(從 \(t=1\) 到 0)。\(\lambda=0\) 的軌跡平滑、互不交叉,在 \(t\) 降到約 0.3 時分成兩束;\(\lambda=1\) 的軌跡劇烈抖動、常常越過 0 換到另一團。但兩者在任何時刻的直方圖都貼著同一條精確的 \(p_t\)。瀏覽器實測(四個 \(\lambda\) 用同一個亂數種子):

\(\lambda\)上團平均變異數L1(\(t=0.01\))L1(\(t=0.5\))起點–終點相關
0(ODE)61.6%0.3481.1890.0630.1180.899
0.559.9%0.3161.2230.0750.1390.278
1(反向 SDE)59.9%0.3191.2220.0670.1320.008
259.3%0.3091.2200.0740.1350.009

精確值是上團 60%、平均 0.320、變異數 1.215。四個 \(\lambda\) 的直方圖 L1 誤差都在「用 2,000 個精確樣本畫直方圖」的雜訊底線(0.109)的量級,也就是和精確的 \(p_t\) 分不出差別:邊際相同。真正不同的是最後一行:ODE 的終點幾乎由起點決定(相關 0.899;不是 1,因為映射是非線性的),\(\lambda=0.5\) 只剩 0.278,\(\lambda\ge1\) 時終點和起點幾乎無關。另外一個小觀察:\(\lambda=0\) 的平均(0.348)和變異數(1.189)離精確值稍遠,是 500 步 Euler 解 ODE 的離散化偏差;在這個例子裡 SDE 版本反而更準,這和上面補充框說的「雜訊對誤差的反應不同」一致,但只是這個例子的觀察,不是一般結論。

Demo BFokker–Planck 方程裡的相消轉述者補充

同一個資料和時程,固定一個時刻 \(t\),在 \(x\) 的格點上用有限差分算出反向 SDE 的 Fokker–Planck 方程右邊的三項:

$$\underbrace{-\partial_x(v^*p_t)}_{\text{(i) 漂移}}\ +\ \underbrace{\tfrac12\gamma^2\,\partial_x(s^*p_t)}_{\text{(ii) 額外漂移}}\ \underbrace{-\ \tfrac12\gamma^2\,\partial_{xx}p_t}_{\text{(iii) 擴散}}$$

以及左邊的 \(\partial_tp_t\)(對 \(t\) 的中央差分)。(ii) 和 (iii) 互為相反數,(i) 等於 \(\partial_tp_t\)。

(i) −∂ₓ(v p)∂ₜp(虛線)(ii) ½γ²∂ₓ(s p)(iii) −½γ²∂ₓₓp

預設 \(t=0.3\)、\(\lambda=1\):(ii)(橘)和 (iii)(綠)上下對稱,加起來的最大值是 \(4.3\times10^{-5}\),而 (ii) 本身最大約 1.0;(i)(藍)和虛線的 \(\partial_tp_t\) 重合,差距 \(6.6\times10^{-5}\)。這些殘差都是有限差分的截斷誤差(格距 0.01)。把 \(\lambda\) 調到 2、\(t\) 調到 0.7,(ii) 和 (iii) 各自大到約 11,(i) 只有 0.046,殘差仍只有 \(10^{-4}\) 量級:\(\gamma\) 越大,兩項越大,但永遠互相抵消,剩下的 (i) 和 \(\gamma\) 完全無關。\(t=0.1\) 時資料的兩團比較尖,有限差分的誤差升到 \(10^{-3}\) 上下:(ii) 加 (iii) 的殘差是 \(6\times10^{-4}\),相對大小仍只有 (ii) 的萬分之二。這就是第 2 節證明裡那一行 \(\nabla\cdot(\mathbf s^*p_t)=\Delta p_t\) 的數值樣子。

03第 6 章結語書 §6.5

這一章是全書理論探索的拱心石,把變分、score-based 和 flow-based 觀點綜合成一個單一、一致的框架。我們證明了這三個看似不同的方法不只是平行的,而是在根本上深深相連。

這個統一建立在兩個核心洞見上。第一,找到所有框架共同的祕方:條件化技巧,把算不出來的邊際訓練目標變成好處理的條件目標,讓學習穩定又有效率(B15)。第二,確立 Fokker–Planck 方程是支配機率密度演化的普遍規律(本頁)。三個觀點各以自己的方式,建構遵守這個基本動態的生成過程。

此外,我們證明了 oracle 的雜訊、乾淨資料、score 和速度預測含有相同的資訊,可以代數地互相換算(B16)。這個 oracle 等價並不表示預測的參數化只是表面的:有限容量的網路可能以不同方式逼近這些目標,它們的訓練目標可能在不同雜訊等級上以不同方式加權誤差,有限步的數值解法也可能依動態被近似的表示方式而表現不同。所以重要的教訓是:區分底層連續理論的等價,和實際訓練或取樣演算法的等價。不過在密度層級,共同的原則仍然成立:現代的 diffusion 方法建構的動態,它的邊際沿著一條指定的機率路徑,把簡單的先驗運送到資料分佈。

有了這個統一、有原則的基礎,我們就準備好從基礎理論走向 diffusion model 的實際應用與加速。「生成等於解一個微分方程」這個核心洞見,為控制和最佳化提供了強大的平台。書接下來的部分會利用這個統一的理解,處理幾個關鍵的實務挑戰:

  1. Part C 著重在推論時改進取樣過程:探討怎麼引導生成的軌跡做可控生成(第 8 章,B21–B23),並研究進階的數值解法,大幅加速緩慢、反覆的取樣過程(第 9 章,B24–B27)。
  2. Part D 接著超越反覆的解法,直接學快速的生成器:檢視只用一步或幾步就產生高品質樣本的方法,不論是從老師模型蒸餾(第 10 章,B28),或是從頭訓練(第 11 章,B29–B31)。

統一了 diffusion model 的「是什麼」和「為什麼」之後,接下來轉向「怎麼做」這個令人興奮的實務前沿。

轉述者整理:第 6 章在本系列的位置。
統一的層級內容頁
訓練條件化技巧:邊際 oracle = 條件 oracle 的後驗平均B15
損失的拆解時程、預測、時間分佈、權重B15
預測\(\bm\epsilon^*,\mathbf x^*,\mathbf s^*,\mathbf v^*\) 互相換算;損失只差權重B16
時程所有仿射流都是典型路徑換時鐘、再縮放B16
動態同一條 \(\{p_t\}\) 由 PF-ODE 和一整族反向 SDE 實現;Fokker–Planck 是共同規律B17

與 CS236 的對照

本頁CS236 複習頁
反向 SDE、PF-ODE、Fokker–Planck第 14 講
DDPM 作為 SDE 的離散化第 16 講
Flow matching 與 diffusion 的關係第 17 講
Fokker–Planck、Langevin、反向 SDE補充課 F
布朗運動、Euler–Maruyama補充課 E
連續方程補充課 C

常見誤解

誤解:「PF-ODE 和反向 SDE 是兩種不同的模型,要分別訓練」。它們用同一個 score(或速度);只是 \(\gamma\) 不同的取樣方式(第 2 節)。訓練好一個速度模型,就可以換成 score 拿去做 SDE 取樣。
誤解:「加雜訊會改變生成的分佈」。在 oracle 層級,任何 \(\gamma(t)\ge0\) 都給出完全相同的每個時刻邊際;額外的漂移 \(-\frac12\gamma^2\mathbf s^*\) 恰好抵消擴散(第 2 節、Demo B)。
誤解:「邊際相同,所以 ODE 和 SDE 的樣本也相同」。同一個起點在不同 \(\gamma\) 下會走到不同的地方;只有整體的分佈相同(Demo A 的相關係數)。
誤解:「理論等價,所以實作上怎麼選都一樣」。書的結語特別強調:連續理論的等價不等於實際訓練或取樣演算法的等價;網路容量、損失權重和有限步的解法都會造成差別。

自我測驗

1. 寫出以 \(\gamma(t)\) 為參數的反向 SDE 族。\(\gamma=0\) 和 \(\gamma=g\) 各是什麼?
\(d\bar{\mathbf x}=[\mathbf v^*-\frac12\gamma^2\mathbf s^*]dt+\gamma\,d\bar{\mathbf w}\)。\(\gamma=0\):PF-ODE;\(\gamma=g\):漂移 \(f\mathbf x-g^2\mathbf s^*\),就是 Anderson 的反向 SDE。
2. 證明它們的邊際都相同的關鍵一步是什麼?
\(\nabla\cdot(\mathbf s^*p_t)=\Delta p_t\)(因為 \(\mathbf s^*p_t=\nabla p_t\)),所以額外漂移項 \(\frac12\gamma^2\nabla\cdot(\mathbf s^*p_t)\) 和擴散項 \(-\frac12\gamma^2\Delta p_t\) 抵消,剩下 \(\partial_tp_t=-\nabla\cdot(\mathbf v^*p_t)\)。
3. 只有一個訓練好的速度模型,怎麼做 SDE 取樣?
用 \(\mathbf s=\frac1{\sigma_t}\frac{\alpha_t\mathbf v-\alpha_t'\mathbf x}{\alpha_t'\sigma_t-\alpha_t\sigma_t'}\) 換成 score,代進反向 SDE 族,從 \(p_{\text{prior}}\) 數值積分。
4. 不同的 \(\gamma\) 有哪些地方不同?
單一時刻的邊際相同,但軌跡、起點和終點的聯合分佈不同;用有誤差的模型時,對誤差的累積或修正不同;數值離散化需要的步數也可能不同。
5. 第 6 章的兩個核心洞見是什麼?書最後強調要區分哪兩種等價?
條件化技巧;Fokker–Planck 是普遍規律。要區分底層連續理論的等價,和實際訓練或取樣演算法的等價。