擴散模型原理 · 中文導讀
The Principles of Diffusion Models · 中文導讀

擴散模型原理:中文導讀

這是 Lai, Song, Kim, Mitsufuji, Ermon 所著《The Principles of Diffusion Models》的中文轉述版,分成 36 頁,給手機閱讀。內容和原書講同樣的東西,但不逐句翻譯:用更白話的方式重講,書裡一筆帶過的推導展開,另外加上可以在瀏覽器裡操作的 demo、常見誤解和自我測驗。

原書:arXiv:2510.21890 v3(2026-08-27) 作者:Chieh-Hsin Lai(Sony AI)、Yang Song(OpenAI)、Dongjun Kim(Stanford)、Yuki Mitsufuji(Sony)、Stefano Ermon(Stanford)

這套頁面怎麼讀

  • 順序:照下面的目錄依序讀。書建議照章節順序讀;標「選讀」的部分,熟悉基礎的讀者可以跳過,其他選讀的部分則是進階或專門主題的深入內容。例如已經熟悉生成模型可以跳過 B01,熟悉 VAE、EBM、normalizing flow 可以跳過對應的介紹節。
  • 每一頁的標示:
    • 標題旁的「書 §x.y」是原文位置。
    • 灰框「轉述者補充」是書裡沒有、另外加上的背景或解讀。
    • 藍框「推導」是展開書中省略的步驟。
    • 藍底的「書中的 Message/Lemma」是書本身的重點框。
  • 章號:用書裡的編號(Prologue 是第 1 章)。記號沿用書的寫法。要注意書和 CS236 的 VAE 記號相反:書裡 encoder 的參數是 \(\bm\theta\)、decoder 是 \(\bm\phi\)。
  • 授權:原書以 CC BY-NC-ND 4.0 授權。這套轉述屬於改作,只供個人閱讀,所有頁面都設為私人、不公開分享。書中的圖片原樣引用並註明出處;書裡用 TikZ 畫的示意圖,則在頁面上重繪。

目錄

Part A · 深度生成模型導論

  1. B01深度生成模型:要學什麼、怎麼量好壞、難在哪裡第 1 章:從資料學一個分佈、forward KL 與 MLE(mode covering)、Fisher divergence 不受歸一化常數影響、f-divergence 與 Wasserstein、歸一化常數為什麼算不出來、EBM/AR/VAE/NF/GAN 與六種計算圖、GAN 的最佳判別器與 JS、顯式與隱式模型已完成

