2014 - GAN 對抗式生成網路(偽造者與鑑識者的軍備競賽)#
案件摘要#
2014 年,蒙特利爾大學的博士生 Ian Goodfellow 在酒吧的一場辯論後,回家寫出生成對抗網路 (GAN): 兩個網路互相對抗——生成器 (G) 造假、鑑別器 (D) 鑑識——在博弈中共同進化。
\[ \min_G \max_D\; V(D, G) = \mathbb{E}_{x\sim p_{data}}[\log D(x)] + \mathbb{E}_{z\sim p_z}[\log(1 - D(G(z)))]. \]
神經網路從「分類器」升格為「創作者」——AI 開始生成逼真的影像、聲音與文字。
前因 -- 為什麼會有這個案子#
- 生成模型的難題:判別模型(分類 \(P(y|x)\) )已成熟(AlexNet, 2012),但生成模型(學 \(P(x)\) )一直無解——影像的機率分佈維度太高(百萬維),最大概然估計需要算 \(P(x)\) 的配分函數:
\[ P(x) = \frac{e^{-E(x)}}{Z}, \qquad Z = \int e^{-E(x)}dx \quad (\text{無法計算}). \]
- VAE 的先行嘗試(2013):Kingma 與 Welling 的變分自編碼器用變分推論繞開 \(Z\) ,但生成影像模糊。
- 酒吧辯論的偵探直覺:同門爭論「生成模型是否需要知道 \(P(x)\) 」——Goodfellow 突然想到:不需要!讓兩個網路互相對抗,用鑑別器當「可學習的損失函數」。回家當晚寫出第一版,實驗一次成功(罕見)。
- Bengio 的支持:導師 Yoshua Bengio 立刻看出價值——GAN 成為深度學習的第三支柱。
線索與推理 -- 數學式、程式、理論#
第一條線索:極小極大博弈#
- 鑑別器 \(D(x)\) :輸出「真」的機率,最大化分類正確率。
- 生成器 \(G(z)\) :把雜訊 \(z \sim \mathcal{N}(0,I)\) 映射到影像空間,最小化 \(D\) 的正確率。
\[ \min_G \max_D\; V(D,G) = \mathbb{E}_{x\sim p_{data}}[\log D(x)] + \mathbb{E}_{z\sim p_z}[\log(1-D(G(z)))]. \]
鑑別器 = 可學習的損失函數——生成的影像不必手工定義「像不像」,由對抗網路自動判斷。
第二條線索:最優解 = 分佈完美匹配#
固定 \(G\) , \(D\) 的最優解:
\[ D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_G(x)}. \]
代入 \(V\) ,Goodfellow 證明:
\[ C(G) = -\log 4 + 2\,\mathrm{JS}(p_{data} \| p_G) \ge -\log 4, \]
等號成立當且僅當 \(p_G = p_{data}\) ——博弈的納許均衡就是生成器完美模仿真實分佈。 結案:對抗訓練 = 分佈匹配的最小化。
第三條線索:訓練的軍備競賽#
兩個網路交替更新,猶如偽造者與鑑識者的軍備競賽: - G 變強 → D 更新追上 → G 再變強 → …… - 失衡的病症:模式崩塌 (mode collapse)——G 只會生成少數幾種影像欺騙 D。
Python:極簡 GAN(二維分佈模仿)#
import torch, torch.nn as nn
G = nn.Sequential(nn.Linear(2, 128), nn.ReLU(), nn.Linear(128, 2)) # 生成器
D = nn.Sequential(nn.Linear(2, 128), nn.ReLU(), nn.Linear(128, 1), nn.Sigmoid())
optG, optD = torch.optim.Adam(G.parameters()), torch.optim.Adam(D.parameters())
real = torch.randn(256, 2) * 2 + 5 # 真實分佈 N(5, 2^2)
for step in range(3000):
# 訓練 D:區分真/假
z = torch.randn(256, 2)
fake = G(z).detach()
lossD = -(torch.log(D(real)).mean() + torch.log(1 - D(fake)).mean())
optD.zero_grad(); lossD.backward(); optD.step()
# 訓練 G:騙過 D
z = torch.randn(256, 2)
lossG = -torch.log(D(G(z))).mean()
optG.zero_grad(); lossG.backward(); optG.step()
z = torch.randn(1000, 2)
print("生成樣本均值:", G(z).mean(0).detach().numpy(), "(目標 [5, 5])")
生成樣本均值: [4.87 5.03] (目標 [5, 5])
結案 -- 後果與影響#
- 生成 AI 的誕生:GAN 開啟「AI 創作」時代——StyleGAN(2018)生成以假亂真的人臉、Pix2Pix(2017)影像翻譯、深度偽造 (deepfake)。
- 應用與濫用:影像修復、超解析度、資料增廣;反面——deepfake 詐騙與假新聞,AI 倫理案件由此升級。
- 理論影響:對抗訓練成為新範式——GAN、對抗樣本攻擊 (Goodfellow 2015)、對抗防禦——「對抗 = 訓練訊號」的思想滲透整個領域。
- 歷史定位:2017 年後擴散模型 (diffusion, 2020) 取代 GAN 成為生成主流(Stable Diffusion、DALL-E),但「可學習損失函數」的思想遺留至今。
- 歷史趣聞:Goodfellow 2016 年離開 OpenAI 時被稱為「GAN 之父」;這個源自酒吧辯論的想法,成為 Bengio(2018 圖靈獎)門下的傳奇案件。
關鍵人物與文獻#
- I. J. Goodfellow 等:〈Generative Adversarial Nets〉, NeurIPS (2014)。
- Kingma & Welling:VAE, ICLR (2014)——先行嘗試。
- Karras 等:StyleGAN, CVPR (2018)——GAN 巔峰。
- 相關案件:
2012-AlexNetImageNet革命.md、2017-Transformer注意力機制.md、2022-ChatGPT與RLHF.md。