Stanford CS229 第 11 講 (2026年春):擴散模型 – 核心概念與訓練
TL;DR
擴散模型透過學習反轉固定的高斯噪聲過程來生成高品質圖像;它們優於 GANs 和 VAEs,並以將中間噪聲圖像視為潛在變數的 ELBO 風格損失進行訓練。
1. 什麼是擴散模型
- 目標: 給定自然圖像資料集(分布 (p_{data})),學習一個生成模型 (p_\theta),能夠採樣出與訓練集無法區分的新圖像。
- 核心思想: 從純高斯噪聲 (x_T) 開始,利用學習到的逆向馬可夫鏈 (p_\theta(x_{t-1}\mid x_t)) 逐步去噪,直至產生乾淨圖像 (x_0)。
- 為什麼重要: 此方法取代 GANs 和變分自編碼器(VAEs),成為主導的圖像生成技術,因為它提供更穩定的訓練和更高的樣本保真度。
2. 前向(加噪)過程
- 前向過程 (q) 是 固定 的,以小步驟添加高斯噪聲: [ x_t = \sqrt{1-\eta_t},x_{t-1} + \sqrt{\eta_t},\epsilon_t,\quad \epsilon_t \sim \mathcal N(0, I) ]
- \(\beta_t\) 是一個小標量(例如 (10^{-2}) 到 (10^{-4}))。對 (t=1\\dots T) 重複此操作會得到一個分布,隨著 (T) 增大而收斂於標準正態分布。
- 累積乘積 \(\bar\alpha_t = \prod_{i=1}^t (1-\beta_i)\) 會縮減原始圖像的信號;當 (t\to\infty) 時,\(\bar\alpha_t\to0) 且 (x_T) 變成純高斯噪聲。
3. 反向(去噪)過程
- 反向動態是 學習 的:神經網路 \(\mu_\theta(x_t, t)\) 預測高斯分布 (p_\theta(x_{t-1}\mid x_t) = \mathcal N(\mu_\theta(x_t, t), \sigma_t^2 I)) 的均值。
- 方差 \(\sigma_t^2\) 通常是固定的(從前向排程推導),而不是學習的。
- 雖然前向過程在給定 (x_{t-1}) 下是確定的,但反向必須保持隨機性,因為多個前向軌跡可能導致相同的噪聲狀態 (x_t)。因此,高斯是自然的選擇,且在連續時間極限下,真實的反向過程可以被證明為高斯(隨機微分方程的經典結果)。
4. 訓練目標 – ELBO / 變分下界
- 潛在變數視角: 將完整的噪聲軌跡 (x_{1:T}) 視為觀測乾淨圖像 (x_0) 的潛在變數 (z)。
- ELBO 推導: [ \log p_\theta(x_0) \ge \mathbb E_{q(x_{1:T}\mid x_0)}\big[\log p_\theta(x_{0:T}) - \log q(x_{1:T}\mid x_0)\big] ] 這展開為真實前向條件 (q(x_{t-1}\mid x_t, x_0)) 與學習到的反向條件 (p_\theta(x_{t-1}\mid x_t)) 之間的 KL 散度之和,加上 (x_0) 的重建項。
- KL 的鏈式法則: 利用馬可夫性質,聯合軌跡的 KL 分解為每步的 KL 和,每步比較兩個高斯分布。每步的損失簡化為預測均值 \(\mu_\theta\) 與解析已知後驗均值 \(\tilde\mu_t(x_t, x_0)\) 之間的加權平方誤差。
- 實用損失: 大多數實作使用簡化的 噪聲預測 損失: [ L_t = \|\epsilon_t - \epsilon_\theta(x_t, t)\|^2, ] 其中 \(\epsilon_\theta\) 預測注入的噪聲。這在數學上等價於基於 KL 的 ELBO,僅相差一個常數。
5. 為什麼不使用一次性去噪?
- 直接將 (x_T) 映射到 (x_0) 需要學習一個高度非線性的函數,在單一步驟中壓縮所有資訊,使優化變得困難。
- 逐步的多步反向鏈提供更平滑的梯度和行為良好的目標,類似於課程學習的好處。
6. 與其他生成模型的關聯
- GANs/VAEs: 兩者都需要對抗或編碼器‑解碼器訓練。擴散模型避免了對抗不穩定性,且不需要學習編碼器;前向過程是解析定義的。
- 自回歸模型: 在給定時間步的情況下,擴散推理可以在所有像素(或塊)上並行進行,相較於嚴格序列的自回歸採樣,可能具備速度優勢。
- 語言與機器人: 近期工作將擴散擴展到文本生成和機器人動作規劃,方法是將標記序列或動作軌跡視為連續資料,並應用相同的前向‑反向框架。
7. 連續時間視角(選填)
- 在 \(\Delta t \to 0\) 的極限下,前向過程成為一個隨機微分方程(SDE): [ d x_t = -\frac{1}{2}\beta(t) x_t\,dt + \sqrt{\beta(t)}\,dW_t, ] 其中 \(\W_t\) 是布朗運動。
- 反向 SDE 具有相同的擴散項,但漂移項依賴於分數函數 \(\nabla_{x_t}\log p_t(x_t)\)。以神經網路參數化漂移項可恢復離散時間的反向鏈。
8. 實務要點
- 模型架構: 通常使用 U‑Net 或 transformer 骨幹來對每個時間步預測 \(\epsilon_\theta\)。
- 訓練排程: 選擇噪聲排程 \(\beta_1\dots\beta_T\)(線性或餘弦),以在早期保持信號並在後期實現快速擴散之間取得平衡。
- 採樣速度: 近期研究透過學習更好的排程或使用蒸餾,將反向步驟數從數千減少到僅 4–10 步,但原始公式使用數千步。
- 實作資源: Stanford 的講義(影片說明中連結)包含完整的推導和偽代碼。
此貼文遵循 Stanford CS229 Spring 2026 講義中關於擴散模型的逐字稿。所有方程與聲明均直接取自講師的闡述;未添加任何外部事實。