一切之下:Fokker–Planck 方程把三個觀點綁在一起
第 6 章的最後一塊拼圖。變分觀點的離散核、Score SDE 的隨機動態、flow 的確定性 ODE,各自生成的分佈都服從同一條密度方程。這一頁先用一張圖整理三者的關係,再證明這一章最實用的結論:給定一條邊際路徑,PF-ODE 只是一整族反向 SDE 裡雜訊為零的那一個;調整雜訊強度 \(\gamma(t)\) 會改變每個樣本怎麼走,但不改變任何時刻的分佈。最後是第 6 章的結語,也就是 Part B 理論部分的終點。
讀完這頁你應該能夠
- 畫出統一圖:前向(離散核 ⇔ 前向 SDE)、反向(變分反向核 ⇄ 反向 SDE ⇄ PF-ODE),都匯到同一條連續方程/Fokker–Planck 方程。
- 寫出以 \(\gamma(t)\) 為參數的一族反向 SDE,並證明它們和 PF-ODE 有相同的邊際。
- 從速度反推 score:\(\mathbf s^*=\frac1{\sigma_t}\frac{\alpha_t\mathbf v^*-\alpha_t'\mathbf x}{\alpha_t'\sigma_t-\alpha_t\sigma_t'}\),並說明怎麼用訓練好的速度模型做 SDE 取樣。
- 區分「底層連續理論的等價」和「實際訓練或取樣演算法的等價」。
前置知識
- 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\)。
「書 §」標出原文位置。灰框「轉述者補充」是書裡沒有的內容;藍框「推導」展開書中省略的步驟。
01一切之下:Fokker–Planck 方程書 §6.4
B10 的 Lemma
← 離散化
這一節說明 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 節總結這一章。
這張圖裡每條線各在哪一頁證明過
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,誘導和對應 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 的式子相關;這裡用不到。)
證明(書;正負號與相消逐步展開)
反向時間的 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
正是 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 方程全都化成同一條支配密度的方程:
確實,用 \(\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\)。
上圖時間由右往左走(從 \(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.348 | 1.189 | 0.063 | 0.118 | 0.899 |
| 0.5 | 59.9% | 0.316 | 1.223 | 0.075 | 0.139 | 0.278 |
| 1(反向 SDE) | 59.9% | 0.319 | 1.222 | 0.067 | 0.132 | 0.008 |
| 2 | 59.3% | 0.309 | 1.220 | 0.074 | 0.135 | 0.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\)。
預設 \(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 的實際應用與加速。「生成等於解一個微分方程」這個核心洞見,為控制和最佳化提供了強大的平台。書接下來的部分會利用這個統一的理解,處理幾個關鍵的實務挑戰:
- Part C 著重在推論時改進取樣過程:探討怎麼引導生成的軌跡做可控生成(第 8 章,B21–B23),並研究進階的數值解法,大幅加速緩慢、反覆的取樣過程(第 9 章,B24–B27)。
- Part D 接著超越反覆的解法,直接學快速的生成器:檢視只用一步或幾步就產生高品質樣本的方法,不論是從老師模型蒸餾(第 10 章,B28),或是從頭訓練(第 11 章,B29–B31)。
統一了 diffusion model 的「是什麼」和「為什麼」之後,接下來轉向「怎麼做」這個令人興奮的實務前沿。