iPAS AI 應用規劃師 中級 科目一

GAN Mode Collapse 怎麼解?

原題 20

在使用生成對抗網路(GAN)進行人臉影像生成時,若出現「模式崩潰」(Mode Collapse)現象,下列哪一種方法最常被用來有效解決此問題?

白話

GAN(生成對抗網路)是一種讓 AI 生成圖片的技術,靠「生成器」和「鑑別器」互相對戰來進步。

但有一個常見的問題叫「模式崩潰」(Mode Collapse):生成器學會了一個偷懶的技巧,每次都只生成同一種或少數幾種臉,不管給它什麼輸入,輸出都長得差不多。

問你:解決 Mode Collapse 最常被用的方法是什麼?

點選你的答案。

01 總結

一句話總結

解決 GAN Mode Collapse 最常用的方法:用 Wasserstein 距離(WGAN 損失)取代原始 GAN 的損失函數,讓訓練信號更穩定,生成器不再有「只生成一種臉就能騙過鑑別器」的動機

02 情境

先感受問題:生成器學會了一個骯髒的偷懶技巧

假設「臉雲」公司在訓練一個人臉生成 GAN,目標是能生成各種年齡、性別、種族的臉。

訓練幾天後,工程師發現了一個詭異的現象:

輸入潛在向量 z = [0.1, 0.8, -0.3, ...] → 輸出:一張 25 歲亞裔女性的臉
輸入潛在向量 z = [0.9, -0.2, 0.7, ...] → 輸出:同一張 25 歲亞裔女性的臉
輸入潛在向量 z = [-0.5, 0.4, 0.1, ...] → 輸出:還是同一張臉(稍微有點差異)

不管 z 怎麼變,生成器都輸出類似的臉。這就是 Mode Collapse。

為什麼生成器這樣做?因為它發現:「只要我生成這種臉,鑑別器就認為是真的(因為這種臉確實存在於訓練資料)」,所以它不需要費力去生成多樣性,只要複製這個「最安全的答案」就能持續欺騙鑑別器。

從生成器的角度看,這是理性的選擇。但從用戶的角度看,這台機器廢了。

03 對照

原始 GAN 為什麼會讓生成器學會偷懶

原始 GAN 的損失函數設計有五個讓 Mode Collapse 容易發生的缺陷:

  1. 鑑別器太強時,梯度消失:當鑑別器已經能完美分辨真假,它對假圖的輸出接近 0,這個幾乎為 0 的梯度傳回給生成器,生成器沒有任何有用的「怎麼改進」信號,就原地不動(模式凍結)。
  2. 損失函數以 JS 散度(Jensen-Shannon Divergence)衡量分布差距:當真實分布和生成分布差太遠(完全不重疊),JS 散度是個常數,梯度為 0,訓練信號消失。
  3. 生成器沒有「多樣性獎勵」:原始損失只問「這個樣本像不像真的」,不問「你今天生成的 100 張臉多不多樣」,偷懶不受懲罰。
  4. 鑑別器和生成器訓練步調失衡:鑑別器更新太快,生成器被「封殺」在某個局部最優解,逃不出去。
  5. Nash 均衡難以達到:GAN 是雙人博弈,理想狀態是兩者的最優策略達到 Nash 均衡,但實踐中往往振盪或崩潰。
04 解法

WGAN:換一個更穩定的「計分方式」

回到「臉雲」公司的問題。Wasserstein GAN(WGAN)的核心思想是:

