跳轉到

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])
(30 行程式,生成器學會模仿目標分佈——納許均衡的數值鐵證。)

結案 -- 後果與影響#

  • 生成 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。