Part B · Diffusion 的基礎與三種觀點

  1. B02Diffusion 初探:加雜訊、學猜答案、從雜訊走回來Part B 開場:xt = αtx0 + σtε 與快照分佈 pt、訓練就是把乾淨訊號猜回來(平方誤差的最佳解是條件期望)、取樣:保留預測的訊號與雜訊、換成低一點雜訊等級的係數、為什麼不能一步到位、和後面各章的關係已完成
  2. B03Variational Autoencoder:用一個下界訓練潛在變數模型第 2 章 §2.1:ELBO 與它的缺口、Gaussian VAE、模糊、(選讀)階層式 VAE已完成
  3. B04DDPM:把 encoder 固定成加雜訊,只學去雜訊第 2 章 §2.2–2.3:前向過程、conditioning trick、ε-prediction、ELBO、取樣、本章小結已完成
  4. B05從 EBM 到 score:只要知道往哪裡機率比較高,就能生成第 3 章 §3.1–3.2:EBM、score、score matching、Langevin 取樣已完成
  5. B06Denoising score matching:加一點雜訊,score 就有了答案第 3 章 §3.3:sliced SM、DSM、Tweedie、(選讀)SURE、generalized SM已完成
  6. B07NCSN:一個網路學一整排雜訊等級,再從粗到細地退火取樣第 3 章 §3.4–3.6:NCSN、annealed Langevin、NCSN 與 DDPM 的對照、結語已完成
  7. B08Score SDE:把一排雜訊等級變成連續的時間第 4 章開頭、§4.1:前向 SDE、擾動核、反向 SDE、PF-ODE已完成
  8. B09Fokker–Planck:為什麼反向 SDE 和 PF-ODE 走過同一串分佈第 4 章 §4.2–4.3:Fokker–Planck、高斯的例子、訓練、取樣、反演、概似已完成
  9. B10VE、VP,以及直接寫下 xt = αtx0 + σtε第 4 章 §4.4–4.7:VE/VP SDE、累積擾動核、SNR 權重、(選讀)啟發式推導、結語已完成
  10. B11Normalizing flow 與 neural ODE:從一步一步變成連續的流第 5 章開頭、§5.1:變數變換、NF、planar/residual flow、neural ODE、瞬時變數變換已完成
  11. B12Flow Matching:不解 ODE,直接用回歸學速度場§5.2:從 Score SDE 學到的條件化、FM 框架、CFM 損失、連續方程與質量守恆已完成
  12. B13建構機率路徑與速度場:條件高斯、仿射流與「直線」的真正意思§5.3:高斯橋、光束與聚光燈路徑、插值時程表、先指定路徑 vs. 先指定流、條件直線不等於邊際直線已完成
  13. B14Reflow:換掉配對,把彎曲的流拉直§5.4–5.5(選讀):Rectify、Reflow、成本不增與直度上界、直線配對不一定最佳、第 5 章結語已完成
  14. B15三個觀點,一個祕方:條件化技巧與訓練目標的拆解第 6 章開頭、§6.1–6.2、附錄 D.6:條件化技巧、有限資料集的 oracle 與記憶、四種預測、時程/參數化/時間分佈/權重、EDM 參數化已完成
  15. B16換個寫法,還是同一件事:四種預測與所有仿射流的等價§6.3:四種預測的換算、PF-ODE 的五種寫法、仿射流的時間重新參數化、損失的權重換算、(選讀)線性時程與 v-prediction已完成
  16. B17一切之下:Fokker–Planck 方程把三個觀點綁在一起§6.4–6.5:統一圖、flow 與 Score SDE 的連結(一整族反向 SDE 有相同邊際)、第 6 章結語已完成
  17. B18把一個分佈搬成另一個:最佳運送、熵正則化與 Schrödinger bridge第 7 章(選讀)開頭、§7.1–7.2:翻譯問題、Monge–Kantorovich 與 Benamou–Brenier、EOT 與 Sinkhorn、SB 的 KL 與隨機控制形式、Schrödinger 系統已完成
  18. B19OT 家族的關係,以及 diffusion 為什麼只是「半座橋」§7.3–7.4:SB 與 EOT 等價、ε → 0 回到 OT、diffusion 是 SB 的零控制特例、Schrödinger 半橋與 DSB已完成
  19. B20PF-ODE 是不是最佳運送?線性流與 Reflow 呢?§7.5–7.6:Lavenant–Santambrogio 的反例、條件流的 OT 上界、potential Reflow 的猜想與反例、第 7 章結語已完成

Part C · Diffusion 的取樣

  1. B21Guidance:用一個額外的方向,把生成推向你要的條件第 8 章開頭、§8.1–8.3:條件 score 的貝氏分解、guidance 模板與傾斜密度、classifier guidance、classifier-free guidance已完成
  2. B22Training-free guidance:不重新訓練,只在取樣時把條件加進去§8.4:資料空間與雜訊空間的修正、傾斜密度與 Fokker–Planck 相容條件、逆問題(ILVR、DPS)、InDI 與 PF-ODE已完成
  3. B23從 RLHF 到 DPO:不訓練 reward model,直接用偏好資料對齊生成模型§8.5–8.6:Bradley–Terry reward model、KL 正則化的閉式解與隱含 reward、DPO、Diffusion-DPO 的代理損失、第 8 章結語已完成
  4. B24取樣就是數值積分:在最少的模型呼叫內,把 PF-ODE 積分得夠準第 9 章開頭、§9.1:empirical PF-ODE 與 flow map、解法設計的三個選擇與 NFE、為什麼不直接預測 score、半線性形式與分解式指數積分器、全章路線圖已完成
  5. B25DDIM:凍結這一步開頭的雜訊預測,其餘的照雜訊時程精確地走§9.2:一階分解式指數積分器與四種等價形式、和 Euler/指數 Euler 的關係、(x/α, σ/α) 座標下的 Euler、變分推導與 η 家族、和 CFM 的連結已完成
  6. B26DEIS 與 DPM-Solver:用過去或這一步內的計算逼近神經預測的變化§9.3–9.4:Lagrange 外插與 AB-DEIS-n、DDIM = AB-DEIS-0、log-SNR 改寫與指數加權精確解、Taylor 展開與 DPM-Solver-2、和 RK2/指數 RK2 的關係已完成
  7. B27DPM-Solver++ 與 ParaDiGMS:換成乾淨資料預測,以及把取樣攤到平行硬體上§9.5–9.7:資料預測的精確解、DPM-Solver++(2S) 與 (2M)、2M 是 AB-DEIS-1 的對應、ParaDiGMS 的 Picard 滑動視窗、第 9 章結語已完成

