版本說明:本文依據 CMU 10-423/623/723 Generative AI Spring 2026。主要材料是 Lecture 8 投影片(Diffusion Part II + Intro to VAEs,2 月 9 日)與 Lecture 9 投影片的 VAE 部分(2 月 11 日,Matt Gormley 主講;另有手寫註記版)。L9 後半的 zero-shot/few-shot 與 prompting 留到第 10 篇。readings 依講次表,列在 L8 之下。事實皆於 2026-09-30 打開官方材料核對。存取等級 A3:投影片、作業與練習考卷公開;課堂錄影在 CMU Panopto,校外看不到。
系列位置:上一篇 L7:擴散模型入門|下一篇 HW2:從零實作 DDPM|系列總覽
這是整個系列數學最陡的一篇。先給一句直覺:VAE 和擴散模型都在最大化同一種下界。 兩者都有潛變數,都算不出 log p_θ(x),也都改去推高一個算得出來、而且保證比 log p_θ(x) 小的量——ELBO。L7 說「讓學到的反向一步貼近 q(x_{t−1} | x_t, x₀)」,理由就在這裡。
如果機率與高斯的基礎還不熟,可以先讀 MIT 6.S184 導讀的前置知識段落,再回來。所有推導都收在可展開的區塊裡,第一次讀可以先跳過。
L8 前半:把擴散模型收尾
L8 開頭複習 L7 的 U-Net、前向與反向過程、三個性質和三種參數化,接著補完兩件事。
訓練演算法的四個版本:選項 A 先示範「每張圖把所有 T 個時間點都算一遍再更新」,再改成「每張圖隨機抽一個 t」;選項 B 讓網路預測 x₀;選項 C 預測雜訊 ε,並再次強調 C 在經驗上最好。投影片還附了兩頁訓練時的計算圖。
取樣演算法:從 x_T ~ N(0, I) 開始倒數,每一步抽一個新的 ε,用網路算出均值 μ̂_t,令 x_{t−1} = μ̂_t + σ_t ε。三種參數化只差在 μ̂_t 怎麼算:A 直接輸出、B 先預測 x₀ 再組合、C 先用 ε_θ 估出 x̂₀ 再組合。
然後投影片回到 L7 留下的問題:為什麼「貼近 q(x_{t−1} | x_t, x₀)」是對的目標?答案是 DDPM 的目標函數本身就是 ELBO,其中的 L_{t−1} 項是一個 KL divergence,要求兩個條件分布盡量接近(投影片第 28 頁,公式取自 Ho et al. 2020)。要看懂這句話,得先學變分推論——這就是 L8 後半與 L9 的工作。
VAE 之前要準備的七件事
L8 與 L9 都列了同一張清單:
- Autoencoder(不是變分的那種)
- KL divergence
- 變分推論(以 KL 為目標)
- Monte Carlo 估計(近似期望值)
- (Score function trick)
- Reparameterization trick(降低變異數)
- Stochastic Gradient Variational Bayes
第 5 項在清單上加了括號;公開的講義版 PDF 裡沒有對應的章節頁,本文也不展開。
為什麼普通的 autoencoder 不夠
Autoencoder 由編碼器 z = ENCODER(x) 和解碼器 x' = DECODER(z) 組成,訓練目標是重建誤差 ‖x − DECODER(ENCODER(x))‖²,用途是學一個低維表示。問題是它沒有定義機率分布:從潛空間取樣,等於只在訓練樣本的重建之間挑。VAE 則學一個連續、容易取樣的潛空間,可以生成新資料。
KL divergence 的脾氣
KL(q ‖ p) = E_q[log q(x)/p(x)],衡量兩個分布有多接近;它不對稱,在 q = p 時最小。投影片用三個例子說明「用 KL(q ‖ p) 當目標」會發生什麼:
- 在 q 機率高的地方,如果 p 很低,KL 會大幅增加——所以 KL 堅持 q 高的地方要近似得好。
- 在 q 機率低的地方,近似差一點影響很小——KL 不在乎這些地方。
- 第三個例子用一個有相關性的 2D 高斯 p,問「各維度獨立的 q」哪一個最小化 KL,結果以圖呈現。
這個性質在變分推論裡很重要:q 會傾向待在 p 的高機率區域裡,而不是把 p 整個蓋住。
變分推論:從 KL 換到 ELBO
變分推論的設定分四步:
- 目標:估計後驗 p_θ(z | x),假設它算不出來。
- 近似:用另一個分布 q_φ(z | x) ≈ p_θ(z | x)。例如 mean field 近似把 q 拆成各變數獨立的乘積。
- 最佳化問題:挑一個讓 KL(q ‖ p) 最小的 q。
- 演算法:例如用梯度下降最佳化替代目標 ELBO。
麻煩是這個 KL 本身也算不出來:把它展開後會出現 log p(x),而 p(x) 正是我們一開始就算不出來的東西。好在 log p(x) 不依賴 q,丟掉它不影響「哪個 q 最好」,剩下的部分取負號就是 ELBO。
從 KL 推到 ELBO,以及 ELBO 為何是下界(L9 投影片第 22–25 頁)
KL(q(z|x) ‖ p(z|x))
= E_q[log q(z|x)] − E_q[log p(z|x)]
= E_q[log q(z|x)] − E_q[log p(x, z)] + E_q[log p(x)]
= E_q[log q(z|x)] − E_q[log p(x, z)] + log p(x) ← log p(x) 不依賴 q
定義 ELBO(q) = E_q[log p(x, z)] − E_q[log q(z|x)]
⇒ argmin_q KL = argmax_q ELBO
⇒ log p(x) = ELBO(q) + KL(q ‖ p) ≥ ELBO(q) ← 因為 KL ≥ 0
投影片對 ELBO 兩項的解讀是:第一項在 q 把機率放在 p 也放機率的 z 上時會高;第二項是 q 的熵,q 越分散越高。三個結論:
- 變分推論找的是讓 p(z | x) 的正規化常數下界最緊的 q;
- 最大化 ELBO 等於最小化 KL;
- 最大化 ELBO 就是在最大化概似 p(x) 的下界。
Monte Carlo 估計與 reparameterization trick
ELBO 裡有期望值,要怎麼算?用 Monte Carlo 估計:從 p 抽 S 個樣本,對 f 取平均。投影片的例子是用單位正方形裡的隨機點估計 π,S 從 100 增加到 1,000,000,誤差逐漸變小。這個估計量是不偏的,變異數以 σ²/S 縮小;收斂速率與維度無關,但 σ² 本身在高維問題裡可能大到不實用。
下一個問題是:z 是從 q_φ 抽出來的,隨機取樣這一步沒辦法反向傳播。Reparameterization trick 把取樣改寫成 z = μ_φ(x) + σ_φ(x) ⊙ ε、ε ~ N(0, I),z 變成參數的可微函數,隨機性只來自獨立的 ε。投影片用一維與多維高斯各畫一次「改寫前後」的計算圖;L9 引用的 Doersch 2016 Figure 4 也是同一件事:左邊的網路因為有不可微的取樣節點而無法反向傳播,右邊可以。
VAE:兩個網路、一個目標
VAE 的模型是:先驗 p_θ(z) = N(0, I);解碼器 p_θ(x | z) 是高斯,均值和變異數由一個 MLP 算出;編碼器 q_φ(z | x) 也是高斯,同樣由神經網路算出均值和變異數。投影片提醒,θ、φ 是神經網路參數,不是傳統變分推論裡每筆資料各自一套的變分參數。
投影片把推導寫成「六個問題、六個解法」:
| 問題 | 解法 |
|---|---|
| 1. autoencoder 不能取樣 | 定義一個可以取樣的解碼器 p_θ(x | z) |
| 2. 對這個解碼器做 MLE 需要積分,算不出來 | 引入編碼器 q_φ(z | x),改最大化 ELBO |
| 3. 交替更新 φ(推論)和 θ(學習)太慢 | 用隨機梯度上升同時更新 θ、φ |
| 4. ELBO 的第一項期望值算不出來 | Monte Carlo 估計 |
| 5. 直接估計的梯度變異數很高(SGVB 的老問題) | 先 reparameterize 再做 Monte Carlo |
| 6. 實際怎麼實作 | 每張圖只取 S = 1 個樣本,見下方 |
VAE 的單步實作(L9 投影片第 53 頁)
給定一張訓練圖 x^(i),取 S = 1:
ε^(1) ~ N(0, I)
用編碼器 MLP 算出 μ_φ(x) 與 σ_φ(x)
z^(1) = μ_φ(x) + σ_φ(x) ⊙ ε^(1)
ℓ(θ, φ) = log p_θ(x^(i) | z^(1)) − KL( q_φ(z | x^(i)) ‖ p_θ(z) )
對 ℓ 反向傳播,更新 θ, φ
ELBO 在這裡寫成兩項:重建項 E_q[log p_θ(x | z)],以及把編碼器拉向先驗的 KL 項。
VAE 能做什麼
「VAE Results」一節列了幾個代表工作:
- Kingma & Welling 2014:提出 VAE 並用在圖片生成,編碼器與解碼器都是單隱藏層的全連接網路,編碼器用對角共變異數的高斯。
- Bowman et al. 2015:把 VAE 用在離散的文字資料,編碼器是 LSTM,解碼器是 LSTM 語言模型。
- VQ-VAE(van den Oord et al.):學一本連續的 codebook,但編碼器輸出離散的 code,解碼器以 code 為條件生成;投影片附了生成語音的例子。
- VQ-VAE-2(Razavi et al. 2019):學上下兩層潛變數,並對潛空間學一個強先驗,高解析度樣本也很逼真。VQ-VAE 在 HW4 的書面題會再出現。
最後一頁把 VAE 和 DDPM 的圖並排,接回「GAN → VAE → Diffusion」那張對照表。
回到擴散模型:DDPM 的 ELBO
有了 ELBO,L7 的直覺就能說清楚。把擴散模型看成潛變數為 x₁…x_T 的模型、前向過程當成一個沒有可學參數的編碼器,ELBO 拆開後大致有三類項:x_T 的先驗項、每個時間點的 L_{t−1}、最後一步的重建項。
- 先驗項不含可學參數,因為 noise schedule 固定、p(x_T) = N(0, I)。
- 每個 L_{t−1} 是 KL(q(x_{t−1} | x_t, x₀) ‖ p_θ(x_{t−1} | x_t))——這就是 L7 說的「貼近封閉形式的後驗」。
- 兩邊都是高斯、變異數又固定成 σ_t² 時,這個 KL 只剩均值的平方距離;再用 ε 參數化,就得到 L7 選項 C 的損失 ‖ε − ε_θ(x_t, t)‖²(DDPM 論文把權重拿掉的版本稱為 simplified objective)。
DDPM 論文中的 ELBO 分解(Ho et al. 2020,eq. 5、8、14)
L = E_q[ KL(q(x_T | x_0) ‖ p(x_T)) ← L_T
+ Σ_{t>1} KL(q(x_{t−1} | x_t, x_0) ‖ p_θ(x_{t−1} | x_t)) ← L_{t−1}
− log p_θ(x_0 | x_1) ] ← L_0
Σ_θ = σ_t² I 時:
L_{t−1} = E_q[ ‖μ̃_t(x_t, x_0) − μ_θ(x_t, t)‖² / (2σ_t²) ] + C
以 ε 參數化並拿掉權重:
L_simple = E_{t, x_0, ε}[ ‖ε − ε_θ(√ᾱ_t x_0 + √(1 − ᾱ_t) ε, t)‖² ]
HW2 第 6.1 題「ELBO Surgery」(5 分)要你自己證明這個 ELBO 的另一種拆法;本文不提供解答。
這兩講在作業與考試裡的位置
- HW2(總分 60):第 5 題 VAE 6 分(重建項的 Monte Carlo 估計、影片 VAE 的損失計算、β-VAE),第 6 題 Understanding Diffusion Models 14 分(ELBO Surgery、L_t 的作用、reparameterization 等)。
- Quiz 2(2 月 16 日)範圍是 L5–L9,但 L9 只考 VAE 部分。
- 練習考卷第 7 大題 VAE 8 分、第 8 大題 Diffusion 8 分,附解答。
自學怎麼做
- 先讀 Jason Eisner 的變分推論高階說明,建立「用好算的 q 逼近難算的 p」的直覺。
- 自己推一次上面「從 KL 推到 ELBO」的四行,確定每一步用的是哪條機率規則。
- 讀 Doersch 2016 的 VAE 教學,對照投影片的六步推導表。
- 想要完整的數學與 mean field 的例子,讀 Blei, Kucukelbir & McAuliffe 2018。
- 在 MNIST 上寫一個最小 VAE,實作投影片第 53 頁的單步流程;再把 DDPM 論文的 eq. 5 對照 L7 的選項 C 讀一次。
延伸閱讀
- MIT 6.S184 導讀與 Lab 3:DiT、VAE 與 latent diffusion——擴散與 VAE 的另一套數學語言
- CMU 11-785 導讀:變分自編碼器
- Stanford CS231n 導讀:生成模型(VAE 與 GAN)
參考資料
- CMU 10-423/623/723 Generative AI 課程首頁(Spring 2026)
- 講次表(Schedule)——L8、L9 日期、標題與 readings
- Lecture 8 投影片:Diffusion Models(Part II)+ Intro to VAEs
- Lecture 9 投影片:VAEs + Zero-shot vs. Few-shot與手寫註記版
- Coursework 頁與 HW2 handout(zip)——VAE 與 Diffusion 題的配分
- Practice exam(Spring 2026)與解答
- Blei, Kucukelbir & McAuliffe, Variational Inference: A Review for Statisticians——講次表 reading
- Jason Eisner, High-Level Explanation of Variational Inference(2011)——講次表 reading
- Carl Doersch, Tutorial on Variational Autoencoders(2016)——講次表 reading
- Ho, Jain & Abbeel, Denoising Diffusion Probabilistic Models(NeurIPS 2020)——L7 reading,L8 的 DDPM 目標函數出處
- Kingma & Welling, Auto-Encoding Variational Bayes(ICLR 2014)——投影片 VAE Results 引用
Loading...