GAN 是什麼?生成對抗網路原理與應用白話解析

一句話說明

GAN(Generative Adversarial Network,生成對抗網路)是一種讓兩個神經網路互相競爭來學會生成逼真資料的技術,曾經是 AI 生成圖片的主流方法。

核心概念:偽造者與鑑定師

GAN 的原理可以用偽鈔的比喻來理解。

想像有一個偽鈔製造者(生成器,Generator)和一個銀行驗鈔員(判別器,Discriminator)。一開始,偽鈔製造者的技術很爛,驗鈔員一眼就能分辨真假。但每次被識破,偽鈔製造者就會改進技術;同時,驗鈔員也在不斷提升辨識能力。

這個互相較勁的過程持續下去,偽鈔製造者的技術會越來越好,最終能做出連驗鈔員都難以分辨的假鈔。

對應到技術上:

生成器(Generator):接收一組隨機噪音(一串亂數),試圖產生看起來像真實資料的假資料。這串亂數可以想像成是「靈感」——不同的隨機輸入會產生不同的結果。生成器的工作就是學會把這些隨機的數字「翻譯」成有意義的圖片、音訊、或其他資料格式。

判別器(Discriminator):接收一張圖片,判斷它是真的(來自訓練集)還是假的(來自生成器)。判別器是一個二元分類器,它的輸出是一個介於 0 到 1 之間的數字——越接近 1 代表越可能是真的。

訓練目標:生成器想騙過判別器,讓判別器的輸出接近 1(判斷為真)。判別器想正確區分真假,對真圖輸出接近 1、對假圖輸出接近 0。兩個網路交替更新,直到達到平衡。

這個「對抗」的設計,就是 GAN 名字中 Adversarial(對抗)的由來。在數學上,這是一個 minimax 賽局——生成器在最小化判別器的成功率,判別器在最大化自己的成功率。

訓練過程

GAN 的訓練是交替進行的,像是兩個棋手輪流下棋:

第一步,固定生成器,訓練判別器。把真實圖片和生成器產生的假圖片混在一起,讓判別器學會分辨。這一步讓判別器變得更厲害。

第二步,固定判別器,訓練生成器。讓生成器產生假圖片,目標是讓判別器判斷為「真」。生成器根據判別器的回饋調整自己的參數,學習怎麼產出更逼真的圖片。

重複以上步驟幾萬到幾十萬次。隨著訓練進行,生成器產出的圖片品質會逐漸提升——從最初的噪音慢慢變成模糊的輪廓,再到清晰的圖片。

訓練 GAN 是出了名的困難,常見的問題包括:

模式崩塌(Mode Collapse):生成器只學會產生少數幾種圖片,因為這幾種圖片剛好能騙過判別器。就像偽鈔製造者只學會做一種面額的假鈔——技術上成功了(騙過驗鈔員),但多樣性極低。例如要生成人臉,最後只會生成同一種臉型、同一種表情。

訓練不穩定:兩個網路的學習速度必須匹配。如果判別器學得太快,它幾乎每次都能正確識破假圖,生成器得不到有用的回饋(梯度消失),等於在黑暗中摸索而沒有方向指引。如果生成器學得太快,判別器跟不上,生成器就停止進步(因為「考試太簡單」了)。

梯度消失和爆炸:在訓練的早期階段,判別器很容易區分真假(因為生成器的輸出還很差),這時候回饋給生成器的梯度非常小,訓練幾乎停滯。

這些問題催生了大量的 GAN 變體,每個變體針對不同的穩定性問題提出改進:

DCGAN(Deep Convolutional GAN):用卷積神經網路取代原始 GAN 的全連接層,讓生成器能產出空間結構合理的圖片,是第一個真正能穩定產出像樣圖片的 GAN 架構。

WGAN(Wasserstein GAN):用 Wasserstein 距離取代原始的判別器損失函數,大幅改善了訓練穩定性。最大的改變是判別器不再輸出 0-1 的機率,而是輸出一個分數,讓訓練信號更連續。

StyleGAN:由 NVIDIA 提出,最重要的創新是在生成器中加入「風格控制」機制。不同的層級控制不同尺度的特徵——粗糙層控制臉型和膚色,精細層控制頭髮紋理和皮膚細節。這讓使用者可以獨立調整圖片的不同屬性。

主要應用

圖片生成

GAN 最知名的應用。StyleGAN 能生成逼真的人臉照片——thispersondoesnotexist.com 這個網站每次重新整理都會顯示一張 GAN 生成的、不存在的人臉,品質好到肉眼幾乎無法區分。

