模式崩潰
模式崩潰是 GAN 的經典失敗:生成器並未重現資料的全部多樣性,反而卡在只產生寥寥幾種輸出——甚至只有一種。想像一個偽造者發現某個特定贗品能可靠地騙過偵探,於是它就一張接一張地印同一個。這些影像單看或許很逼真,但生成器已把豐富的資料分布塌縮成少數幾個「模式」,喪失了多樣性。
所謂「模式」是資料分布的一個高機率區域(例如每個數字類別都是 MNIST 的一個模式)。模式崩潰之所以發生,是因為標準的生成器目標獎勵的是「騙過當前判別器」,而非「涵蓋資料」。若把許多不同的 z 都映成同一個有說服力的輸出就能騙過 D,生成器樂於照辦——逐樣本的損失裡沒有任何東西要求多樣性。交替式極小極大最佳化更加劇此事:生成器可去追逐判別器當前低估的任一模式,判別器隨之調適,生成器又跳到另一個模式,於是產生振盪(一場貓捉老鼠的循環),而非涵蓋。這與帶有 Jensen–Shannon/逆向 KL 風味之目標的尋眾數(mode-seeking)不對稱性相關。
許多修正法針對它而來。帶梯度懲罰的 Wasserstein GAN 提供能更好懲罰「遺漏質量」的梯度,改善涵蓋度。小批次判別/小批次標準差(minibatch discrimination/minibatch standard deviation)讓判別器看見批次內的多樣性,使全部相同的輸出被標示出來。展開式 GAN(unrolled GAN)讓生成器能預期判別器未來的反應,抑制模式跳躍。PacGAN 一次餵給判別器多個打包在一起的樣本。其他手段還有:對過往贗品做經驗回放、雙時間尺度更新規則(TTUR)、頻譜正規化,以及條件式 GAN(以標籤為條件可強迫逐類別涵蓋)。之後再以 recall(相對於 precision)或在合成資料上找回的相異模式數量等指標來衡量多樣性。
在 MNIST 上訓練一個 GAN 並觀察樣本:健康的訓練中你會看見十個數字以多樣風格出現;在模式崩潰下,生成器可能無論輸入雜訊 z 為何都只吐出銳利的 1 與 7——每個 z 都解碼成幾乎相同的那寥寥幾張影像。
切勿把模式崩潰與單純的模糊或低品質混為一談。崩潰後的樣本可以很銳利、單看也完美無瑕;缺陷出在樣本之間——變化太少。正因如此,單張影像的品質分數會漏看它,你需要對多樣性敏感的指標(recall、coverage,或同時懲罰保真度與多樣性的 FID)。