版本說明:本文依據 CMU 10-423/623/723 Generative AI Spring 2026(Aran Nayebi 與 Matt Gormley 合授)。主要材料是 Lecture 6 投影片(75 頁 PDF)與講次表列出的兩篇 readings。事實皆於 2026-09-30 打開官方材料核對。存取等級 A3:投影片、作業與練習考卷公開;課堂錄影在 CMU Panopto,校外看不到,所以本文只依投影片撰寫。
系列位置:上一篇 L5:CNN、encoder-only Transformer 與 ViT|下一篇 L7:擴散模型入門|系列總覽
L5 講的是怎麼「看懂」圖片。L6(2026 年 2 月 2 日)反過來問:能不能讓模型「畫」出一張沒見過的圖?這一講的答案是生成對抗網路(Generative Adversarial Network, GAN)。投影片標題是「GANs + Probabilistic Graphical Models」,前半講 GAN,後半補機率圖模型——後者看起來離題,但 L7 畫擴散模型時用的就是這套圖。
圖像生成有哪幾種任務
投影片先列出五類任務,每一類配一張論文圖:
- Class-conditional generation:給一個類別標籤(如「海葵」「金翅雀」),生成該類別的新圖。投影片的說法是:分類是 p(y|x),這個任務是反過來做 p(x|y)。
- Super resolution:從低解析度圖重建高解析度圖。
- Image editing:inpainting(補上指定的缺失像素)、colorization(替灰階圖上色)、uncropping(補出圖片缺掉的一側)。
- Style transfer:保留來源圖的語意內容,換上另一張圖的風格。
- Text-to-image:給一段文字,生成符合描述的圖,例子用了 Gemini 2.5 Flash Image 和 SDXL。
投影片還放了一個小玩笑:請 Stable Diffusion 畫一張「解釋 GAN 的投影片」,結果畫不出來;GPT-5 解釋得好一些,但不夠細。這一講就是要補這個「細」。
GAN 由兩個網路組成
GAN 包含兩個確定性的神經網路:
- 生成器 G_θ:輸入一個隨機雜訊向量 z(通常 z ~ N(0, σ²I)),輸出一張圖 x = G_θ(z)。投影片的例子是 DCGAN:一個「倒過來的 CNN」,用四層 fractionally-strided convolution 讓圖片一層層變大,最後一層是 RGB 三個通道。
- 判別器 D_φ:輸入一張圖,輸出它是真圖的機率 p(real | image),真圖標 1、假圖標 0。例子是 PatchGAN:對圖片的每個 patch 分別判斷真假,投影片說這樣有助於避免生成模糊的圖。
兩者在訓練時玩一場兩人 minimax 遊戲:生成器想做出能騙過判別器的圖,判別器想分出真假。
訓練目標與交替更新
判別器看兩種輸入:生成器的假圖 G_θ(z),和從資料分布取出的真圖 x'。投影片把損失寫成兩項相加:假圖那項 J = log(1 − D_φ(G_θ(z))),真圖那項 J' = log D_φ(x')。
投影片第 31 頁的 minimax 目標
判別器:max_φ Σ_i [ log D_φ(x^(i)) + log(1 − D_φ(G_θ(z^(i)))) ]
在固定的生成器輸出上,最大化二元分類器(real=1, fake=0)的概似
生成器:min_θ Σ_i log(1 − D_φ(G_θ(z^(i))))
在固定的判別器下,最小化自己的假圖被判為假的概似
因為 G 和 D 都選成可微分的神經網路,目標函數也就是一個簡單的可微分函數。訓練時交替進行:
- 固定 G_θ,對 D_φ 做反向傳播;
- 固定 D_φ,對 G_θ 做反向傳播。
投影片把它比作 block coordinate descent,差別是每一步不把 min 或 max 解到底,只走一步 mini-batch SGD。訓練資料就是 m 張沒有標籤的圖片。
投影片在這裡留了一個課堂問題:輸入裡有一個隨機的高斯分布,要怎麼對 G_θ 反向傳播?答案欄在講義版是空的。練習考卷第 6 大題(GAN,9 分)也有類似的觀念題,可以拿來自我檢核。
Class-conditional GAN 的做法很直接:把類別標籤的 embedding 同時接到生成器和判別器的輸入,GAN 就能生成指定類別的圖。
規模、浮水印與社會影響
「Scaling up」一節先放了 the-gan-zoo 收錄的大量 GAN 變體(標題是「GANs Everywhere!」),再用一條電腦視覺時間軸把 GAN(2014)放在 VAE(2013)、Diffusion(2015)、DDPM(2020)、Stable Diffusion 之間。接著比較 GAN 與擴散模型生成的圖,並用 Parti 不同模型大小的樣本說明規模的效果。
接下來是生成圖片帶來的問題,投影片分成四件事:
| 做法 | 目標 | 投影片的評語 |
|---|---|---|
| Watermarking | 辨識一張圖是不是模型生成的 | GAN、VAE、Stable Diffusion 大多可以加浮水印 |
| Fake-image detection | 沒有浮水印也要認出假圖 | — |
| Model attribution | 判斷是哪個模型生成的(例如 DALL-E 2 還是 SDXL) | 非常成功,模型本身就留下「天然浮水印」 |
| Image attribution | 找出是哪些訓練圖促成了這張新圖 | 極度困難 |
社會影響則列了優點(藝術家的新工具、更快做迷因)與缺點(侵犯著作權與藝術家失業、整體創造力下降、可能產生貶低人性的內容、假新聞與查核困難、內容不根植於現實)。
後半段:機率圖模型
最後約 20 頁是機率圖模型的速成,目的是讓 L7 可以直接用圖來描述擴散模型。
- 有向圖模型(Bayesian network):一個有向無環圖,每個節點是一個變數,聯合分布分解成「每個變數給定父節點的條件機率」的乘積。圖的結構可以來自領域知識、從資料學出來,或只是因為計算上方便;條件機率則通常從資料學。投影片示範了離散變數(機率表)和連續變數(高斯條件分布)兩種寫法,並說明塗色的節點代表觀測值。
- Markov 模型:一階 Markov 假設是「x_t 在給定 x_{t−1} 之後,與更早的變數條件獨立」,聯合分布寫成 p(x_1) 乘上一串 p(x_t | x_{t−1})。這條鏈在 L7 會變成擴散模型的加噪過程。
- 課堂練習:把一個五個字的 RNN 語言模型畫成有向圖模型,回扣第 1 篇的內容。
- 無向圖模型:定義 clique、maximal clique 與 separation,但投影片直說「這些很複雜,我們這裡用不太到」。
- Factor graph:變數(圓)和因子(方)組成的二分圖。每個因子用 potential table 表達對鄰近變數的偏好,把相關因子的值相乘就得到一組取值的分數;因為總和 Z 會大於 1,要再除以 Z 才是機率。
這一講在作業與考試裡的位置
- HW2(Generative Models of Images,總分 60)第 4 題是 GAN,5 分:情境是替灰階圖做 inpainting,要你寫出 GAN 形式的目標函數。
- Quiz 2 在 2 月 16 日,範圍是 L5–L9;GAN 在範圍內。
- 練習考卷第 6 大題 GAN 共 9 分,有附解答。
自學怎麼做
- 先讀投影片第 19–37 頁(GAN 結構與訓練),把 minimax 目標的兩個方向各自講一次給自己聽。
- 讀 Goodfellow et al. 2014 的 Algorithm 1(投影片第 36 頁就是引用這張圖),對照「每一步只走一次 SGD」的說法。
- 想補直覺、訓練技巧與常見問題,讀 Goodfellow 的 NeurIPS 2016 GAN tutorial。
- 機率圖模型那段,把投影片第 61 頁的一階 Markov 鏈記熟,下一篇馬上會用到。
- 最後寫練習考卷第 6 大題,再對解答。
延伸閱讀
- CMU 11-785 導讀:GAN——同校深度學習課對 GAN 的另一種講法
- Stanford CS231n 導讀:生成模型(VAE 與 GAN)
- MIT 6.S184 導讀——之後讀擴散與 flow matching 的數學時用
參考資料
- CMU 10-423/623/723 Generative AI 課程首頁(Spring 2026)
- 講次表(Schedule)——L6 日期、標題與 readings
- Lecture 6 投影片:GANs + Probabilistic Graphical Models——本文主要依據
- Coursework 頁——HW2 與練習考卷下載
- HW2 handout(zip)——配分表與 GAN 題
- Practice exam(Spring 2026)與解答
- Goodfellow et al., Generative Adversarial Nets(NeurIPS 2014)——講次表 reading
- Goodfellow, NIPS 2016 Tutorial: Generative Adversarial Networks——講次表 reading
- Radford et al., DCGAN(ICLR 2016)——投影片的生成器例子
Loading...