
生成式 AI - GAN:偽鈔犯與警察的對抗
從判斷到創造,GAN 開啟了 AI 生成的新時代。本文將深入解析生成器與判別器的博弈邏輯,並透過手寫數字實戰 GAN 的訓練過程。
WRITTEN BY

- Name
- Harry Chang
1. 前言:從「判斷」到「創造」
在過去的 18 天,我們學的都是 Discriminative AI (鑑別式 AI):
- 這張圖是貓還是狗?(分類)
- 明天的房價是多少?(回歸)
- 圖中的公車在哪裡?(偵測)
今天,我們要進入一個全新的領域:Generative AI (生成式 AI)。我們不再滿足於讓電腦「看懂」世界,我們希望它能「創造」世界。
而這一切的起點,就是 2014 年由 Ian Goodfellow 提出的 GAN (生成對抗網路)。
1.1 GAN 發展演進史
GAN 的發展速度極快,從最早的模糊黑白圖,到現在的以假亂真:
| 年份 | 模型 | 重要性 |
|---|---|---|
| 2014 | GAN | 誕生。證明了兩個網路對抗可以生成資料。 |
| 2015 | DCGAN | 穩定化。引入 CNN,能生成清晰的人臉與場景。 |
| 2017 | CycleGAN | 風格轉換。能把「馬變斑馬」、「照片變油畫」。 |
| 2018 | StyleGAN | 逼真巔峰。生成的假人臉連毛孔都清晰可見。 |
| 2020+ | Diffusion | 新霸主。雖然模型崛起,但 GAN 在生成速度上仍有優勢。 |
2. 核心概念:GAN 的博弈遊戲
GAN 的靈感來自於「偽鈔製造者 vs 警察」的貓捉老鼠遊戲。
2.1 架構圖 (Architecture)
2.2 兩個主角
- Generator (生成器 ):偽鈔製造者。輸入一組隨機雜訊,輸出生成的假圖。
- Discriminator (判別器 ):警察。輸入圖片,輸出它是真圖的機率 (0~1)。
3. 核心公式:Min-Max Game
GAN 的訓練過程是一個 Min-Max 的博弈過程,數學表達如下:
NOTE
公式白話文:這是一個 零和遊戲 (Zero-Sum Game)。
- (警察想拉高分數):判別器 的目標是最大化判斷成功率(真鈔說 Yes,假鈔說 No)。
- (偽鈔犯想壓低分數):生成器 的目標是最小化警察的成功率(讓警察把假鈔誤認為真鈔)。
- 最終兩者達到平衡,生成器能畫出連專家也分不出的作品。
4. 實戰:用 GAN 生成手寫數字 (MNIST)
我們使用 PyTorch 建立一個簡單的 GAN,讓它學習寫數字 "0-9"。
訓練流程:從無到有
下圖展示了模型在不同訓練階段的產出:
從左至右:初期雜訊 -> 中期輪廓 -> 後期清晰數字
- 初期 (Epoch 1):生成器 只是隨機亂畫,警察反應:「這 100% 是假的!」
- 中期 (Epoch 20): 發現只要畫出「中間白、旁邊黑」的圖案較易騙過 ,開始掌握筆畫。
- 後期 (Epoch 50): 已經學會了數據分佈, 則逼迫它畫出更精細的細節。
GAN 的致命傷:Mode Collapse (模式崩塌)
訓練 GAN 時最怕遇到的惡夢。生成器發現某一張圖 (如數字 "1") 特別容易騙過判別器,於是它就放棄治療,不管輸入什麼,全部都只生成 "1"。
解決方案:改用 WGAN (Wasserstein GAN)。它使用「推土機距離」取代傳統評分,即使畫得很爛也能提供有效的改進方向,避免模型陷入單一模式。
5. 為什麼要學這個?(GAN 的強大應用)
| 應用領域 | 原理 | 商業價值 |
|---|---|---|
| 老照片修復 | 讓 AI 猜出模糊照片對應的清晰版。 | 電影畫質提升、修復回憶。 |
| 室內設計 | 根據草圖生成精美裝潢圖。 | 快速提案、室內規劃。 |
| Deepfake | 讓 AI 學習 A 的臉並生成 B 的表情。 | 電影特效、娛樂應用。 |
6. 總結
今天我們學的是引擎 (GAN 原理)。雖然在 MNIST 玩具車上跑起來只是模糊數字,但這顆引擎一旦裝在更龐大的資料集上,就能驅動像 Deepfake 或是高畫質人臉生成這樣的強大應用。
下一關我們將介紹 VAE (變分自編碼器)。它和 GAN 一樣能生成圖片,但原理完全不同:GAN 靠「騙」,VAE 靠「壓縮」。