影片狀態:已附影片。 影片來源與說明
教材版本:基於 MIT 6.7960 Fall 2024 OCW(對應 OCW Lec 16)。影片、投影片、作業全公開於 MIT OCW。本講由 Phillip Isola 授課。
從「生成」到「條件生成」
L14–L15 都在生成 x,但實務上我們更常需要的是給條件 y,生成對應的 x:y 可能是類別、句子、另一張影像。條件生成模型回答的問題是:p(x | y) 怎麼估、怎麼採樣。
cGAN:把 y 塞進 G 和 D
最直接的做法是 conditional GAN (Mirza & Osindero, 2014):把條件 y 與 z(噪聲)拼接送進生成器 G,把 y 與真/假樣本一起送進判別器 D。訓練目標不變:
min_G max_D E[log D(x|y)] + E[log(1 − D(G(z|y)))]
直觀:生成器必須「根據 y 生成看起來對的東西」,判別器必須「看 (x, y) 判真假」。MNIST 條件生成(指定數字 0–9)是經典玩具實驗。
最小 cGAN 訓練骨架:
import torch, torch.nn as nn
G = nn.Sequential(nn.Linear(z_dim+num_classes, 256), nn.ReLU(),
nn.Linear(256, 784), nn.Sigmoid())
D = nn.Sequential(nn.Linear(784+num_classes, 256), nn.LeakyReLU(),
nn.Linear(256, 1))
def embed(y, K): # one-hot
e = torch.zeros(y.size(0), K, device=y.device); e[range(y.size(0)), y] = 1; return e
# 訓練: D 看 (x, y); G 從 (z, y) 生 x
cVAE:把 y 塞進 encoder / decoder
對 L15 的 VAE 同理:conditional VAE 把 y 當作 encoder / decoder 的額外輸入,
q(z | x, y), p(x | z, y), p(z)
ELBO 變成 E_q[log p(x|z,y)] − KL(q(z|x,y) ‖ p(z))。實務上 y 可類別 one-hot、文字 embedding、座標等。這是後來 text-to-image VAE / 影像修復(inpainting)變體的基礎。
擴散時代的條件控制
影片對照:Lec 16 字幕沒有出現 Classifier Guidance/Classifier-Free Guidance;影片講的是把條件(例如文字)當作輸入餵給 denoiser、generator 或 discriminator 這個通用做法。以下 guidance 的細節是本站補充。
擴散模型把生成拆成「反覆去噪」(L14 提過),條件生成有兩條主流路線:
Classifier Guidance(Dhariwal & Nichol 2021)
訓練好 conditional 擴散 p_θ(x_t | x_{t+1}, y) 之外,另外訓練一個分類器 p(y | x_t),在反噪過程中加一個「往指定類別」的梯度項:
x_{t−1} ← x_t − γ · ∇_{x_t} log p(y | x_t) + 噪聲
γ 控制條件強度,越大越「聽話」、多樣性下降。問題:需要另外訓練一個能在噪聲影像上分類的模型。
Classifier-Free Guidance(Ho & Salimans 2022)
更乾淨的解法:同一個模型同時訓練 conditional 和 unconditional 兩種,實作上把 y 換成一個特殊的「空 token」得到 unconditional。推論時線性組合:
ε̂ = (1 + w) ε_θ(x_t | y) − w ε_θ(x_t | ∅)
w 控制聽話程度。w = 0 是純 conditional,w 越大越向條件貼齊(取樣多樣性下降)。這是 Stable Diffusion、Imagen 等 text-to-image 的標準配備。
Text-to-Image 的實際工作流
把這幾講串起來,今天一個 text-to-image 系統大致是:
- 文字編碼(L11/L12 表示學習):CLIP-style text encoder 把 prompt 變成 embedding
y。 - 條件生成:用 Latent Diffusion(在 VAE 的 latent 空間做擴散,節省算力),Classifier-Free Guidance 把生成推向 prompt。
- 解碼:用 VQ-VAE / KL-VAE 的 decoder 把 latent 變回像素。
也就是 VAE latent + 條件擴散 + CFG 三者組合,是當前 SOTA 的基本配方。
取捨與常見失敗模式
- CFG 權重太強:影像會「過飽和」、紋理失真、少樣性。
- Prompt 不夠具體:模型退化成 mean-image(VAE 系的根本毛病)。
- y 與 x 沒對齊:微調階段用 LoRA / DreamBooth 把新概念「塞進」模型的條件空間。
- 可控性 vs 多樣性:這是條件生成的根本權衡,沒有銀彈。
課程影片來源
2026-10-10 已即時回 MIT OCW Fall 2024 官方錄影列表核對講次,影片公開且允許嵌入;講次與主題以 OCW 的標示為準。
原始影片:MIT 6.7960 Fall 2024 — Lec 16. Generative Models: Conditional Models
課程與錄影入口:
- MIT OCW — Lec 16. Generative Models: Conditional Models
- MIT 6.7960 Fall 2024 — official lecture video gallery
查核日期:2026-10-10。
內容核對:已依字幕核對(2026-10-10):讀了 Lec 16 字幕(Phillip Isola,1:21:31):影片是條件生成(開場預告「conditional models」),涵蓋條件分佈與預測問題(約 10%–36%)、條件 GAN 與 cVAE(約 50%–58%、73%–77%)、text-to-image 與 U-Net 去噪器(約 71%–84%),以及配對/非配對影像翻譯(約 89%–99%);字幕沒有 classifier/classifier-free guidance,已在該節加註為本站補充。
更新紀錄
- 2026-10-10:標註影片狀態,核對錄影來源與取得方式。
- 2026-10-10:重查影片狀態。即時核對官方課程頁,講次與影片連結一致且影片公開,狀態改為「已附影片」。
- 2026-10-10:依字幕核對影片內容。在擴散條件控制一節加註:影片沒有講 classifier/classifier-free guidance。
參考資料
- MIT 6.7960 OCW(Fall 2024):課程首頁
- Mirza & Osindero, Conditional Generative Adversarial Nets:arXiv:1411.1784
- Ho & Salimans, Classifier-Free Diffusion Guidance:arXiv:2207.12598
- Dhariwal & Nichol, Diffusion Models Beat GANs on Image Synthesis:arXiv:2105.05233
Loading...