換掉損失函數的計算方式:從原本的 JS 散度(分布重不重疊)換成 Wasserstein 距離(也叫 Earth Mover's Distance,地球移動距離)。

Wasserstein 距離的直覺:「把生成器的分布移動到真實分布,需要搬多少土?」即使兩個分布完全不重疊,Wasserstein 距離仍然給出一個有意義的數字,不會像 JS 散度一樣突然變成常數。

這帶來什麼改變:

  • 鑑別器再強,梯度也不會消失,生成器永遠有「如何改進」的信號
  • 即使生成器暫時困在某個模式,Wasserstein 距離告訴它「你的分布和真實分布有多遠」,激勵它逃出去
  • 訓練更穩定,Mode Collapse 的發生率大幅降低

用了 WGAN 之後,「臉雲」的生成器不再有偷懶的誘因,因為就算只生成一種臉,Wasserstein 距離仍然是很高的分數,告訴生成器「你還差得遠」,迫使它繼續多樣化。

這就是選項 B 講的:採用 Wasserstein 距離(WGAN 損失)替代原始的 GAN 損失函數

技術版:原始 GAN 損失 vs WGAN 損失的數學差異

中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。

原始 GAN 的損失函數:

# 鑑別器 D 的目標:最大化對真圖輸出 1、假圖輸出 0
L_D = -E[log D(x_real)] - E[log(1 - D(G(z)))]

# 生成器 G 的目標:讓鑑別器對假圖也輸出 1(欺騙)
L_G = -E[log D(G(z))]

# 問題:D 太強時,D(G(z)) ≈ 0,log(0) → -∞
# 梯度幾乎為 0,G 沒有學習信號
Step 1 純故事版
  1. 原始 GAN:鑑別器問「這張臉是真是假」(0 或 1),太確定就沒法教生成器
  2. WGAN:鑑別器改問「這張臉離真實分布有多遠」(連續距離,不是 0/1),永遠給得出有用的分數
  3. 這個「距離分數」讓生成器知道自己差多少,不會陷入梯度消失的困境
  4. Mode Collapse 減少:生成器有穩定的壓力去生成多樣的臉,而不是困在同一個局部最優
Step 2 中文 ↔ 公式對照
故事公式符號
衡量分布差距(原始)JS 散度(Jensen-Shannon Divergence)
衡量分布差距(WGAN)W(P_r, P_g)(Wasserstein 距離)
真實資料分布P_r(Real distribution)
生成器輸出分布P_g(Generated distribution)
WGAN 鑑別器分數(不再是 0/1)f_w(x),連續實數
WGAN 要求的數學約束1-Lipschitz 約束
Step 3 符號角色表
Wasserstein 距離(Earth Mover's Distance)
把一個機率分布「搬移」到另一個分布,最少需要做多少「搬運工作」。即使兩個分布不重疊,這個距離仍然有意義且有梯度,不像 JS 散度在不重疊時梯度為 0。
1-Lipschitz 約束
WGAN 要求鑑別器滿足的數學條件:函數的梯度大小最大為 1。原始 WGAN 用「權重截斷」(Weight Clipping)實現,但 WGAN-GP 改用梯度懲罰(Gradient Penalty)更有效。
WGAN-GP
WGAN 的改良版,用梯度懲罰(Gradient Penalty)取代權重截斷來滿足 Lipschitz 約束,訓練更穩定,現在比原始 WGAN 更常用。注意:選項 A 說的「梯度懲罰」是 WGAN-GP 的技術,但題目問的是解決 Mode Collapse 最常用的,直接選 WGAN 損失(選項 B)才是核心。
Step 4 完整公式對應
# WGAN 鑑別器(改名叫 Critic,不再是 0/1 輸出)的損失:
L_D = E[f_w(x_real)] - E[f_w(G(z))]
# 目標:最大化真實分數和假圖分數的差距

# WGAN 生成器的損失:
L_G = -E[f_w(G(z))]
# 目標:讓 Critic 對假圖也給高分

# 關鍵:f_w 是連續實數輸出(不是 Sigmoid 後的 0/1)
# 即使 G(z) 很爛,梯度仍然不為 0,學習繼續

# WGAN-GP 在 D 的損失上再加梯度懲罰項:
L_D_GP = L_D + λ · E[(||∇f_w(x_hat)||_2 - 1)²]
# x_hat 是真實圖和假圖之間的插值點
Step 5 自我複述

蓋住公式,說出 WGAN 解決 Mode Collapse 的邏輯:

  1. 原始 GAN 用 JS 散度,分布不重疊時梯度消失,生成器困住
  2. WGAN 改用 Wasserstein 距離(Earth Mover's Distance),即使分布不重疊也有梯度
  3. 生成器永遠有「距離真實分布有多遠」的信號,不會困在一個模式裡
  4. Mode Collapse 發生率大幅降低
05 陷阱

為什麼其他選項是錯的

A在鑑別器中加入梯度懲罰(Gradient Penalty)以穩定訓練過程

字面在說什麼

梯度懲罰(Gradient Penalty)是 WGAN-GP 用來強制鑑別器滿足 Lipschitz 約束的技術,確實是 WGAN 家族的一部分。

為什麼不對

梯度懲罰是 WGAN-GP 對原始 WGAN「權重截斷」的改良,目的是「讓 WGAN 訓練更穩定」,不是解決 Mode Collapse 的核心機制。選項 B(WGAN 損失,即 Wasserstein 距離)才是解決 Mode Collapse 的根本,梯度懲罰是讓 WGAN 更有效實現的工具。把「配套技術」誤認為「核心解法」是這題的陷阱。

誰會選錯

記得「WGAN-GP 解決 Mode Collapse」,看到「梯度懲罰」就覺得和 WGAN 有關所以選 A 的考生。梯度懲罰是讓 WGAN 更穩定的技術,WGAN 損失(Wasserstein 距離)才是解決根本問題的關鍵。

C對生成器輸入的潛在向量加入隨機擾動

字面在說什麼

潛在向量 z 是生成器的輸入(隨機種子),給 z 加雜訊讓輸出也跟著變化,希望能打破輸出單一的局面。

為什麼不對

這是治標不治本。Mode Collapse 的問題在於生成器學到了一個映射:「不管輸入的 z 是什麼,都輸出同一種臉」。如果 z 加了雜訊,生成器仍然可以學到「忽略輸入的微小變化,只輸出那種臉」。要真正解決,需要改變損失函數的設計,讓生成器在訓練過程中就沒有動機去單一化,而不是在輸入加雜訊。

誰會選錯

直覺覺得「輸出太一樣,那就讓輸入更隨機」的考生。這個邏輯有道理但力道不夠,只要損失函數還是讓生成器有動機偷懶,加再多雜訊也沒用。

D使用多尺度鑑別器架構以提高對多樣性的判別能力

字面在說什麼

多尺度鑑別器(如 pix2pixHD 用的)同時用多個不同解析度的鑑別器,讓生成器需要同時在多個粒度上欺騙鑑別器。

為什麼不對

多尺度鑑別器主要解決「生成高解析度圖像時細節不夠」的問題,不是專門針對 Mode Collapse 的解法。Mode Collapse 的核心是「損失函數給了生成器偷懶的動機」,改變鑑別器的架構不能根本解決這個激勵問題。這個方法可以作為改善多樣性的補充手段,但不是最常被用來解決 Mode Collapse 的方法。

誰會選錯

知道多尺度鑑別器能提升 GAN 品質、多樣性的考生,覺得這個方向和「解決 Mode Collapse」對得上。但題目問的是「最常被用來解決 Mode Collapse」,WGAN 才是這個問題的標準答案,多尺度鑑別器是圖像品質的技術。

06 變形

同個考點下次怎麼變形

變形 1 邊界

WGAN 能完全解決 Mode Collapse 嗎?

直覺

用了 WGAN 之後就不會再發生 Mode Collapse 了?

答案

WGAN 大幅降低 Mode Collapse 的發生率,但不能完全保證消除。特別是任務非常困難(如生成極高解析度圖像)、資料集本身分布複雜的情況,仍可能出現局部的 mode collapse。WGAN 是目前業界最常用的緩解手段,但不是銀彈。實務上通常還會搭配 Spectral Normalization、Minibatch Discrimination 等額外技術。

變形 2 反例

有沒有 GAN 任務不需要擔心 Mode Collapse?

直覺

Mode Collapse 是 GAN 的通病,應該都要防?

答案

有。如果任務本身的目標輸出本來就應該是少樣性的(例如「把草圖轉成一種特定風格的插圖」),單一化的輸出反而是對的。另外條件 GAN(Conditional GAN,cGAN)因為輸入條件(如類別標籤)已經告訴生成器要生成什麼,Mode Collapse 的問題也相對輕微。Mode Collapse 在「無條件生成高多樣性內容」的任務裡最嚴重。

變形 3 升級版

StyleGAN 是怎麼設計來避免 Mode Collapse 的?

直覺

StyleGAN 生成的人臉多樣性很高,它有什麼特別的設計?

答案

StyleGAN 有幾個針對多樣性的設計:1. 映射網路(Mapping Network)把隨機 z 先映射到中間潛在空間 W,W 更線性、更容易解耦,多樣性更好控制。2. 混合正則化(Mixing Regularization):訓練時隨機混合兩個 z,強迫生成器不能只依賴單一模式。3. 截斷技巧(Truncation Trick):在推理時控制多樣性和品質的 tradeoff。這些是在架構層面防止 Mode Collapse 的設計。

變形 4 跨領域

強化學習裡有類似 Mode Collapse 的問題嗎?

直覺

GAN 的生成器學會偷懶固定輸出,強化學習的 agent 也會嗎?

答案

有,叫做「策略崩潰」(Policy Collapse)或「探索不足」(Insufficient Exploration)。Agent 找到一個能穩定獲得中等獎勵的策略就不再探索,錯過了更高回報的策略。對應的解法也類似:加入探索獎勵(Entropy Bonus,類似 WGAN 讓多樣性有激勵),或用 PPO 等算法的 KL 散度約束,防止策略一次更新太大而陷入局部最優。

變形 5 評估指標

怎麼量化 GAN 的多樣性?有什麼指標可以偵測 Mode Collapse?

直覺

看生成的圖片都長一樣就知道崩潰了,需要特別的指標嗎?

答案

有定量指標。FID(Fréchet Inception Distance,Fréchet 初始距離)同時衡量生成品質和多樣性,Mode Collapse 時 FID 會飆高。Recall 指標(真實分布的多少比例被生成分布覆蓋)也是衡量多樣性的工具,Mode Collapse 時 Recall 很低。Inception Score(IS)也常用,但它主要衡量品質,對 Mode Collapse 不夠敏感。FID 是目前最廣泛使用的 GAN 評估標準。

07 延伸

想再往下看,這 5 個

  • 生成對抗網路(Generative Adversarial Network)正解考點所在:生成器和鑑別器對抗訓練的架構,Mode Collapse 是其最常見的訓練失敗模式,WGAN 損失是核心解法。
  • KL散度(KL Divergence)衡量兩個機率分布差距的指標,原始 GAN 損失函數基於 JS 散度(KL 的對稱版),分布不重疊時梯度消失是 Mode Collapse 的數學根因。
  • 潛在空間(Latent Space)生成器從潛在向量 z 映射到圖像的空間,Mode Collapse 表現為不同 z 輸出幾乎相同,即生成器的映射函數塌陷到窄域。
  • 擴散模型(Diffusion Model)近年取代 GAN 的生成圖像主流,透過逐步去噪生成,架構設計本質上沒有 Mode Collapse 問題,是 GAN 的重要對比。
  • 生成式 AI(Generative AI)GAN 所屬的 AI 大類,理解生成模型的多樣性問題(Mode Collapse)是評估生成式 AI 系統品質的核心考點。
出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 20 題

查看官方原文 PDF