Generative Adversarial Networks/zh
| Article | |
|---|---|
| Topic area | Deep Learning |
| Prerequisites | Neural Networks, Backpropagation, Stochastic Gradient Descent |
概述
生成對抗網絡(GAN)是一類生成模型, 其中兩個 神經網絡 通過雙人博弈聯合訓練。生成器網絡將來自簡單噪聲分布的樣本映射到數據空間中的候選樣本, 而判別器網絡則試圖區分真實訓練樣本與生成樣本。訓練過程通過更新判別器以提高其分類準確率, 同時更新生成器以產生判別器無法與真實數據區分開的樣本。Goodfellow 等人於 2014 年提出 GAN 後, 它在 2010 年代後期成為高保真圖像合成的主流方法之一, 至今仍在基於似然的訓練較為棘手或需要銳利、高頻輸出的領域中具有重要影響。[1] 儘管基於擴散的方法已在圖像生成前沿占據主導地位, GAN 仍被用於圖像到圖像的轉換、超解析度、音頻合成, 以及作為更大系統中的組成模塊。
直覺
經典類比將生成器比作偽造者, 判別器比作偵探。偽造者製作假幣, 偵探檢查每張鈔票並將其標記為真或假。雙方在彼此的推動下不斷進步: 當偵探越來越善於識別假幣時, 偽造者必須製作更具說服力的贗品; 隨著偽造品質量的提高, 偵探必須關注更細微的特徵。達到均衡時, 偽造的鈔票與真鈔難以區分, 偵探的判別準確率也只能達到隨機水平。
這種對抗式設定避免了顯式的似然目標。GAN 並不要求生成器最大化其賦予訓練數據的概率, 而僅要求GAN 的樣本在某個學習得到的分類器下與訓練樣本在統計上不可區分。因此, 訓練信號來自一個學習得到的、可自適應的評判者, 而非一個固定的損失曲面 (loss surface); 這是 GAN 樣本通常比基於似然訓練的模型更銳利的關鍵原因之一, 因為後者會將概率質量塗抹到不合理的區域。
形式化
設 $ p_{\text{data}} $ 表示真實數據的未知分布, $ p_z $ 表示一個固定的先驗分布, 定義在隱向量 $ z $ 上, 通常為標準高斯分布或均勻分布。生成器 $ G_\theta : \mathcal{Z} \to \mathcal{X} $ 將隱變量映射到數據空間, 從而在 $ \mathcal{X} $ 上誘導出一個隱式分布 $ p_g $。判別器 $ D_\phi : \mathcal{X} \to (0, 1) $ 輸出輸入為真實樣本的概率。最初的GAN 目標是極小極大價值函數
$ {\displaystyle \min_\theta \max_\phi \; V(D_\phi, G_\theta) = \mathbb{E}_{x \sim p_{\text{data}}}[\log D_\phi(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D_\phi(G_\theta(z)))].} $
對於一個固定的生成器, 最優判別器為
$ {\displaystyle D^*(x) = \frac{p_{\text{data}}(x)}{p_{\text{data}}(x) + p_g(x)},} $
將其代回可得到一個生成器目標, 在常數項之外等價於 $ p_{\text{data}} $ 與 $ p_g $ 之間的 Jensen-Shannon 散度。因此唯一的全局最小值為 $ p_g = p_{\text{data}} $, 此時判別器在所有點上輸出 $ 1/2 $。該理論結果為設計提供了動機, 但本身並不能保證在現實的非凸參數化下達到收斂。
訓練與推理
訓練過程在 $ \phi $ 和 $ \theta $ 上交替進行 隨機梯度 更新。常見的調度策略是每次生成器更新前進行一次或多次判別器更新, 因為只有較強的判別器才能為生成器提供有用的梯度。兩類更新都依賴於通過判別器進行的 反向傳播: 生成器的梯度是對 $ \log(1 - D_\phi(G_\theta(z))) $ 關於 $ \theta $ 沿組合網絡求導得到的。
在實踐中, 原始的生成器損失 $ \log(1 - D) $ 在訓練早期判別器以較高置信度拒絕偽造樣本時會出現飽和, 從而導致梯度消失。標準的解決方法是採用非飽和形式
$ {\displaystyle \mathcal{L}_G = -\mathbb{E}_{z \sim p_z}[\log D_\phi(G_\theta(z))],} $
該形式與原目標具有相同的不動點, 但在生成器處於劣勢時能提供更強的梯度。其他常用的穩定方法包括標籤平滑、對判別器施加的譜歸一化、梯度懲罰, 以及在評估階段對生成器權重使用指數移動平均。推理過程很直接: 從 $ z \sim p_z $ 中採樣並返回 $ G_\theta(z) $。判別器通常在訓練後被丟棄, 但有時也會被復用為感知特徵提取器或評判者。
變體
GAN 變體的空間非常龐大, 下面列出幾個有代表性的家族。
- DCGAN 用深度 卷積 架構取代全連接層, 並規定使用批歸一化、帶步長的卷積以及 ReLU/LeakyReLU 激活, 以穩定圖像合成。
- 條件 GAN 將輔助信息 $ y $(如類別標籤或文本嵌入)同時作為 $ G $ 和 $ D $ 的條件, 從而實現可控生成。
- Wasserstein GAN 將 Jensen-Shannon 目標替換為 Wasserstein-1 距離, 通過權重裁剪或更常見的梯度懲罰 (WGAN-GP) 來強制 1-Lipschitz 約束。該方法通常帶來更穩定的訓練, 且其損失與樣本質量更具相關性。
- CycleGAN 通過將兩個生成器與循環一致性損失 (consistency loss) 組合, 在沒有成對訓練數據的情況下學習未配對域之間的圖像到圖像的轉換, 例如照片到繪畫的映射。
- StyleGAN 引入了一個解耦隱變量的映射網絡以及一個風格調製的合成網絡, 在人臉及其他領域上多年保持了最先進的真實感水平。
- 漸進式增長從低解析度開始訓練並逐步添加層, 從而簡化了高解析度合成的優化曲面。
比較
與其他生成模型家族相比, GAN 在質量與可處理性的權衡中占據特定位置。諸如 自編碼器、變分自編碼器和自回歸模型之類的基於似然的模型允許對對數似然進行精確或有界的評估, 但由於似然會懲罰將概率質量分配到數據支撐之外, 它們傾向於生成較為模糊的樣本。GAN 通過訓練一個學習到的評判者來迴避該問題, 因此通常產生更銳利的輸出, 但無法直接評估似然, 這使得模型選擇和密度估計更加困難。
與 擴散模型 相比, GAN 在採樣速度上通常要快得多, 因為通過 $ G $ 進行一次前向傳播即可產生一個樣本, 而擴散模型需要多次去噪步驟。然而擴散模型通常更易訓練, 在數據和算力上的擴展更可預測, 並在 ImageNet 類別條件合成等基準上很大程度上超過了 GAN。近年來的工作通過將擴散蒸餾為少步採樣器縮小了採樣速度差距, 與此同時 GAN 研究也相應地探索了混合目標。
局限性
GAN 的訓練以脆弱著稱。由於目標是一個鞍點問題而非簡單的最小化問題, 普通的梯度下降並不一定收斂, 振盪和發散動態都很常見。最常被提及的失敗模式是模式坍縮 (mode collapse): 生成器集中於當前判別器無法拒絕的數據分布的一個小子集, 導致輸出缺乏多樣性。診斷模式坍縮較為困難, 因為 GAN 缺乏可處理的似然, 實踐中只能依賴諸如 Inception Score 和 Frechet Inception Distance 等代理指標, 而這些指標本身也並不完美。
其他實際問題包括對架構選擇和超參數的敏感性、判別器梯度消失或爆炸, 以及難以判斷訓練何時結束。從理論上講, 非凸參數化下均衡的存在性與唯一性並不能得到保證, 而當 $ p_{\text{data}} $ 與 $ p_g $ 的支撐不相交時, Jensen-Shannon 散度會變得幾乎不帶信息, 這正是促使研究者轉向 Wasserstein 類目標的動機。
應用
GAN 已被應用於圖像超解析度、圖像修補、風格遷移、領域自適應、語義分割、語音和音樂生成以及物理仿真。它們也被用作其他系統中學習得到的感知損失, 以及下游分類器的數據增強器。在以採樣延遲為主導的生產環境中, 單次前向傳播的 GAN 生成器即便在峰值質量上不及基於擴散的模型, 仍然具有吸引力。