GAN及其變體C_GAN,infoGAN,AC_GAN,DC_GAN(一)

當時害怕篇幅過大,拆分兩部分編寫,下一篇文章見:GAN及其變體DCGAN, CGAN,infoGAN,BiGAN,ACGAN,WGAN,DualGAN(二)

在介紹GAN之前,我們先了解一些什麼是生成模型(Generative Model)和判別模型(Discriminative Model)。

  • 生成模型:學習聯合概率分佈P(X,Y), 即特徵X和標籤Y共同出現的概率,然後求條件概率分佈P(Y|X)=P(X,Y)/P(X),即爲生成模型。簡言之,先通過學習先驗分佈P(x, y)來推導後驗分佈P(Y|X)
  • 判別模型:學習條件概率分佈P(Y|X),即在特徵X出現的條件下標記Y出現的概率,簡言之,直接學習後驗分佈P(Y|X)

GAN生成對抗網絡

論文:Generative Adversarial Nets(2014)

GAN包含兩個部分,即生成器generative和判別器discriminative。以生成圖片爲例,生成器主要用於學習真實圖像分佈從而讓自身生成的圖像更加真實,使得判別器分辨不出生成的數據是否是真實數據。判別器則需要對接受到的圖片進行真假判別。整個過程可以看作是生成器和判別器的博弈,隨着時間的推移,最終兩個網絡達到一個動態均衡:生成器生成的圖像近似於真實圖像分佈,而判別器對給定圖像的判別概率約爲0.5,相當於盲猜。

假設真實數據data分佈爲P_{data},生成器G學習到的數據分佈爲P_{g},z爲隨機噪聲,P_{z}爲噪聲分佈,G\left ( z;\theta _{g} \right )爲生成映射函數,將這個隨機噪聲轉化爲數據x,D\left ( x;\theta _{d} \right )爲判別映射函數,輸出是判別x來自真實數據data而不是生成數據的概率。訓練判別器D使得判別概率最大化,同時,訓練生成器G最小化log\left ( 1-D\left ( G\left ( z \right ) \right ) \right ),這個優化過程可以被歸結於一個‘二元極小極大博弈’(two-player minimax game),目標函數被定義如下:

          \min_{G}\max_{D}V\left ( D,G \right )=\mathbb{E}_{x \sim p_{data}\left ( x \right )}\left [ logD\left ( x \right ) \right ]+\mathbb{E}_{ z \sim p_{z}\left ( z \right )}\left [ log\left ( 1 - D\left ( G\left ( z \right ) \right ) \right ) \right ] 

從判別器D的角度,D希望它自己能夠儘可能地判別出真實數據和生成數據,即使得D(x)儘可能的達,D(G(z))儘可能的小,即V(D,G)儘可能的大。從生成器G的角度來說,G希望自己生成的數據儘可能地接近於真實數據,也就是希望D(G(z))儘可能地大,D(x)儘可能的小,即V(D,G)儘可能的小。兩個模型相互對抗,最後達到全局最優。

用圖示解釋,如圖1所示,假設在訓練伊始,真實數據分佈爲圖中的黑色點線,生成樣本分佈爲途中綠色實線,判別模型分佈爲紫色虛線。圖一:開始時,判別模型不能很好地區分真實樣本和生成樣本;圖二:當固定生成模型,訓練判別模型時,可以看到這時候判別模型有所進步,能夠較好的區分真實樣本和生成樣本;圖三:固定判別模型,訓練生成模型,可以看出這時候生成模型生成的樣本的分佈與真實樣本的分佈更加接近;這樣不斷迭代,圖四:到最後達到一個平衡,生成樣本分佈和真實樣本分佈重合,判別模型的識別概率爲0.5。

圖1:GAN

C_GAN (Conditional Adversarial Net)

論文:Conditional Generative Adversarial Nets(2014)

條件生成式對抗網絡C_GAN是對原始GAN的一個擴展,生成器和判別器都增加額外信息y爲條件,y可以是任何類型的附加信息,例如類別信息或者來自其他模態的數據。 圖2中展示了一個簡單的條件生成式對抗網絡C_GAN的結構信息。在生成模型中,輸入噪聲P(z)和條件信息y聯合組成了聯合隱層表徵。對抗訓練在隱層表徵的組成方式方面相當地靈活。類似的,C_GAN則被看做是帶有條件概率的二人極大極小值博弈,目標函數被定義如下:

                                     \min_{G}\max_{D}V\left ( D,G \right )=\mathbb{E}_{x \sim p_{data}\left ( x \right )}\left [ logD\left ( x | y \right ) \right ]+\mathbb{E}_{ z \sim p_{z}\left ( z \right )}\left [ log\left ( 1 - D\left ( G\left ( z | y \right ) \right ) \right ) \right ]

圖2:CGAN結構

InfoGAN(Information  Maximizing Generative Adversarial Network)

論文:infoGAN:Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets(2016)

首先我們先介紹一些信息論的一些知識,X和Y之間的互信息(mutual information)I(X;Y)表示變量間相互依賴性的度量。依圖3所見,互信息了一看作兩個熵的差值,I\left ( X;Y \right )=H\left ( X \right ) - H\left ( X|Y \right )=H\left ( Y \right )-H\left ( Y|X \right )

