1. 程式人生 > >Generative Adversarial Network (GAN) 生成對抗網路

Generative Adversarial Network (GAN) 生成對抗網路

Part One. Introduction of GAN

The Structure of GAN

其中可以看到GAN中有兩個最關鍵的結構就是generator(生成器)和discriminator(判別器)。生成器是為了生成接近真實資料分佈的虛假樣本,判別器是為了分辨樣本是來自生成器還是真實資料。

整個網路執行流程如下:從隱空間隨機生成隱變數,生成器通過計算將隱變數對映至真實資料空間。判別器判斷樣本是來自真實分佈還是生成器得到的分佈,並用判別結果做梯度下降優化。

Loss Function of Generator and Discriminator

 

對於生成器的Loss

,我們可以變形一下。不影響結果。

那麼整個gan的優化函式可以看做是V(G,D)

 Training of GAN

 

 

 

 Discriminator Update

 

 

 

 

Generator Update 

Part Two. Existing problems of GAN

Unstable Gradient

D(x)接近於0的時候,這個函式十分平滑,梯度非常的小。這就會導致,在訓練的初期,G想要騙過D,變化十分的緩慢,而上面的函式,趨勢和下面的是一樣的,都是遞減的。但是它的優勢是在D(x)接近0的時候,梯度很大,有利於訓練,在

D(x)越來越大之後,梯度減小,這也很符合實際,在初期應該訓練速度更快,到後期速度減慢。

 Gradient Vanishing

In theory, one would expect therefore that we would first train the discriminator as close as we can to optimality (so the cost function better approximates the JSD), and then do gradient steps, alternating these two things. However, this doesn’t work. In practice, as the discriminator gets better, the updates to the generator get consistently worse.

我們會希望如果兩個分佈之間越接近它們的JS散度越小,我們通過優化JS散度就能將“pg拉向”pdata,最終以假亂真。這個希望在兩個分佈有所重疊的時候是成立的,但是如果兩個分佈完全沒有重疊的部分,或者它們重疊的部分可忽略(下面解釋什麼叫可忽略),它們的JS散度是多少呢?

在(近似)最優判別器下,最小化生成器的loss等價於最小化pgpdata之間的JS散度,而由於pgpdata幾乎不可能有不可忽略的重疊,所以無論它們相距多遠JS散度都是常數,最終導致生成器的梯度(近似)為0,梯度消失,生成器無法訓練。

pdatapg的支撐集(support)是高維空間中的低維流形(manifold)時,重疊部分測度(measure)為0的概率為1

There is no overlapping between ????? and ??or the overlapping could be neglected !

原因是GAN中的生成器一般是從某個低維(比如100維)的隨機分佈中取樣出一個編碼向量,再經過一個神經網路生成出一個高維樣本(比如64x64的圖片就有4096維)。當生成器的引數固定時,生成樣本的概率分佈雖然是定義在4096維的空間上,但它本身所有可能產生的變化已經被那個100維的隨機分佈限定了,其本質維度就是100,再考慮到神經網路帶來的對映降維,最終可能比100還小,所以生成樣本分佈的支撐集就在4096維空間中構成一個最多100維的低維流形,“撐不滿”整個高維空間。

“撐不滿”就會導致真實分佈與生成分佈難以“碰到面”,這很容易在二維空間中理解:一方面,二維平面中隨機取兩條曲線,它們之間剛好存在重疊線段的概率為0;另一方面,雖然它們很大可能會存在交叉點,但是相比於兩條曲線而言,交叉點比曲線低一個維度,長度(測度)為0,可忽略。三維空間中也是類似的,隨機取兩個曲面,它們之間最多就是比較有可能存在交叉線,但是交叉線比曲面低一個維度,面積(測度)是0,可忽略。從低維空間拓展到高維空間,就有了如下邏輯:因為一開始生成器隨機初始化,所以幾乎不可能與有什麼關聯,所以它們的支撐集之間的重疊部分要麼不存在,要麼就比和的最小維度還要低至少一個維度,故而測度為0。所謂“重疊部分測度為0”,就是上文所言“不重疊或者重疊部分可忽略”的意思。

Lower dimension manifold

 Mode Collapse

KL散度不是一個對稱的衡量

這一放一打之下,生成器寧可多生成一些重複但是很“安全”的樣本,也不願意去生成 多樣性的樣本,因為那樣一不小心就會產生第二種錯誤,得不償失。這種現象就是 大家常說的collapse mode 

Part Three. GAN Zoo

Heat of GAN

 

GAN Zoo 

CGAN

論文參考:Mirza M, Osindero S. Conditional generative adversarial nets[J]. arXiv preprint arXiv:1411.1784, 2014.

 

DCGAN

參考文獻:Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks[J]. arXiv preprint arXiv:1511.06434, 2015.