Part D · 學會快速的生成器

  1. B28Distillation:讓快的學生學會慢的老師第 10 章:分佈與 flow map 兩種蒸餾目標、KD、VSD 的 score 差梯度與為什麼 reverse KL 特別、Progressive Distillation 的兩步合一目標與逐輪減半、局部半群匹配、帶 guidance 的 PD、第 10 章結語已完成
  2. B29Flow map 與 consistency model:不靠老師,學會一步跳到終點第 11 章 §11.1–11.2、附錄 D.5:統一的 flow map 目標、CM/CTM/Mean Flow 概觀、半群性質、consistency function、CD 與 CT、兩者差 O(Δs²) 的定理、EDM 參數化、一步與多步取樣已完成
  3. B30連續時間 consistency model 與 CTM:讓格點消失,讓跳躍任意第 11 章 §11.3–11.4、附錄 D.5.3:離散梯度的連續極限與偽目標、連續時間 CD/CT、sCM 的三角時程與穩定技巧、可學的時間權重、CTM 的參數化與 g 的對角線、soft consistency、自己誘導的老師、DM 與 GAN 損失、γ 取樣與誤差累積已完成
  4. B31Mean Flow 與第 11 章結語:平均速度、微分形式,以及同一個 flow map 的三種看法第 11 章 §11.5–11.6:平均速度與 MF 恆等式、JVP 與從頭訓練、MF 取樣、CTM 與 MF 的損失只差權重、積分形式 vs 微分形式、半群/Lagrangian/Eulerian 三種觀點及其等價已完成

結語 · 統一原則與展望

  1. B32統一原則與展望:機率的運輸,從連續空間到離散狀態第 12 章整章(§12.1–12.3):變數變換的階梯、離散時間 Markov 鏈與 Bayes 反轉、速率矩陣與 master equation、masked/uniform 破壞、變分/比值/flow 三種反向觀點、連續與離散的真正差別、全書結語已完成

附錄

  1. B33微分方程速成:ODE 與 SDE附錄 A:速度場與軌跡、存在唯一與解不相交、指數積分因子、單步/多步/平行於時間的解法(Euler、RK、AB2、Picard)、從 ODE 到 SDE、Itô 積分的左端點、Euler–Maruyama已完成
  2. B34密度怎麼演化:變數變換 → 連續方程 → Fokker–Planck附錄 B:單一與複合雙射的變數變換、flow map 與 pushforward、用 Euler 步加 Taylor 展開推出連續方程、Lagrange 與 Euler 觀點、密度路徑決定不了速度場、可實現性、Fokker–Planck 與 PF-ODE(邊際相同、路徑不同)、小盒子與散度定理的守恆律推導;選讀的 Wasserstein gradient flow(一階變分、投影到生成器、forward KL 涵蓋資料、reverse KL 的 score 不匹配)已完成
  3. B35Itô 公式與 Girsanov 定理附錄 C:(dw)² = dt 與古典連鎖律為什麼失敗、用 Taylor 展開推 Itô 公式、多維公式與乘積法則、用測試函數推 Fokker–Planck、線性 SDE 的封閉解與動差 ODE、Girsanov 的 Radon–Nikodym 導數(離散版是高斯密度比的乘積)、邊際一致 vs. 路徑一致、g² 加權的 score matching = 路徑 KL ≥ 資料 KL已完成

附錄 D 的證明不單獨成頁,放進對應頁面的「推導」框。

前言:這本書想做什麼書 Preface

Diffusion model 很快成為生成建模的核心典範,相關文獻橫跨機器學習、電腦視覺、自然語言處理等領域,各自強調不同面向:理論基礎(建模原理、訓練目標、取樣器設計和背後的數學)、實作進展(工程實務、架構選擇)、實際應用(針對特定領域或任務的調整),以及系統層級的最佳化(計算、記憶體、部署效率)。

