生成式 AI - GAN:偽鈔犯與警察的對抗

生成式 AI - GAN:偽鈔犯與警察的對抗

從判斷到創造,GAN 開啟了 AI 生成的新時代。本文將深入解析生成器與判別器的博弈邏輯,並透過手寫數字實戰 GAN 的訓練過程。


1. 前言:從「判斷」到「創造」

在過去的 18 天,我們學的都是 Discriminative AI (鑑別式 AI)

  • 這張圖是貓還是狗?(分類)
  • 明天的房價是多少?(回歸)
  • 圖中的公車在哪裡?(偵測)

今天,我們要進入一個全新的領域:Generative AI (生成式 AI)。我們不再滿足於讓電腦「看懂」世界,我們希望它能「創造」世界。

而這一切的起點,就是 2014 年由 Ian Goodfellow 提出的 GAN (生成對抗網路)

1.1 GAN 發展演進史

GAN 的發展速度極快,從最早的模糊黑白圖,到現在的以假亂真:

年份模型重要性
2014GAN誕生。證明了兩個網路對抗可以生成資料。
2015DCGAN穩定化。引入 CNN,能生成清晰的人臉與場景。
2017CycleGAN風格轉換。能把「馬變斑馬」、「照片變油畫」。
2018StyleGAN逼真巔峰。生成的假人臉連毛孔都清晰可見。
2020+Diffusion新霸主。雖然模型崛起,但 GAN 在生成速度上仍有優勢。

2. 核心概念:GAN 的博弈遊戲

GAN 的靈感來自於「偽鈔製造者 vs 警察」的貓捉老鼠遊戲。

2.1 架構圖 (Architecture)

Loading Diagram...

2.2 兩個主角

  1. Generator (生成器 GG):偽鈔製造者。輸入一組隨機雜訊,輸出生成的假圖。
  2. Discriminator (判別器 DD):警察。輸入圖片,輸出它是真圖的機率 (0~1)。

3. 核心公式:Min-Max Game

GAN 的訓練過程是一個 Min-Max 的博弈過程,數學表達如下:

minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)} [\log D(x)] + \mathbb{E}_{z \sim p_{z}(z)} [\log (1 - D(G(z)))]

NOTE

公式白話文:這是一個 零和遊戲 (Zero-Sum Game)

  • maxD\max_D (警察想拉高分數):判別器 DD 的目標是最大化判斷成功率(真鈔說 Yes,假鈔說 No)。
  • minG\min_G (偽鈔犯想壓低分數):生成器 GG 的目標是最小化警察的成功率(讓警察把假鈔誤認為真鈔)。
  • 最終兩者達到平衡,生成器能畫出連專家也分不出的作品。

4. 實戰:用 GAN 生成手寫數字 (MNIST)

我們使用 PyTorch 建立一個簡單的 GAN,讓它學習寫數字 "0-9"。

訓練流程:從無到有

下圖展示了模型在不同訓練階段的產出:

GAN Training Progression

從左至右:初期雜訊 -> 中期輪廓 -> 後期清晰數字

  • 初期 (Epoch 1):生成器 GG 只是隨機亂畫,警察反應:「這 100% 是假的!」
  • 中期 (Epoch 20)GG 發現只要畫出「中間白、旁邊黑」的圖案較易騙過 DD,開始掌握筆畫。
  • 後期 (Epoch 50)GG 已經學會了數據分佈,DD 則逼迫它畫出更精細的細節。

GAN 的致命傷:Mode Collapse (模式崩塌)

訓練 GAN 時最怕遇到的惡夢。生成器發現某一張圖 (如數字 "1") 特別容易騙過判別器,於是它就放棄治療,不管輸入什麼,全部都只生成 "1"。

解決方案:改用 WGAN (Wasserstein GAN)。它使用「推土機距離」取代傳統評分,即使畫得很爛也能提供有效的改進方向,避免模型陷入單一模式。


5. 為什麼要學這個?(GAN 的強大應用)

應用領域原理商業價值
老照片修復讓 AI 猜出模糊照片對應的清晰版。電影畫質提升、修復回憶。
室內設計根據草圖生成精美裝潢圖。快速提案、室內規劃。
Deepfake讓 AI 學習 A 的臉並生成 B 的表情。電影特效、娛樂應用。

6. 總結

今天我們學的是引擎 (GAN 原理)。雖然在 MNIST 玩具車上跑起來只是模糊數字,但這顆引擎一旦裝在更龐大的資料集上,就能驅動像 Deepfake 或是高畫質人臉生成這樣的強大應用。

下一關我們將介紹 VAE (變分自編碼器)。它和 GAN 一樣能生成圖片,但原理完全不同:GAN 靠「騙」,VAE 靠「壓縮」。