論文信息
論文標題:Generative Adversarial Networks
論文作者:Ian J. Goodfellow, Jean Pouget-Abadie ......
論文來源:2014, NIPS
論文地址:download
論文代碼:download
1 Introduction
本文提出 GAN 框架, 通過一個對抗來估計生成模型。該框架同時訓練兩個模型:
-
- 生成模型(Generative model)$G$ 用於捕獲數據分布;
- 判別模型(Discriminative model)$D$ 用於識別真實數據;
$G$ 主要做的是:使得虛假樣本盡可能的欺騙判別模型 $D$ ,使其辨別不出來。
$D$ 主要做的是:將生成模型 $G$ 生成的虛假樣本與真實樣本識別出來。
該過程可以總結為:This framework corresponds to a minimax two-player game(minmax 雙人博弈).
監督學習方法可以分為生成方法 (generative approach) 和判別方法 (discriminative approach) 。所學到的模型分別稱為 生成模型 (generative model) 和判別模型 (discriminative model)。生成方法由數據學習聯合概率分布 $P(X, Y)$ ,然后求出條 件概率分布 $P(Y \mid X)$ 作為預測的模型,即生成模型:
$P(Y \mid X)=\frac{P(X, Y)}{P(X)}$
在機器學習領域判別模型是一種對未知數據 $y$ 與已知數據 $x$ 之間關系進行建模的方法。判別模型是一種基於概率理論的方法。已知輸入變量 $x$ ,判別模型通過構建條件概率分布 $P(y|x)$ 預測 $y $。