CycleGAN 可以做無配對的圖片風格轉換——你不需要同一個場景的兩種版本(例如夏天和冬天的同一張照片),CycleGAN 可以學會從一個風格域轉換到另一個風格域。經典範例包括把照片轉換成莫內畫風、把馬變成斑馬。

Pix2Pix 做的是有配對的圖片轉換——你需要成對的訓練資料(例如建築立面圖和對應的照片),它可以學會從一種圖片格式轉換成另一種。應用包括把草圖轉成照片、把衛星圖轉成地圖。

圖片超解析度

SRGAN 和 ESRGAN 可以把低解析度的圖片放大,同時補充合理的細節。傳統的放大方法(雙線性插值)只會讓圖片變模糊,GAN 可以「想像」出合理的細節來填補。

這在監視器畫面增強和老照片修復上有實際應用。不過要注意:GAN 補充的細節是「合理的猜測」,不是真實的資訊。在監視器畫面中,GAN 可能生成看起來合理但不是真實的臉部特徵——這在鑑識用途上是一個嚴重的問題。

資料增強

當訓練資料不足時,用 GAN 生成額外的訓練樣本。在醫療影像領域特別有價值:X 光和 CT 掃描的標註資料很少(需要專業醫師標註、且受隱私法規限制),GAN 可以生成合成樣本來擴充訓練集,幫助訓練出更好的診斷模型。

但使用合成資料訓練時要小心:如果 GAN 生成的樣本有偏差(例如某種病灶的表現方式單一),用這些資料訓練的模型也會繼承這個偏差。

影片和音訊

早期的 AI 影片生成嘗試(如 MoCoGAN)基於 GAN 架構,但生成品質和時間一致性仍然有限——連續的畫格之間會出現閃爍和不連貫。

在音訊領域,GAN 被用於語音合成(WaveGAN)和音樂生成。將一個人的聲音轉換成另一個人的聲音(Voice Conversion)也是 GAN 的應用之一。

歷史定位

GAN 由 Ian Goodfellow 在 2014 年提出。據說靈感來自一次酒吧聚會中的學術討論,Goodfellow 回家後當晚就寫出了第一版程式碼。這篇論文被深度學習先驅 Yann LeCun 稱為「過去十年機器學習中最有趣的想法」。

GAN 的時代可以大致分成幾個階段:

2014-2016 年是探索期。原始 GAN 產出的圖片很模糊(32x32 像素),DCGAN 的出現才讓 GAN 能產出看起來像樣的圖片。

2017-2019 年是爆發期。ProGAN 和 StyleGAN 把圖片品質推到了 1024x1024 的逼真人臉,BigGAN 展示了 GAN 在大規模訓練下的潛力。這個時期幾乎每週都有新的 GAN 變體論文發表。

2020-2021 年是巔峰與轉折。StyleGAN3 解決了紋理黏著(texture sticking)的問題,但同時期 DDPM(Denoising Diffusion Probabilistic Models)的出現暗示了新方向。

2022 年至今是擴散模型時代。Stable Diffusion、DALL-E 2、Midjourney 等基於擴散模型的工具快速普及,GAN 的主流地位被取代。

GAN vs. 擴散模型

擴散模型取代 GAN 的原因包括:

訓練穩定性。擴散模型的訓練過程是學習去噪——給一張圖片逐步加上噪音,然後訓練模型學會逆轉這個過程。這比 GAN 的雙網路對抗訓練穩定得多,不會有模式崩塌的問題。

生成多樣性。GAN 容易陷入模式崩塌,只生成少數幾種結果。擴散模型從隨機噪音開始去噪,天然地具有更高的多樣性。

可控性。擴散模型和文字描述的配合更自然(透過 CLIP 等技術),你可以用文字精確描述你要的圖片。GAN 要做到類似的控制需要更多的工程工作。

但 GAN 在某些方面仍有優勢:

生成速度。GAN 只需要一次前向傳播就能生成圖片,擴散模型需要幾十到幾百步的去噪過程。在需要即時生成的場景(影片通話的背景替換、遊戲中的即時紋理生成),GAN 的速度優勢仍然重要。

模型大小。GAN 的模型通常比同品質的擴散模型小,適合在資源有限的裝置上運行。

Deepfake 與 GAN

Deepfake 是 GAN 最具爭議的應用。透過 GAN 技術(特別是 Face Swap 相關的架構),可以把一個人的臉替換到另一個人的影片上,效果足以騙過肉眼。

