本文主要是列舉幾種GAN中的loss函數形式以及部分相關知識。
1. GAN的多種形式
1.1 GAN 14.01
原始GAN論文[1]中指出,生成器G和判別器D在進行零和博弈,最終達到納什均衡。可以用下面的值函數(value function)表示:
GminDmaxV(G,D)=GminDmaxEx∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))]
其中pdata表示真實數據分佈,x表示該分佈中的樣本,pz表示噪聲變量z的先驗分佈。
在求解時分別對生成器和判別器計算loss,vanilla GAN中由於生成器loss不同而有兩種形式:
1) Minimax GAN
判別器loss和生成器loss分別爲:
DmaxL(D)=Ex∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))]GminL(G)=Ez∼pz[log(1−D(G(z)))]
2) Non-saturating GAN
僅是更改了生成器loss形式,在[2]中3.2一節有更詳細的解釋。該生成器loss在訓練初期會有較大的梯度,使得生成器能較快開始更新。
DmaxL(D)=Ex∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))]GminL(G)=−Ez∼pz[logD(G(z))]
兩種不同生成器loss的示意圖[2]:
1.2 BiGAN 16.05
BiGAN[12]全稱 Bidirectional Generative Adversarial Networks,意爲雙向GAN。文中作者結合編解碼器和判別器的結構,設計出了雙向GAN,這裏的雙向指的是一個方向從編碼器到解碼器,另一個方向是從解碼器到編碼器。具體組織形式如下圖:
說明:
- G:生成器,可視爲解碼器;D:判別器;E:編碼器
- x:真實樣本;z:潛在表徵(latent representation)
- E(x):x編碼到潛在空間的表徵
- G(z):由z生成出的數據
- y:表示分類結果。若來自真實樣本,y=1;若是生成樣本,y=0
上圖描述的過程是:
- 輸入真實圖像x,經過E編碼後得到E(x)。
- 從某個分佈中採樣隨機噪聲z,經過G解碼得到G(z)。
- 經過上述2步後,得到兩個樣本對(x,E(x))和(G(z),z),將這兩個樣本對輸入到判別器D,讓D判斷是由編碼器E還是生成器G產生的。
最終目的就是讓判別器D區分不出是從編碼器E(Real)還是從生成器G(Fake)產生的。
優化過程如[13]中圖示:
注:上圖中的De就是前文圖示中的G。
BiGAN的目標函數如下所示:
該目標函數的含義就跟vanilla GAN中一樣,要是來自真實數據,判別器D輸出就越大;若是來自生成數據,D的輸出就越小。
最優的編碼器E和生成器G是想要達到:
x=G(E(x))z=E(G(z))
BiGAN讓GAN有了表徵學習能力,因爲BiGAN裏有從數據空間向潛在空間的映射,這使得可以學習到一些有意義的特徵,捕捉到高層語義。
1.3 LSGAN 16.11
判別器loss和生成器loss爲:
DminL(D)=21Ex∼pdata[(D(x)−1)2]+21Ez∼pz[(D(G(z)))2]GminL(G)=21Ez∼pz[(D(G(z))−1)2]
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的值函數爲:
GminD∈1−LipschtizmaxEx∼pdata[D(x)]−Ez∼pz[D(G(z))]
判別器loss和生成器loss爲:
DmaxL(D)=Ex∼pdata[D(x)]−Ez∼pz[D(G(z))]GminL(G)=−Ez∼pz[D(G(z))]
WGAN爲了讓D滿足 1−Lipschtiz 連續,引入weight clipping,把神經網絡的參數限制在某個範圍[−c,c]內,
w:=clip_by_value(w,−0.01,0.01)
1.5 WGAN-GP 17.04
WGAN-GP[7]改進了讓D滿足1−Lipschtiz 連續的條件,將weight clipping換成了Gradient Penalty。
有下面等價形式[8]:
D∈1−Lipschtiz⇔∥∇xD(x)∥2≤1for all x
上式意思是:D(x)對所有x求梯度,所有梯度的2-範數都小於等於1即說明D是1−Lipschtiz 連續。
但是對所有x進行計算時不現實的,x的數據空間很大,不可能遍歷到所有x,爲此WGAN-GP中選擇了x∼ppenalty來計算。這個ppenalty是指真實分佈和生成分佈間的區域,也就是說選擇一個真實樣本xr和一個生成樣本xg,兩個樣本間的連線上選擇一個樣本xp,即xp=αxr+(1−α)xg, 0≤α≤1。這些樣本構成了ppenalty。如下圖所示:
WGAN-GP的目標函數:
GminDmaxV(G,D)=Ex∼pdata[D(x)]−Ez∼pz[D(G(z))]+λEx^∼ppenalty[(∥∇x^D(x^)∥2−1)2]
判別器loss和生成器loss爲:
DmaxL(D)=Ex∼pdata[D(x)]−Ez∼pz[D(G(z))]+λEx^∼ppenalty[(∥∇x^D(x^)∥2−1)2]GminL(G)=−Ez∼pz[D(G(z))]
1.6 Geometric GAN 17.05
Geometric GAN[9]利用了SVM中hinge loss思想,對生成器loss和判別器loss做出了相應改變。
判別器loss和生成器loss爲:
DminL(D)=Ex∼pdata[max(0,1−D(x))]+Ez∼pz[max(0,1+D(G(z)))]GminL(G)=−Ez∼pz[D(G(z))]
2. 相關知識
2.1 Gradient Penalty
在1.5節中有說到在判別器loss上施加gradient penalty,起到正則化的作用,也使GAN能具有某些性質。
[10]中提出了兩種 gradient penalty方法:
說明:上圖中pD(x)表示真實樣本分佈,pθ(x)表示生成樣本分佈。
在[11]中將上圖中R1正則化項稱爲0-GP-sample,WGAN-GP中的正則化項稱爲1-GP,同時提出了0-GP方法。引用[11]中的圖表:
說明:上圖中的x指的是真實樣本,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講義