Generator 和 Discriminator 都是神經網絡,Generator 的數據將連接到 Discriminator 的輸入,而 Discriminator 的分類結果將通過 loss 並反向傳播給 Generator 進行權重更新。如果 Generator 訓練的很好,Discriminator 將會難以識別真假,精度開始下降。
GAN中的 Discriminator 是一個分類器,在 Discriminator 的訓練期間,Generator 沒有在訓練而僅僅是在產生負樣本。Discriminator 連接兩個 loss 函數,在 Discriminator 的訓練期間,Discriminator 忽略掉 Generator loss,僅僅使用 Discriminator loss。在 Generator 的訓練期間才會用到 Generator loss。
2 Method
定義:
-
- 數據 $x$;
- 數據 $x$ 在生成器上的數據分布 $p_g $;
- 先驗的輸入噪聲變量分布 $p_{z}(z) $;
- 噪聲變量的映射 $G\left(z ; \theta_{g}\right) $ ;
- 判別器 $D\left(x ; \theta_{d}\right)$ 輸出 $x$ 來自真實數據分布而不是 $p_{g}$ 的概率;
目標函數如下(二分類交叉熵):
$\underset {G}{\text{min }}\underset {D}{\text{max }}V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))]\quad \quad \quad (1)$
其中,
-
- $x$ 是真實數據;
- $D(X)$ 表示將 $x$ 預測為真實數據的概率(分數);
- $G(z)$ 表示生成器生成的數據;
- $D(G(z))$ 表示將生成數據預測為真實數據的概率(分數);
-
判別分布D(藍色、虛線)
-
數據生成分布 $p_x$(黑色,虛線)
-
噪聲生成分布 $P_{g}(G)$(G 綠色,實線)
-
下面的水平線為均勻采樣 $z$ 的區域,上面的水平線為 $x$ 的部分區域。
-
朝上的箭頭顯示映射 $x=G(z)$ 如何將非均勻分布 $p_{g}$ 作用在轉換后的樣本上。
-
$G$ 在 $p_{g}$ 高密度區域收縮,且在 $p_{g}$ 的低密度區域擴散。
-
Figure1 (a) 考慮一個接近收斂的對抗的模型對: $p_{g}$ 與 $p_{\text {data }}$ 分布相似,且 $D$ 是個部分准確的分類器【密度中心部分可以大致識別出來】。(可以發現$p_{g}$ 與 $p_{\text {data }}$ 的密度中心不一樣,判別器 $D$ 在 $p_{data}$ 的密度中心值高,在 $p_{g}$的密度中心值低。(紅色區域相交部分))
-
Figure1 (b) 在算法的內循環中,訓練 $D$ 來判別數據中的樣本,收斂到:$ D^{*}(X)=\frac{p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{g}(x)} $。
-
Figure1 (c) 在 G 更新后, $D$ 的梯度引導 $G(z) $ 與真實數據分布越發接近。
-
Figure1 (d) 經過若干步訓練后,如果 $G$ 和 $D$ 性能足夠,它們接近某個穩定點並都無法繼續提高性能,因為此時 $p_{g}=p_{\text {data }}$ 。判別器將無法區分訓練數據分布和生成數據分布,即 $D(x)=\frac{1}{2}$ 。
3 Theoretical Results
算法:
3.1 Global Optimality of $p_g = p_{data}$
3.1.1 最優判別器
Proposition 1. For $G$ fixed, the optimal discriminator $D$ is
${\large D_{G}^{*}(\boldsymbol{x})=\frac{p_{\text {data }}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})}} \quad \quad \quad (2)$
證明:
首先考慮將生成器 $G$ 固定, 優化最優判別器 $D$。此時最大化 $V (G, D)=V (D)$ :
$\begin{aligned}V(G, D) =V (D)&=\int_{\boldsymbol{x}} p_{\text {data }}(\boldsymbol{x}) \log (D(\boldsymbol{x})) d x+\int_{\boldsymbol{z}} p_{\boldsymbol{z}}(\boldsymbol{z}) \log (1-D(g(\boldsymbol{z}))) d z \\&=\int_{\boldsymbol{x}} p_{\text {data }}(\boldsymbol{x}) \log (D(\boldsymbol{x}))+p_{g}(\boldsymbol{x}) \log (1-D(\boldsymbol{x})) d x\end{aligned}\quad \quad \quad (3)$
令 $p_{data}(x)$ 為 $a$,$p_{g}(x)$ 為 $b$,$D(x)$ 為 $y$。 對於任意的 $(a, b) \in \mathbb{R}^{2} \backslash\{0,0\} $,函數 $y \rightarrow a \log (y)+b \log (1-y) $ 在 $ \frac{a}{a+b}\in [0,1] $ 取最值。
請注意,$D$ 可以被解釋為條件概率 $P(Y=y \mid \boldsymbol{x})$ 的最大對數似然估計。這里,$Y$ 代表着 $\boldsymbol{x}$ 來自 $p_{\text {data }}$ (with $y=1$ ) 或者來自 $p_{g}$ (with $y=0 $ )。
Eq. 1 可以轉換為:
$\begin{aligned}C(G) &=\max _{D} V(G, D) \\&=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log D_{G}^{*}(\boldsymbol{x})\right]+\mathbb{E}_{\boldsymbol{z} \sim p_{z}}\left[\log \left(1-D_{G}^{*}(G(\boldsymbol{z}))\right)\right] \\&=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log D_{G}^{*}(\boldsymbol{x})\right]+\mathbb{E}_{\boldsymbol{x} \sim p_{g}}\left[\log \left(1-D_{G}^{*}(\boldsymbol{x})\right)\right] \\&=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log \frac{p_{\text {data }}(\boldsymbol{x})}{P_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})}\right]+\mathbb{E}_{\boldsymbol{x} \sim p_{g}}\left[\log \frac{p_{g}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})}\right]\end{aligned}\quad \quad \quad (4)$
3.1.2 最優生成器
證明:
當 $p_{g}=p_{\text {data }}$ 時,最優判別器
${\large D_{G}^{*}(\boldsymbol{x}) =\frac{p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{g}(x)}=\frac{1}{2}} $
此時目標函數 $V (G, D)=V (G)$
$ \begin{array}{l} V(G,D)&=V(G)\\&=\int_{x} p_{\text {data }}(x) \log \frac{p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{g}(x)}+p_{g}(x) \log \left(1-\frac{p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{g}(x)}\right) d x\end{array} $
利用最優判別器 ${\large D_{G}^{*}(\boldsymbol{x}) =\frac{p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{g}(x)}=\frac{1}{2}} $,對 $V (G)$ 做變換得:
$\begin{array}{l} V(G,D)&=V(G)\\&=-\log 2 \int_{x} p_{g}(x)+p_{\text {data }}(x) d x\\&\quad+\int_{x} p_{\text {data }}(x)\left(\log 2+\log \frac{p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{g}(x)}\right)+p_{g}(x)\left(\log 2+\log \frac{p_{g}(x)}{p_{\text {data }}(x)+p_{g}(x)}\right) d x \end{array}$
其中:
$\begin{array}{l} -\log 2 \int_{x} p_{g}(x)+p_{data }(x) d x\\=-2 \log 2\int_{x} p_{data}(x)dx\\=-\log4\end{array}$
$\begin{array}{l}\log 2+\log \frac{p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{g}(x)}&=\log \frac{2 p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{g}(x)}\\&=\log \frac{p_{\text {data }}(x)}{\left(p_{\text {data }}(x)+p_{g}(x)\right) / 2}\end{array} $
$\begin{array}{l}\log 2+\log \frac{p_{g }(x)}{p_{\text {data }}(x)+p_{g}(x)}&=\log \frac{2 p_{g }(x)}{p_{\text {data }}(x)+p_{g}(x)}\\&=\log \frac{p_{g }(x)}{\left(p_{\text {data }}(x)+p_{g}(x)\right) / 2}\end{array} $
所以,最終結果為:
$\begin{array}{l} V(G,D)&=V(G)\\&=-\log 4+D_{K L}\left(p_{\text {data }} \| \frac{p_{\text {data }}+p_{g}}{2}\right)+\left(p_{g} \| \frac{p_{\text {data }}+p_{g}}{2}\right)\end{array}\quad \quad \quad (5)$
由於KL散度的非負性,得 $C(G)$ 的最小值為 $−\log4 $。
Tips
相對熵 (Relative Entropy) 也稱 KL 散度。在機器學習中,$P$ 往往用來表示樣本的真實分布,$Q$ 用來表示模型所預測的分布,那么KL散度就可以計算兩個分布的差異,也就是Loss損失值。
$D_{K L}(P \| Q)=E_{p(x)}\left[\log \frac{p(x)}{q(x)}\right]=\int_{x} p(x) \log \frac{p(x)}{q(x)}$
- KL散度具有非負性。
- 當且僅當 $P$ , $Q$ 在離散型變量下是相同的分布時,即 $ p(x)=q(x)$ , $ D_{K L}(P \| Q)=0$ 。
- K L 散度衡量了兩個分布差異的程度,經常被視為兩種分布間的距離。
- 請注意, $D_{K L}(P \| Q) \neq D_{K L}(Q \| P)$ ,即 $K L$ 散度沒有對稱性。
從KL的散度定義式可以看出其值域范圍為 $[-\infty ,\infty]$ ,且不具有對稱性,所以這里將 Eq.5. 轉變為JS散度。
$C(G)=-\log (4)+2 \cdot J S D\left(p_{data} \| p_{g}\right)\quad \quad \quad (6)$
為什么選擇JS散度:
-
- JS散度具有非負性質
- JS散度的值域范圍在 $[0,1]$ ,$p$ 和 $q$ 分布相同的時候為 $0$,完全不同的時候為 $1$。
3.2 Convergence of Algorithm 1
Proposition 2. If $G$ and $D$ have enough capacity, and at each step of Algorithm 1, the discriminator is allowed to reach its optimum given $G $, and $p_{g}$ is updated so as to improve the criterion
$\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log D_{G}^{*}(\boldsymbol{x})\right]+\mathbb{E}_{\boldsymbol{x} \sim p_{g}}\left[\log \left(1-D_{G}^{*}(\boldsymbol{x})\right)\right]$
then $p_{g}$ converges to $p_{data }$
4 Experiments
數據集:Minist、TFD 以及 CIFAR-10。
生成器 Generator 使用的激活函數有 ReLU 和 sigmoid,判別器 Discirminator 使用的激活函數是 maxout。
Dropout 算法被用於判別器網絡的訓練。
雖然理論上可以在生成器的中間層使用 Dropout 和 其他噪聲,但這里僅在 generator network 的最底層使用噪聲輸入。
對 $G$ 生成的樣本擬合 Gaussian Parzen window,並報告該分布下的 log-likelihood,來估計 $p_{g}$ 下測試集數據的概率。高斯分布中的參數 $\sigma$ 通過驗證集的交叉驗證得到的。
Breuleux et al.引入該過程用於不同的似然難解生成模型上,結果在 Table1 中:
我們可以看到結果中方差很大,並且在高維模型中表現不好。
在 Figures 2 和 Figures 3,我們展示了訓練后從 generator net 中提取的樣本。
5 Advantages and disadvantag
優點:無需馬爾科夫鏈,僅用反向傳播來獲得梯度,學習間無需推理,且模型中可融入多種函數。
缺點:(論文中說主要為 $p_{g}(x)$ 的隱式表示 。且訓練時 $\mathrm{G}$ 和 $\mathrm{D}$ 要同步,即訓練 $\mathrm{G}$ 后,也要訓練 $\mathrm{D} $ ,且不能將 $G$ 訓練太好而不去訓練 $D$(通俗解釋就是 $G$ 訓練的太好很容易就"欺騙"了沒訓練的 $D$)。
6 Conclusions
相比起卷積神經網絡之於計算機視覺,循環神經網絡之於自然語言處理,GAN 尚且沒有一個特別適合的應用場景。主要原因是 GAN 目前還存在諸多問題。例如:
不收斂問題:GAN 是兩個神經網絡之間的博弈。試想,如果判別器提前學到了非常強的,那么生成器很容易出現梯度消失而無法繼續學習。所有 GAN 的收斂性一直是個問題,這樣也導致 GAN 在實際搭建過程中對各種超參數都非常敏感,需要精心設計才能完成一次訓練任務;
崩潰問題:GAN 模型被定義為一個極小極大問題,可以說,GAN 沒有一個清晰的目標函數。這樣會非常容易導致,生成器在學習的過程中開始退化,總是生成相同的樣本點,而這也進一步導致判別器總是被喂給相同的樣本點而無法繼續學習,整個模型崩潰;
模型過於自由: 理論上,我們希望 GAN 能夠模擬出任意的真實數據分布,但事實上,由於我們沒有對模型進行事先建模,再加上「真實分布與生成分布的樣本空間並不完全重合」是一個極大概率事件。那么,對於較大的圖片,如果像素一旦過多,GAN 就會變得越來越不可控,訓練難度非常大。
參考:
修改歷史
2022-02-03 創建文章
2022-06-07 修改文章錯誤內容