這本書想提供 diffusion model 的原理性基礎,圍繞三個主題:

  1. 打下穩定的概念基礎。介紹撐起 diffusion 研究的核心概念和數學表述,讓讀者有能力自己讀更廣的文獻。書不打算列舉所有變體或特定領域的應用,而是建立一個穩定的基礎,讓那些發展都能從這裡理解。
  2. 三種觀點,一個核心想法。傳統生成模型學的是從雜訊到資料的直接映射;diffusion model 則把生成看成隨時間逐步進行的轉換,先有粗略的結構,再慢慢補上細節。這個核心想法發展出三種主要觀點:變分(variational)、score-based、flow-based,它們從互補的角度理解和實作 diffusion。書追溯關鍵想法的源頭、釐清不同表述之間的關係,把直覺和嚴謹的數學連起來。
  3. 在基礎上往前走。探討怎麼讓 diffusion model 生成得更有效率、對生成過程有更多控制,以及怎麼從 diffusion 的原理出發,啟發獨立的新型生成模型。

適合的讀者:研究者、研究生、實務工作者,具備深度學習的基本認識(例如知道神經網路是什麼、訓練怎麼進行),或更具體地懂一點深度生成模型,想把對 diffusion 的理解從表面再往下挖。讀完之後,讀者會對 diffusion 的基礎有原理層次的理解,能在一個一致的框架裡解讀不同的表述,並具備有信心地使用現有模型、以及做新研究所需的背景。

書中的圖:forward 與 reverse diffusion 的軌跡
書中的圖(前言):前向與反向的 diffusion 軌跡。上排是前向過程:一張真實照片被逐步加入雜訊,經過一連串中間階段,最後和純雜訊分不出來。下排是反向(生成)過程:從一份全新的雜訊開始,逐步去掉雜訊,生出一張新的圖。注意下排生出的貓和上排不是同一隻:反向過程不是在重建訓練時看過的某個例子,而是從新的雜訊出發,塑造出一個逼真的新樣本。圖片出處:Lai et al. (2026),作者自繪。

全書路線圖書 Preface · Roadmap

書分成四個主要部分,加上結語和附錄。

Part A、B:diffusion 的基礎

Part A(第 1 章)先回顧深度生成模型的基本目標:從一堆資料例子出發,建一個能生出「看起來像來自同一個未知分佈」的新例子的模型。很多方法靠學資料的分佈做到這點,要嘛用顯式的機率模型,要嘛用隱式的學習轉換。這一章說明這些模型怎麼用神經網路表示分佈、怎麼從例子學習、怎麼生成新樣本,最後給一個主要生成框架的分類,突顯它們各自的核心想法和關鍵差別。

Part B(第 2–7 章)進入 diffusion:一類把生成實現成「從雜訊到資料的逐步轉換」的方法。核心想法很簡單:一個資料樣本可以被逐步加雜訊,直到和純隨機分不出來。這個前向過程把不同的資料樣本都送進同一個簡單的雜訊空間,它好抽樣,可以當作生成的起點;同時也建立了一條從資料到雜訊、平滑的中間階段序列。生成時,從這個空間抽一份新的雜訊,透過反向時間(生成)過程逐步去雜訊,最後得到一個新的資料樣本。這個反向過程不是還原某個特定的原始例子,而是把新的雜訊逐步變成逼真的資料。

書檢視三個互相關聯的框架,它們都建立在同一個原則上:一個逐步加雜訊的前向過程,加上一個用一連串模型逐步去雜訊來近似的反向過程。

  • 變分觀點(第 2 章):源自 VAE,把 diffusion 看成用變分目標學一個去雜訊的過程,發展出 DPM 與 DDPM。
  • Score 觀點(第 3 章):源自 EBM,發展成 NCSN。它學的是 score function,也就是資料 log 密度的梯度,指引怎麼逐步去掉樣本上的雜訊。在連續時間下,第 4 章介紹 Score SDE 框架,把去雜訊過程描述成隨機微分方程(SDE),它的確定性版本則是常微分方程(ODE)。這把 diffusion 連到古典的微分方程理論,替分析和演算法設計提供清楚的數學基礎。
  • Flow 觀點(第 5 章):建立在 normalizing flow 上,由 flow matching 推廣,把生成看成一個連續轉換,把樣本從簡單的先驗運送到資料分佈。演化由一個速度場透過 ODE 支配,明確定義機率質量怎麼隨時間移動。這個表述也自然推廣到更一般的分佈到分佈的轉換:學一條連接任意兩個分佈的 flow。
