EB-GAN系(Energy-based GAN)
學習總結於國立臺灣大學 :李宏毅老師
EB-GAN: Energy-based Generative Adversarial Network
MA-GAN:MAGAN: Margin Adaptation for Generative Adversarial Networks
LS-GAN: Loss-Sensitive Generative Adversarial Networks on Lipschitz Densities
BE-GAN: BEGAN: Boundary Equilibrium Generative Adversarial Networks
首先回顧GAN的工作:
Discriminator引導Generator使其分布趨於原始數據的分布。
1. Evaluation Function
我們想找到一個評估函數F(x), 輸入為x, 輸出為一個實數F(x),表示這個輸入“有多好”:
例如如果是一合理的圖片那麽F(x)值較大,反之較小。那麽我們就可以根據F(x)來產生圖片。那怎麽找這個F(x)呢?
例如下圖將高維的圖片空間視為一維的點,那麽真實的數據對應的函數值就很大:
但這樣有個問題:real data可以是你數據庫中所有的圖片,然而不是real data的圖片你無法窮舉啊。所以引入:
Structured Perceptron:
F為兩者的內積
以下為叠代算法:
對於每個樣本對,算法要找一個可以使F值最大的y,如果這個y和原來樣本中的y不同則更新w。目的就是為了:
在這個過程中找令F最大的y值這一過程是困難的。那回頭看看GAN是怎麽做的?
generator是一種尋找negative examples的很好的方式:
EBGAN
特點:
- 將Discriminator視作一個energy function(negative evaluation function),即這個函數值越小代表data越真實。
- 利用自編碼器AE作為discriminator(energy function)。
- 可以從ImageNet數據集中生成256*256的圖片。
EBGAN的generator與其他gan網絡都一樣,不同的是其discriminator是一個AE。那我們知道discriminator都是要輸出一個scalar,而AE的輸入輸出都是一張圖片啊,那麽EBGAN就是將discriminator的輸入輸出求一個rescontruction error,那這個error就是discriminator的輸出,也即所說的energy。
我們希望對於真實data的重建誤差小,即energy小,即discriminator的輸出小,而同時希望由generaor生成的圖片的energy小。這與之前的gan的判別器希望真圖輸出大,假圖大正好相反。
那麽EB-GAN的損失函數如下:
Discriminator:
Generator:
那麽D的損失函數中要最小化 -D(G(z)),就是最大化D(G(z)), 也就是要擡高下圖中的藍色點對應的曲線,但是如果沒有margin的約束,可以無限制的擡高,所以我們需要一個m,即margin,就是當擡高到m這個距離後就沒有懲罰了,所以此時loss就將不再忙著擡高,而是去將real對應的曲線也即D(x)拉小。generator做的事情就很好理解了,因為real對應的energy是小的,所以希望生成的圖片的energy也是小的。
More about EBGAN
Pulling-away 用於訓練生成器,希望它可以生成多樣性的output。 具體來說對於一個batch中的樣本 xi 和 xj ,我們將其帶入discriminator的編碼器得到編碼後的結果 ei 和 ej ,然後比較其余弦相似度,希望這個相似性越小越好。
這個auto-encoder不僅僅要最小化真實圖片的reconstruction error,而且要給假圖以較大的如reconsturction error。
Margin Adaptation GAN
上圖紅、綠線分別表示EBGAN中m取值為70和30的情況。橫軸為叠代次數,縱軸為energy取對數。左圖為真圖energy,右圖為假圖energy。右圖中上下兩條黑線分別為m=log70和m=log30結果。Discriminator希望假圖的energy高,而從右圖看出EBGAN確實做到了這件事,使得假圖的energy在黑線的上下遊走。然後觀察左圖在前面幾個epoch中energy並沒有下降太多,MAGAN中的做法是m為一個浮動的值,即margin設置越來越小,即隨著訓練使generate的圖片可以有較小的energy,從上圖中可看到不論是真圖還是假圖,其energy都是在不斷下降的。
Loss-sensitive GAN
LSGAN使得generator關註於提升遠離真實圖片的data。 假設D(x)為energy function。Discriminator要最小化下面的式子:
希望給真實的data有較小的energy(D(x)),而fake的data是最小化上式第二項,怎麽理解呢?
我們希望真圖的energy很小,而對於假圖來說希望它們的energy大過一個margin就好,如果真圖與假圖的差異比較大(可以用hidden layer來量相似度),就將假圖的energy頂的高一些。如果假圖與真圖很接近了,就不需要將其energy頂的很高。
BE GAN
Discriminator也是AE結構。
最開始Kt 為0,machine只想把真圖的energy下降,那什麽時候想把假圖的energy拉高呢?即當的時候,γ是一個超參數。就是說當假圖的energy / 真圖的energy 小於γ時,Discriminator才想要將假圖的energy變大。所以不會一直考慮假圖的reconstruction error,而是當假圖的reconstruction error太小的時候,discriminator才考慮將假圖的reconstruction error變大。γ調整如下:
EB-GAN系(Energy-based GAN)