具體的威脅場景:

商業詐騙。2019 年有一起案例,詐騙者用 AI 生成的語音模仿一家英國公司的德國母公司 CEO,騙走了 22 萬歐元。影片版的 Deepfake 可以做到更逼真的冒充——在視訊會議中模仿高管下達匯款指令。

假訊息。製作政治人物的假影片散播不實言論,在選舉期間可能造成嚴重影響。影片比文字更容易讓人信以為真,因為多數人仍然有「眼見為憑」的直覺。

隱私侵害。未經同意生成他人的影像內容,特別是非合意的性影像(NCII),是目前 Deepfake 傷害最嚴重的類別之一。

各國正在立法因應。台灣的刑法修正案針對深偽影像增訂了相關條文,將未經同意製作或散布深偽性影像列為犯罪行為。

技術上,偵測工具(如 Microsoft Video Authenticator、Intel FakeCatcher)也在持續發展,但偵測和生成之間是軍備競賽——偵測方法公開後,生成技術會針對性地規避。C2PA(Coalition for Content Provenance and Authenticity)提出的內容認證標準,從源頭標記內容的來源和編輯歷程,可能是比「事後偵測」更可靠的長期方案。

安全與限制

訓練資料偏差會被放大。如果訓練集中某個族群的圖片較少,GAN 生成該族群的圖片品質就會較差,或者出現不合理的特徵。StyleGAN 在訓練資料以白人為主的情況下,生成其他族群的人臉時可能會出現膚色不自然、五官比例不對的問題。

生成結果無法精確控制。雖然 StyleGAN 允許調整某些屬性(如年齡、表情),但精細控制仍然困難。想要「生成一個穿紅色外套、坐在公園長椅上、背景有櫻花」這種複雜指令,GAN 的能力遠不如擴散模型。

智財風險存在。和擴散模型一樣,GAN 的訓練資料來源和生成結果的版權歸屬仍有法律灰色地帶。如果訓練資料中包含受版權保護的作品,生成的結果可能構成侵權——各國法院目前還沒有統一的見解。

技術門檻高。訓練自己的 GAN 需要大量 GPU 資源(至少一張高階顯示卡)和深度學習知識。使用預訓練模型的門檻較低,但理解輸出品質的限制和調整超參數仍需要一定的技術背景。

知識檢測

讀完文章後,測試一下你對這個主題的理解。

常見問題

GAN 和 Stable Diffusion 有什麼不同?

GAN 用兩個網路對抗學習,生成速度快但訓練不穩定。Stable Diffusion 用擴散過程(逐步去噪),訓練更穩定、生成品質和多樣性更好,但生成速度較慢。目前圖片生成領域以擴散模型為主流。選擇取決於你的需求:需要即時生成選 GAN,需要高品質和可控性選擴散模型。

GAN 現在還有人在用嗎?

有。在即時影像處理(如影片通話的背景替換、即時濾鏡)、超解析度(遊戲中的 DLSS 技術就借鑑了 GAN 的思路)、和資料增強等領域,GAN 因為推論速度快仍然實用。學術研究中 GAN 的相關論文也持續發表,特別是在把 GAN 和擴散模型結合的方向上。

學 AI 需要先了解 GAN 嗎?

如果目標是理解 AI 圖片生成的發展脈絡,了解 GAN 有助於理解「為什麼擴散模型出現後大家都轉過去了」。GAN 的對抗訓練思想對理解整個生成式 AI 領域都有幫助。如果目標是實際應用 AI 繪圖,直接從 Stable Diffusion 或 Midjourney 開始更實際,需要的時候再回頭學 GAN 的原理。

GAN 可以生成文字嗎?

理論上可以,但實際效果不好。原因是 GAN 的訓練依賴梯度的連續計算,而文字是離散的——一個字就是一個字,沒有「半個字」的概念。生成器沒辦法做微小的調整來逐步改善文字品質(不像圖片可以調整幾個像素值)。學術界嘗試過 SeqGAN 和 LeakGAN 來解決這個問題,但效果遠不如 Transformer 架構(GPT、Claude 等)在文字生成上的表現。

Deepfake 偵測做得到嗎?

目前有工具可以偵測(如 Microsoft Video Authenticator),準確率在實驗環境下可以達到 90% 以上,但在實際環境中(經過壓縮、裁切、加濾鏡的影片)準確率會下降。最可靠的長期方案不是偵測而是驗證——C2PA 內容認證標準從源頭標記影片的來源和編輯歷程,讓接收者可以確認內容有沒有被篡改。