依書中的圖重繪(前言):三種觀點的時間軸。同一種觀點同一個顏色。變分(藍):VAE(2013/12)→ DPM(2015/05)→ DDPM(2020/06),第 2 章。Score(橘):EBM(1985/01)→ NCSN(2019/07)→ Score SDE(2020/11),第 3、4 章。Flow(綠):NF(2014/12)→ Neural ODE(2018/06)→ Flow Matching(2022/10),第 5 章。

書的註腳特別說明:三種觀點的編排是概念上的,不是時間順序。例如 energy 的想法歷史悠久得多:統計力學把機率和能量連起來,布朗運動的研究以及之後的工作描述了機率分佈怎麼隨時間演化(Gibbs、Langevin、Fokker、Planck、Kolmogorov);現代的 diffusion 機率模型後來把相關想法帶進生成建模,並明確從非平衡統計物理得到靈感。所以這三種觀點應該理解成解釋 diffusion 的現代方式,而不是這些想法最早出現的嚴格歷史順序。

這些觀點乍看不同,第 6 章說明它們其實深深相連:每一種都用一個條件化策略,把學習目標變成好處理的回歸問題;更深一層,它們描述的都是同一個「機率分佈從先驗演化到資料」的時間演化。這個演化由 Fokker–Planck 方程支配,它可以看成連續時間的密度變數變換,確保隨機和確定性兩種表述一致。

既然 diffusion 可以看成把一個分佈運送到另一個分佈的方法,第 7 章發展它和古典 optimal transport 以及 Schrödinger bridge(可以解讀成加了熵正則化的 optimal transport)的關係,回顧靜態和動態兩種表述,並說明它們和連續方程、Fokker–Planck 觀點的關係。這一章對著重實務的讀者是選讀,但為想深入研究這些連結的人提供嚴謹的數學背景和古典文獻的指引。

總覽
深度生成模型總覽第 1 章
觀點
變分觀點
Score觀點
Flow觀點
源頭
VAE
EBM
NF
diffusion 模型
DDPM↓ 第 2 章
NCSN↓ 第 3 章
Gaussian FMflow matching ↓ 第 5 章
連續時間表述(例如 Score SDE)三條線匯合 · 第 4 章
統一原理
條件化策略 + Fokker–Planck 方程第 6 章
依書中的圖重繪(前言):Part B 的統一觀點。三條直線各自從一個經典生成模型(VAE=variational autoencoder、EBM=energy-based model、NF=normalizing flow)走到對應的 diffusion 表述(DDPM、NCSN、Gaussian flow matching),再匯合到連續時間的框架。三種觀點各有特色,但在數學上等價。

Part C、D:控制與加速 diffusion 的取樣

原理統一之後,轉向實際使用 diffusion 有效率地生成。從 diffusion model 取樣等於解一個微分方程,但這個過程通常很花計算。Part C 和 D 著重在提升生成的品質、可控性和效率,方法是更好的取樣和學出來的加速。

Part C(第 8、9 章):從 diffusion model 取樣。diffusion 的生成有一個獨特的「由粗到細」特性:雜訊一步步去掉,樣本的結構和細節越來越清楚。這有利有弊。好處是能細緻地控制:在學到的、隨時間變化的速度場上加一個 guidance 項,就能引導 ODE 的流動去反映使用者的意圖。壞處是需要反覆積分,和一次就生成的模型比起來,取樣很慢。這一部分專注在推論時改進生成過程,不需要重新訓練。

  • 引導生成(第 8 章):classifier guidance 和 classifier-free guidance 讓生成過程能以使用者定義的目標或屬性為條件;再進一步,討論怎麼用偏好資料集讓 diffusion model 對齊這些偏好。
  • 用數值解法快速生成(第 9 章):用更進階的數值解法,以更少步數近似反向過程,降低成本同時保持品質。

