# Generative Adversarial Nets
Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio, ( NeurIPS 2014)
https://arxiv.org/abs/1406.2661
## 1. 摘要
本研究提出一種透過對抗過程訓練生成模型的新框架,同時訓練兩個模型:
* 生成器(Generator, G):學習資料分佈,生成與真實資料相似的樣本。
* 鑑別器(Discriminator, D):判斷輸入樣本來自真實資料還是生成器。
訓練過程構成一個極小化極大化遊戲(minimax game),生成器試圖讓鑑別器判斷錯誤,鑑別器則試圖正確分辨真假資料。當兩者達到平衡時,生成器的分佈會與真實資料分佈一致,而鑑別器的輸出為 0.5,意即真假機率各為 50%。
訓練與生成時均不需使用馬可夫鏈或近似推論網路,並可用反向傳播直接訓練。
## 2. 研究目的
舊生成網路進展緩慢,原因有二:
* 難以利用分段線性單元(ReLU 等)的優勢。
* 最大似然估計需要近似處理許多不可解的機率計算,
本研究提出一種無需顯式定義機率分佈、無需馬可夫鏈即可訓練的生成模型框架。建立一個理論上可證明收斂至真實資料分佈的生成方法。
## 3. 研究方法
### 3.1. 對抗訓練框架

>圖 1. 生成對抗網路(GAN)的訓練過程示意:判別器分佈 $D$(藍色虛線)被不斷更新,用來區分來自資料分佈 $p_{data}$(黑色虛線)與生成分佈 $p_g$(綠色實線,生成器 $G$ 的輸出)的樣本。下方水平線表示潛在變數 $z$ 的取樣空間(此處為均勻分佈),上方水平線則屬於資料空間 $x$ 的一部分。向上的箭頭代表映射 $x = G(z)$,將均勻分佈轉換為生成分佈 $p_g$。在 $p_g$ 的高密度區域,映射收縮;在低密度區域,映射擴張。( a ). 接近收斂時,$p_g \approx p_{data}$,而 $D$ 僅能做出部分正確的分類。( b ). 在演算法的內循環中,$D$ 學會區分資料與生成樣本,收斂至最優解:$D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)}$( c ). 更新 $G$ 後,$D$ 的梯度引導 $G(z)$ 朝更可能被分類為真實資料的區域移動。( d ). 經過多次更新後,如果 $G$ 與 $D$ 具有足夠的容量,它們將達到平衡:$p_g = p_{data}$。此時判別器無法再分辨兩者,輸出 $D(x) = 0.5$。
對輸入雜訊 $z$(來自先驗分佈 $p_z$)使用生成器 $G(z;θ_g)$ 生成假資料。鑑別器 $D(x;θ_d)$ 輸出樣本來自真實資料的機率。
* GAN 的極小極大目標函數:
$\min_G \max_D V(D,G) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log (1 - D(G(z)))]$。
* 參數說明:
| 符號/術語 | 名稱 | 定義/意義 | 型別/範圍 | 備註(訓練直覺) |
| ----------------------------------------- | ------- | ------------------------------------------------------------------------------------------------ | ---------------------------------- | ------------------------ |
| $\min_G \max_D V(D,G)$ | 對抗式極小極大 | 零和博弈的總目標 | — | $D$ 盡力區分真/假、$G$ 盡力騙過 $D$ |
| $V(D,G)$ | 價值函數 | $\displaystyle \mathbb{E}_{x\sim p_{data}}[\log D(x)] + \mathbb{E}_{z\sim p_z}[\log(1-D(G(z)))]$ | $\mathbb{R}$ | 大代表對 $D$ 有利;小代表對 $G$ 有利 |
| $G$($\theta_g$) | 生成器 | 將噪聲 $z$ 映射為樣本 $\hat x=G(z)$ 的可微模型 | NN/可微函數 | 想讓 $D(G(z))$ 接近 1 |
| $D$($\theta_d$) | 判別器 | 對輸入樣本輸出為真的機率 $D(x)\in(0,1)$ | NN/可微函數 | 想讓真樣本機率大、假樣本機率小 |
| $x$ | 真實樣本 | 來自資料空間的觀測 | 例:$\mathbb{R}^{H\times W\times C}$ | 由 $p_{data}$ 生成 |
| $\hat x=G(z)$ | 生成樣本 | 由 $G$ 產生的擬真資料 | 同 $x$ 的空間 | 目標是以假亂真 |
| $z$ | 潛在向量/噪聲 | $G$ 的隨機輸入 | $\mathbb{R}^{d_z}$ | 提供多樣性與隨機性 |
| $p_{data}$ | 資料分佈 | 真實但未知的資料機率分佈 | — | 僅能透過樣本近似 |
| $p_z$ | 噪聲先驗 | 生成 $z$ 的分佈 | 常用 $\mathcal N(0,I)$ 或均勻分佈 | 訓練時先抽 $z\sim p_z$ |
| $D(x)$ | 真實機率評分 | 判別器認為「真實」的機率 | $(0,1)$ | 真樣本希望大、假樣本希望小 |
| $\mathbb{E}_{x\sim p_{data}}[\log D(x)]$ | 真實項 | 鼓勵 $D$ 對真實樣本輸出高機率 | $\mathbb{R}$ | 提升辨識真樣本能力 |
| $\mathbb{E}_{z\sim p_z}[\log(1-D(G(z)))]$ | 假樣本項 | 鼓勵 $D$ 把生成樣本判為假 | $\mathbb{R}$ | 提升識別假樣本能力 |
| $\log$ | 對數 | 對數似然的度量 | — | 使用自然對數 |
### 3.2. 訓練策略
訓練策略採用交替更新,使用小批量隨機梯度下降(SGD)與動量更新。對鑑別器進行 $k$ 次梯度上升(最大化其分類正確率),再對生成器進行一次梯度下降。
### 3.3. 理論分析
證明在非參數情況下,該最小最大遊戲的全域最優解為 $p_g=p_{data}$。若生成器與鑑別器容量足夠,且每步鑑別器達到最優,則生成器分佈可收斂至真實資料分佈。
## 4. 實驗設計與結果
### 4.1. 實驗設計
* 資料集:MNIST、Toronto Face Database (TFD)、CIFAR-10。
* 網路結構:生成器採用 ReLU 與 sigmoid,鑑別器採用 maxout + dropout。
* 評估方法:以高斯 Parzen 視窗對生成樣本估計 log-likelihood。
### 4.2. 實驗結果

