【GAN】若干常見GAN中的Loss及部分知識

本文主要是列舉幾種GAN中的loss函數形式以及部分相關知識。

1. GAN的多種形式

1.1 GAN 14.01

原始GAN論文[1]中指出,生成器GG和判別器DD在進行零和博弈,最終達到納什均衡。可以用下面的值函數(value function)表示:
minGmaxDV(G,D)=minGmaxDExpdata[logD(x)]+Ezpz[log(1D(G(z)))] \min_{G} \max_{D} V(G, D) = \min_{G} \max_{D} \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_{z}}[\log (1-D(G(z)))]
其中pdatap_{data}表示真實數據分佈,xx表示該分佈中的樣本,pzp_{z}表示噪聲變量zz的先驗分佈。
在求解時分別對生成器和判別器計算loss,vanilla GAN中由於生成器loss不同而有兩種形式:

1) Minimax GAN

判別器loss和生成器loss分別爲:
maxDL(D)=Expdata[logD(x)]+Ezpz[log(1D(G(z)))]minGL(G)=Ezpz[log(1D(G(z)))]\begin{aligned} &\max_{D} L(D) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_{z}}[\log (1-D(G(z)))] \\ &\min_{G} L(G) = \mathbb{E}_{z \sim p_{z}}[\log (1-D(G(z)))] \end{aligned}

2) Non-saturating GAN

僅是更改了生成器loss形式,在[2]中3.2一節有更詳細的解釋。該生成器loss在訓練初期會有較大的梯度,使得生成器能較快開始更新。
maxDL(D)=Expdata[logD(x)]+Ezpz[log(1D(G(z)))]minGL(G)=Ezpz[logD(G(z))]\begin{aligned} &\max_{D} L(D) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_{z}}[\log (1-D(G(z)))] \\ &\min_{G} L(G) = -\mathbb{E}_{z \sim p_{z}}[\log D(G(z))] \end{aligned}
兩種不同生成器loss的示意圖[2]:
在這裏插入圖片描述

1.2 BiGAN 16.05

BiGAN[12]全稱 Bidirectional Generative Adversarial Networks,意爲雙向GAN。文中作者結合編解碼器和判別器的結構,設計出了雙向GAN,這裏的雙向指的是一個方向從編碼器到解碼器,另一個方向是從解碼器到編碼器。具體組織形式如下圖:
在這裏插入圖片描述
說明:

  • GG:生成器,可視爲解碼器;DD:判別器;EE:編碼器
  • x\textbf{x}:真實樣本;z\textbf{z}:潛在表徵(latent representation)
  • E(x)E(\textbf{x})x\textbf{x}編碼到潛在空間的表徵
  • G(z)G(\textbf{z}):由z\textbf{z}生成出的數據
  • yy:表示分類結果。若來自真實樣本,y=1y=1;若是生成樣本,y=0y=0

上圖描述的過程是:

  1. 輸入真實圖像x\textbf{x},經過EE編碼後得到E(x)E(\textbf{x})
  2. 從某個分佈中採樣隨機噪聲z\textbf{z},經過GG解碼得到G(z)G(\textbf{z})
  3. 經過上述2步後,得到兩個樣本對(x,E(x))(\textbf{x},E(\textbf{x}))(G(z),z)(G(\textbf{z}),\textbf{z}),將這兩個樣本對輸入到判別器DD,讓DD判斷是由編碼器EE還是生成器GG產生的。

最終目的就是讓判別器DD區分不出是從編碼器EE(Real)還是從生成器GG(Fake)產生的。

優化過程如[13]中圖示:
在這裏插入圖片描述
注:上圖中的DeDe就是前文圖示中的GG

BiGAN的目標函數如下所示:
在這裏插入圖片描述
該目標函數的含義就跟vanilla GAN中一樣,要是來自真實數據,判別器DD輸出就越大;若是來自生成數據,DD的輸出就越小。

最優的編碼器EE和生成器GG是想要達到:
x=G(E(x))z=E(G(z))\begin{aligned} &\textbf{x} = G(E(\textbf{x})) \\ &\textbf{z}= E(G(\textbf{z})) \end{aligned}
BiGAN讓GAN有了表徵學習能力,因爲BiGAN裏有從數據空間向潛在空間的映射,這使得可以學習到一些有意義的特徵,捕捉到高層語義。

1.3 LSGAN 16.11

判別器loss和生成器loss爲:
minDL(D)=12Expdata[(D(x)1)2]+12Ezpz[(D(G(z)))2]minGL(G)=12Ezpz[(D(G(z))1)2]\begin{aligned} &\min_{D} L(D) = \frac{1}{2}\mathbb{E}_{x \sim p_{data}}[(D(x)-1)^2] + \frac{1}{2}\mathbb{E}_{z \sim p_{z}}[(D(G(z)))^2] \\ &\min_{G} L(G) = \frac{1}{2}\mathbb{E}_{z \sim p_{z}}[(D(G(z))-1)^2] \end{aligned}

1.4 WGAN 17.01

WGAN[4, 5]是利用了Wasserstein distance(也叫Earth Mover’s Distance)來度量真實分佈和生成分佈間的距離,目的就是解決vanilla GAN存在的問題[6]

在原始GAN的(近似)最優判別器下,第一種生成器loss面臨梯度消失問題,第二種生成器loss面臨優化目標荒謬、梯度不穩定、對多樣性與準確性懲罰不平衡導致mode collapse這幾個問題。