Part D(第 10、11 章):學會快速的生成模型。不只改進現有的取樣演算法,而是直接學一個近似 diffusion 過程的快速生成器。

  • Distillation(第 10 章):訓練一個學生模型模仿預先訓練好、很慢的 diffusion model(老師)。目標不是把老師縮小,而是用少得多的積分步數,常常只要幾步甚至一步,重現老師的取樣軌跡或輸出分佈。
  • 從頭學起(第 11 章):既然 diffusion 的取樣可以看成解 ODE,就直接從頭學這個 ODE 的解映射(flow map),不依賴老師模型。學到的映射可以把雜訊直接帶到資料,更一般地,可以沿著解的軌跡從任意時間跳到任意時間。
用 diffusion model \(\mathbf v^*(\mathbf x,t)\) 生成(第 4 章)⟺ 從 \(\mathbf x(T)\sim p_{\text{prior}}\) 出發,把 ODE \(\dfrac{d\mathbf x(t)}{dt}=\mathbf v^*(\mathbf x(t),t)\) 由 \(T\) 倒著解到 \(0\)(更一般地,從 \(s\) 解到 \(t\),\(s>t\)) $$\Longleftrightarrow\quad\mathbf x(0)=\mathbf x(T)+\int_T^0\mathbf v^*(\mathbf x(t),t)\,dt.$$
引導生成在被積分的速度場上加一項 guidance
第 8 章
用數值解法快速生成更準地估計這個積分
第 9 章
學一個快速的生成器直接學整個積分的結果
第 10、11 章
依書中的圖重繪(Part C、D 開頭):生成就是解 ODE,三個分支各從不同的地方下手。記號說明(轉述者):書中這張圖寫的是
$$\mathbf x(0)=\mathbf x(T)+\int_0^T\mathbf v^*\,dt.$$

照 \(d\mathbf x/dt=\mathbf v^*\) 從 \(T\) 積到 \(0\),應該是

$$\mathbf x(0)=\mathbf x(T)+\int_T^0\mathbf v^*\,dt=\mathbf x(T)-\int_0^T\mathbf v^*\,dt,$$

和圖上差一個正負號。這裡照積分方向寫;這張圖要表達的是「生成=算這個積分」,正負號不影響三個分支的意思。

結語:超越連續狀態空間的 diffusion(第 12 章)

最後一章把貫穿全書的原理說清楚。diffusion 的核心不綁定在某一種雜訊、某一類模型,甚至不綁定在連續的狀態空間上。它研究的是:在一個事先規定、隨時間變化的前向破壞過程下,機率質量怎麼演化,以及這個演化怎麼被反轉、近似或拿來生成。在連續的情況,這個原理表現為變數變換公式、連續方程和 Fokker–Planck 方程;在離散的情況,同樣的角色由轉移核、連續時間 Markov 鏈和 master equation 扮演。

這一章也說明,書中發展的變分、score、flow 三種觀點,不只適用於連續資料。對文字、蛋白質序列等以 token 組成的離散資料,一樣可以用變分目標、類似 score 的比值或反向速率、以及類似 flow 的運輸觀點來建立反向模型。數學物件換了,底下的原理沒變。結語既是全書概念的收束,也是對更廣的生成建模版圖的展望。

附錄

  • 附錄 A:微分方程速成,這是 diffusion 的語言。
  • 附錄 B:diffusion 的各種觀點和源頭雖然不同,核心洞見都在變數變換公式。它自然延伸到 Fokker–Planck 方程和連續方程,描述機率密度在映射(離散時間)或微分方程(連續時間)下怎麼轉換和演化。附錄 B 是從這些基礎走到進階概念的入門。
  • 附錄 C:兩個強大但常被忽略的工具,Itô 公式和 Girsanov 定理,為 Fokker–Planck 方程和反向時間取樣提供嚴謹的支撐。
  • 附錄 D:正文中部分命題和定理的證明。

這本書涵蓋什麼、不涵蓋什麼書 Preface

作者的目標是經得起時間。從上往下看,全書始於一個原則:

全書的原則建構一個連續時間的動力學,把簡單的先驗運送到資料分佈,同時確保每個時刻的邊際分佈,和一個事先規定的「從資料到雜訊」前向過程在那個時刻的邊際分佈一致。

從這個原則出發,書發展出用來取樣的隨機和確定性 flow,說明怎麼引導軌跡(guidance)、怎麼加速(數值解法),再研究受 diffusion 啟發的快速生成器,包括 distillation 和 flow map 模型。有了這些工具,讀者能把新論文放進同一個範本裡理解,明白方法為什麼有效,並設計更好的模型。