>圖 2. 來自模型的樣本視覺化:最右邊一欄顯示與相鄰生成樣本最近的訓練樣本,用來證明模型並沒有單純記憶訓練集。這些樣本是隨機抽取的,而非特意挑選。與多數其他深度生成模型的視覺化不同,這些圖像是真實由模型分布產生的樣本,而不是根據隱藏單元條件平均得到的影像。此外,這些樣本之間互不相關,因為生成過程不依賴於 Markov chain 的混合。( a ). MNIST( b ). TFD( c ). CIFAR-10(全連接模型)( d ). CIFAR-10(卷積式判別器與「反卷積」生成器)

>圖3. 由完整模型的 $z$ 空間座標進行線性插值所獲得的數字影像:在潛在變數 $z$ 的空間中,選取兩個點進行線性插值。接著將插值點送入生成器 $G(z)$,得到的數字圖像會連續變化,從一個數字平滑過渡到另一個數字。
無需馬可夫鏈採樣,生成過程快速且樣本獨立。可透過在 $z$ 空間插值,生成平滑過渡的樣本。證明 GAN 學到「連續的生成分布」,而不是記下樣本。
#### > 定量結果(Parzen 視窗 log-likelihood)

>圖4. 基於 Parzen window 的對數似然估計:在 MNIST 上報告的數值為測試集樣本的平均對數似然,並且計算了跨樣本的平均標準誤差。在 TFD 上,標準誤差是依據資料集的不同折數(folds)計算的,每個折數的 σ 參數都透過驗證集進行交叉驗證,並在每個折數上計算平均對數似然。對於 MNIST,我們比較的是實值版本(real-valued)資料集,而不是二值化版本。
* MNIST:225 ± 2(優於 DBN、Stacked CAE、Deep GSN 等比較模型)
* TFD:2057 ± 26(與最佳模型接近)
#### > 生成樣本品質
* MNIST 與 TFD 的樣本具高真實感,且非簡單記憶訓練資料。
* CIFAR-10 的全連接與卷積版本均能生成有結構的影像。
## 5. 結論
本研究證明了對抗生成的可行性,並在多個資料集上獲得有競爭力的結果。
#### > 優點
* 不需馬可夫鏈,僅用反向傳播即可訓練。
* 不需顯式機率分佈或推論過程,模型設計彈性高。
* 可生成高解析度且清晰的樣本。
#### > 缺點
* 無法直接計算 $p_g(x)$(生成分佈機率密度)。
* 訓練時需維持生成器與鑑別器的平衡,避免模式崩塌(mode collapse)。
#### > 未來方向
* 條件式 GAN(Conditional GAN)。
* 半監督學習應用。
* 改進生成器與鑑別器協調的訓練方法。
* 加速收斂與改進隨機取樣策略。