這裏的“第一種生成器loss”指Minimax GAN中的,“第二種生成器loss”值Non-saturating GAN中的。
WGAN的值函數爲:
minGmaxD1LipschtizExpdata[D(x)]Ezpz[D(G(z))] \min_{G} \max_{D \in 1-Lipschtiz}\mathbb{E}_{x \sim p_{data}}[D(x)] - \mathbb{E}_{z \sim p_{z}}[D(G(z))]
判別器loss和生成器loss爲:
maxDL(D)=Expdata[D(x)]Ezpz[D(G(z))]minGL(G)=Ezpz[D(G(z))]\begin{aligned} &\max_{D} L(D) = \mathbb{E}_{x \sim p_{data}}[D(x)] - \mathbb{E}_{z \sim p_{z}}[D(G(z))] \\ &\min_{G} L(G) = -\mathbb{E}_{z \sim p_{z}}[D(G(z))] \end{aligned}

WGAN爲了讓DD滿足 1Lipschtiz1-Lipschtiz 連續,引入weight clipping,把神經網絡的參數限制在某個範圍[c,c][-c, c]內,
w:=clip_by_value(w,0.01,0.01) w :=clip\_by\_value(w, -0.01, 0.01)

1.5 WGAN-GP 17.04

WGAN-GP[7]改進了讓DD滿足1Lipschtiz1-Lipschtiz 連續的條件,將weight clipping換成了Gradient Penalty
有下面等價形式[8]:
D1LipschtizxD(x)21for all x D \in 1-Lipschtiz \Leftrightarrow \Vert \nabla_xD(x) \Vert_{2} \leq 1\quad for\ all\ x
上式意思是:D(x)D(x)對所有xx求梯度,所有梯度的2-範數都小於等於1即說明DD1Lipschtiz1-Lipschtiz 連續。
但是對所有xx進行計算時不現實的,xx的數據空間很大,不可能遍歷到所有xx,爲此WGAN-GP中選擇了xppenaltyx\sim p_{penalty}來計算。這個ppenaltyp_{penalty}是指真實分佈和生成分佈間的區域,也就是說選擇一個真實樣本xrx_r和一個生成樣本xgx_g,兩個樣本間的連線上選擇一個樣本xpx_p,即xp=αxr+(1α)xg, 0α1x_p=\alpha x_r + (1-\alpha)x_g,\ 0 \leq \alpha \leq 1。這些樣本構成了ppenaltyp_{penalty}。如下圖所示:
在這裏插入圖片描述

WGAN-GP的目標函數:
minGmaxDV(G,D)=Expdata[D(x)]Ezpz[D(G(z))]+λEx^ppenalty[(x^D(x^)21)2] \min_{G} \max_{D}V(G, D)=\mathbb{E}_{x \sim p_{data}}[D(x)] - \mathbb{E}_{z \sim p_{z}}[D(G(z))]+\lambda \mathbb{E}_{\hat x \sim p_{penalty}}[(\Vert \nabla_{\hat x}D(\hat x) \Vert_{2}-1)^2]
判別器loss和生成器loss爲:
maxDL(D)=Expdata[D(x)]Ezpz[D(G(z))]+λEx^ppenalty[(x^D(x^)21)2]minGL(G)=Ezpz[D(G(z))]\begin{aligned} &\max_{D} L(D) = \mathbb{E}_{x \sim p_{data}}[D(x)] - \mathbb{E}_{z \sim p_{z}}[D(G(z))] +\lambda \mathbb{E}_{\hat x \sim p_{penalty}}[(\Vert \nabla_{\hat x}D(\hat x) \Vert_{2}-1)^2] \\ &\min_{G} L(G) = -\mathbb{E}_{z \sim p_{z}}[D(G(z))] \end{aligned}

1.6 Geometric GAN 17.05

Geometric GAN[9]利用了SVM中hinge loss思想,對生成器loss和判別器loss做出了相應改變。
判別器loss和生成器loss爲:
minDL(D)=Expdata[max(0,1D(x))]+Ezpz[max(0,1+D(G(z)))]minGL(G)=Ezpz[D(G(z))]\begin{aligned} &\min_{D} L(D) = \mathbb{E}_{x \sim p_{data}}[max (0, 1- D(x))] + \mathbb{E}_{z \sim p_z}[max(0, 1+D(G(z)))] \\ &\min_{G} L(G) = -\mathbb{E}_{z \sim p_z}[D(G(z))] \end{aligned}


2. 相關知識

2.1 Gradient Penalty

在1.5節中有說到在判別器loss上施加gradient penalty,起到正則化的作用,也使GAN能具有某些性質。
[10]中提出了兩種 gradient penalty方法:
在這裏插入圖片描述
說明:上圖中pD(x)p_{D}(x)表示真實樣本分佈,pθ(x)p_{\theta}(x)表示生成樣本分佈。

在[11]中將上圖中R1R_1正則化項稱爲0-GP-sample,WGAN-GP中的正則化項稱爲1-GP,同時提出了0-GP方法。引用[11]中的圖表:
在這裏插入圖片描述
說明:上圖中的x\textbf{\textit{x}}指的是真實樣本,y\textbf{\textit{y}}指的是生成樣本。

參考文獻

[1] Generative Adversarial Nets
[2] NIPS 2016 tutorial: Generative adversarial networks
[3] Least Squares Generative Adversarial Networks
[4] Towards principled methods for training generative adversarial networks
[5] Wasserstein Generative Adversarial Networks
[6] 令人拍案叫絕的Wasserstein GAN(推薦閱讀一下)
[7] Improved Training of Wasserstein GANs
[8] 李宏毅WGAN講義
[9] Geometric GAN
[10] Which Training Methods for GANs do actually Converge?
[11] Improving Generalization and Stability of Generative Adversarial Networks
[12] Adversarial Feature Learning
[13] 李宏毅InfoGAN, VAE-GAN, BiGAN講義

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章