不涵蓋:完整的文獻回顧、架構目錄、訓練實務與超參數、不同方法的實驗比較、資料集與排行榜、特定領域或模態的應用、系統部署、大規模訓練的配方、硬體工程。這些變化太快,更適合由專門的綜述、開源程式庫和實作指南處理。

記號與慣例書 Notations

數與陣列
\(a\)、\(\mathbf a\)、\(\mathbf A\)純量、行向量(例如 \(\mathbf a\in\mathbb R^D\))、矩陣(例如 \(\mathbf A\in\mathbb R^{m\times n}\))
\(\mathbf A^\top\)、\(\mathrm{Tr}(\mathbf A)\)、\(\mathbf I_D\)、\(\mathrm{diag}(\mathbf a)\)轉置、trace、\(D\times D\) 單位矩陣(維度明確時寫 \(\mathbf I\))、以 \(\mathbf a\) 為對角線的對角矩陣
\(\bm\phi,\bm\theta\)可學的神經網路參數
\(\bm\phi^\times,\bm\theta^\times\)訓練完成後的參數(推論時固定)
\(\bm\phi^*,\bm\theta^*\)某個最佳化問題的最佳參數
微積分
\(\dfrac{\partial\mathbf y}{\partial\mathbf x}\)\(\mathbf y\) 對 \(\mathbf x\) 的偏導數(逐分量)
\(\dfrac{d\mathbf y}{d\mathbf x}\) 或 \(\mathrm D\mathbf y(\mathbf x)\)全(Fréchet)導數
\(\nabla_{\mathbf x}y\)純量 \(y:\mathbb R^D\to\mathbb R\) 的梯度,是 \(\mathbb R^D\) 的行向量
\(\dfrac{\partial\mathbf F}{\partial\mathbf x}\) 或 \(\nabla_{\mathbf x}\mathbf F\)\(\mathbf F:\mathbb R^n\to\mathbb R^m\) 的 Jacobian,形狀 \(m\times n\)
\(\nabla\cdot\mathbf y\)向量場 \(\mathbf y:\mathbb R^D\to\mathbb R^D\) 的散度,是純量
\(\nabla^2_{\mathbf x}f(\mathbf x)\) 或 \(\mathbf H(f)(\mathbf x)\)\(f:\mathbb R^D\to\mathbb R\) 的 Hessian,形狀 \(D\times D\)
\(\int f(\mathbf x)\,d\mathbf x\)\(f\) 在 \(\mathbf x\) 的整個定義域上的積分
機率與資訊理論
\(p(\mathbf x)\)連續向量 \(\mathbf x\) 上的密度/分佈
\(\Pr(\mathbf x=\mathbf a)\)、\(\Pr(\mathbf x=\mathbf a\mid\mathbf y=\mathbf b)\)離散情況的點機率與條件點機率(非正式地寫 \(\Pr(\mathbf x)\)、\(\Pr(\mathbf x\mid\mathbf y)\))
\(p_{\text{data}}\)、\(p_{\text{prior}}\)、\(p_{\text{src}}\)、\(p_{\text{tgt}}\)資料分佈、先驗分佈(例如標準常態)、來源分佈、目標分佈
\(\mathbf a\sim p\)隨機向量 \(\mathbf a\) 服從分佈 \(p\)
\(\mathbb E_{\mathbf x\sim p}[\mathbf f(\mathbf x)]\)在 \(p\) 下的期望值
\(\mathbb E[\mathbf f(\mathbf x)\mid\mathbf z]\) 或 \(\mathbb E_{\mathbf x\sim p(\cdot\mid\mathbf z)}[\mathbf f(\mathbf x)]\)給定 \(\mathbf z\) 的條件期望,\(\mathbf x\) 依 \(p(\cdot\mid\mathbf z)\) 分佈
\(\mathrm{Var}\)、\(\mathrm{Cov}\)在 \(p(\mathbf x)\) 下的變異數、共變異數
\(\mathcal D_{\mathrm{KL}}(p\Vert q)\)從 \(q\) 到 \(p\) 的 KL divergence
\(\boldsymbol\epsilon\sim\mathcal N(\mathbf 0,\mathbf I)\)、\(\mathcal N(\mathbf x;\boldsymbol\mu,\boldsymbol\Sigma)\)標準常態樣本;平均 \(\boldsymbol\mu\)、共變異數 \(\boldsymbol\Sigma\) 的高斯密度