如果X和Y是獨立的,那麼I(X;Y)=0。X與Y之間關聯性越大,I(X;Y)就越大

圖3:互信息

信息最大化生成對抗網絡infoGAN的提出是爲了無監督學習得到可分解的特徵表示。由於原始GAN的生成器的輸入僅僅是一個連續的噪聲向量z,沒有加任何限制,所以是在以一種高度混合的方式使用z,導致生成器無法將z的維度和數據的語義特徵聯繫起來。然而,many domains natually decompose into a set of semantically meaningful factors of variation.

基於上面的分析,在生成器的輸入中加入了隱含編碼c,現在輸入變量包含兩部分,不能壓縮的噪聲z和隱含編碼c,所以生成器記作G(z, c)。在原先的GAN中,生成器將會忽略附加的隱含編碼c,而僅僅去學習變量分佈,P_{G}\left ( x|c \right )=P_{G}\left ( x \right )。因此,作者提出infoGAN,其中info表示生成分佈G(z, c)和隱含編碼c之間的互信息,而且爲了使得x和c之間關聯密切,應當最大化I\left ( c;G\left ( z,c \right ) \right )

因此在原始GAN目標函數的基礎上,增加了正則項約束,如下:

                                              \min_{G}\max_{D}V_{I}\left ( D,G \right )=V\left ( D,G \right )-\lambda I\left ( c;G\left ( z,c \right ) \right )

實際上,因爲需要後驗P\left ( c|x \right ),互信息I\left ( c;G\left ( z,c \right ) \right )是很難直接最大化的,我們可以通過定義一個輔助的分佈Q\left ( c|x \right )來逼近P\left ( c|x \right ),從而得到P\left ( c|x \right )的變分下界。經過一系列的公式推導和證明,最後目標函數可以等價於:

                                                \min_{G,Q}\max_{D}V_{I}\left ( D,G,Q \right )=V\left ( D,G \right )-\lambda L_{I}\left ( G,Q\right )

其中L_{I}\left ( G,Q \right )=E_{c \sim P\left(c\right), x \sim G\left(z,c\right)}\left [ logQ\left(c|x\right) \right ]+H\left(c \right )

具體實現中,我們使用神經網絡來參數化輔助分佈Q。在具體實現中,Q和D共用所有的卷積層,並且在最後的全連接層輸出條件分佈Q(c|x)的參數,因此infoGAN相比於原GAN來說,僅僅增加了微不足道的計算消耗。

ACGAN(Auxiliary Classifier Generative Adversarial Networks)

論文:Conditional Image Synthesis with Auxiliary Classifier GANs (2017)

如上面介紹的CGAN,使用side information擴充原GAN,爲了能夠生成class conditional samples, 給生成器和判別器提供類別標籤(class labels);如上面介紹的infoGAN,調整判別器,使其包含一個輔助解碼網絡(auxiliary decoder network),網絡的輸出爲生成樣本隱含量的一個子集(semi-Supervised GAN中輔助網絡輸出的是訓練數據的類別標籤)。結合這兩種策略利用side information,因此ACGAN應用而生,ACGAN模型屬於class contional, 但是是使用一個輔助的解碼器來重建類別標籤。盜一個圖使得上述語言描述圖示化。

ACGAN中,生成器不僅僅包含噪聲z,還包含對應的類別標籤c \sim p_{c},生成器G使用兩者來生成樣本X_{fake}=G\left ( c,z \right ),判別器D分別對圖像的真假和類別標籤給出判別概率,所以目標方程包含兩部分,如下所示:

 判別器D訓練最大化L_{S}+L_{C},而生成器G訓練最大化L_{C}-L_{S},ACGAN學習關於z獨立於類標籤的表達。

DC_GAN(Deep Convolutional Generative Adversarial Networks)

論文:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (2016)

CNN在監督學習(supervised learning)領域取得了不俗的成就,相對地,CNN在無監督學習(unsupervised learning)領域卻沒有很大的進展,爲了填補CNN在監督學習和無監督學習之間的gap,此篇論文提出了將CNN和GAN結合的DCGAN(深度卷積生成對抗網絡),並且DCGAN在無監督學習中取得不錯的結果。

GAN的一大問題是訓練不穩定,有時候會得到沒有意義的輸出,通過對卷積GAN結構添加一些限制,可以使得卷積GAN可以保持穩定,如下所述:

  • 生成器中使用fractional-strided convolutions(deconvolutions)替代池化層,判別器中使用strided  convolutions替代池化層
  • 在生成模型和判別模型中使用batchnorm(直接將BN應用到所有層會導致樣本震盪和模型不穩定,在生成器中將BN應用帶輸出 層,在判別器中將BN應用於輸出層可避免這種現象)
  • 對於更深的架構,移除全連接隱含層
  • 在生成器中,除了輸出層使用tanh激活函數,其他層都使用ReLU激活函數
  • 在判別器中,所有層中都使用LeakyReLu激活函數
圖4:深度卷積生成對抗網絡

 如圖4所示,DCGAN的輸入是個100維的均勻分佈的向量,然後經過一系列的反捲積操作輸出64*64大小的RGB圖像。如下面三張PPT所示,DCGAN的操作恰恰與傳統的CNN的計算方向相反,CNN中使用卷積操作,則DCGAN中使用反捲積(deconvolutional/transposed-convolution)。

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