四個慣例

  1. 隨機變數和它的實現值用同一個符號。這是深度學習和生成建模常見的做法,讓記號精簡;意思看上下文。\(p(\mathbf x)\) 指分佈的函數形式,不是在某個特定樣本上取值;要在特定點取值時會明說。條件密度也看上下文讀:在 \(p(\mathbf x\mid\mathbf y)\) 裡,固定 \(\mathbf y\) 是 \(\mathbf x\) 的密度,固定 \(\mathbf x\) 則是 \(\mathbf y\) 的函數。
  2. 條件期望是一個函數。\(\mathbb E[\mathbf f(\mathbf x)\mid\mathbf z]\) 是 \(\mathbf z\) 的函數;要在某個特定值取值時寫 \(\mathbb E[\mathbf f(\mathbf x)\mid\mathbf Z=\mathbf z]\),等於對條件分佈積分: $$\mathbb E_{\mathbf x\sim p(\cdot\mid\mathbf z)}[\mathbf f(\mathbf x)]=\int\mathbf f(\mathbf x)\,p(\mathbf x\mid\mathbf z)\,d\mathbf x.$$ 這個區分讓人分清楚:\(\mathbf z\) 是被當成變數、定義了一個函數 \(\mathbf z\mapsto\mathbb E[\mathbf f(\mathbf x)\mid\mathbf z]\),還是被當成一個固定值、在那裡取函數值。
  3. 時間指標常省略。例如 \(\mathbb E[\mathbf x_s\mid\mathbf x_t]\) 是 \(\mathbb E[\mathbf x_s\mid\mathbf x_t,s,t]\) 的簡寫:給定時刻 \(t\) 的 \(\mathbf x_t\),時刻 \(s\) 的 \(\mathbf x_s\) 的平均,\(s,t\) 從上下文可知。\(p(\mathbf x_s\mid\mathbf x_t)\) 同理。
  4. 高斯擾動與「分佈相等」。對固定的 \(t\),常用的高斯擾動核是 $$p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N\big(\mathbf x_t;\alpha_t\mathbf x_0,\sigma_t^2\mathbf I\big),$$ 其中 \(\mathbf x_0\sim p_{\text{data}}\),\(\alpha_t,\sigma_t\) 是確定的純量。它等價於分佈意義下的等式 \(\mathbf x_t\overset{d}{=}\alpha_t\mathbf x_0+\sigma_t\boldsymbol\epsilon\),\(\boldsymbol\epsilon\sim\mathcal N(\mathbf 0,\mathbf I)\) 和 \(\mathbf x_0\) 獨立。「\(\overset{d}{=}\)」表示兩邊的機率分佈相同,所以對任何測試函數 \(\phi\),\(\mathbb E[\phi(\mathbf x_t)]=\mathbb E[\phi(\alpha_t\mathbf x_0+\sigma_t\boldsymbol\epsilon)]\)。為了簡潔,書直接寫 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\boldsymbol\epsilon\),看上下文理解成分佈相等或一次抽樣的實現。

與 CS236 複習頁的對照

這本書的共同作者 Stefano Ermon 就是 CS236 的授課老師,兩邊大量重疊,但編排不同:課程照模型家族的時間順序講,書則先用三種觀點各推一次 diffusion,再在第 6 章統一。

書CS236 講次補充課
第 1 章1–12 講(各模型家族的入門)A
第 2 章(VAE、DDPM)5、6、16 講A
第 3 章(EBM、score、NCSN)11–14 講D、F
第 4 章(Score SDE)14、16、17 講E、F
第 5 章(flow、flow matching)7、8 講B、C
第 6 章(統一觀點)13–17 講C、F
第 8–10 章(guidance、solver、distillation)17 講B
第 12 章(離散 diffusion)18 講G

CS236 的目錄頁:CS236 複習頁目錄。各講和補充課的連結也在每一頁的「與 CS236 的對照」一節。

Deep Generative Models Learning Map是這本書、MIT 6.S184(目錄)和 CS236 三個資源的總入口,有主題對照表。