1. 簡介
首先簡要介紹一下生成模型(Generative model)與判別模型(Discriminative mode)的概念:
生成模型:對聯合概率進行建模,從統計的角度表示數據的分布情況,刻畫數據是如何生成的,收斂速度快,例如朴素貝葉斯,GDA,HMM等。
判別模型:對條件概率P(Y|X)
進行建模,不關心數據如何生成,主要是尋找不同類別之間的最優分類面,例如LR,SVM等。
判別模型在深度學習乃至機器學習領域取得了巨大成功,其本質是將樣本的特征向量映射成對應的label;而生成模型由於需要大量的先驗知識去對真實世界進行建模,且先驗分布的選擇直接影響模型的性能,因此此前人們更多關注於判別模型方法。生成式對抗網絡(Generative Adversarial Networks,GANs)是蒙特利爾大學的Goodfellow Ian於2014年提出的一種生成模型, 在之后引起了業內人士的廣泛關注與研究。
GANs中包含了兩個模型,一個是生成模型G
,另一個是判別模型D
,下面通過一個生成圖片的例子來解釋兩個模型的作用:
生成模型G
:不斷學習訓練集中真實數據的概率分布,目標是將輸入的隨機噪聲轉化為可以以假亂真的圖片(生成的圖片與訓練集中的圖片越相似越好)
判別模型D
:判斷一個圖片是否是真實的圖片,目標是將生成模型G
產生的“假”圖片與訓練集中的“真”圖片分辨開。
GANs的實現方法是讓D
和G進行博弈,訓練過程中通過相互競爭讓這兩個模型同時得到增強。由於判別模型D的存在,使得 G 在沒有大量先驗知識以及先驗分布的前提下也能很好的去學習逼近真實數據,並最終讓模型生成的數據達到以假亂真的效果(即D無法區分G生成的圖片與真實圖片,從而G和D
達到某種納什均衡)。
2. 生成對抗網絡
GANs中生成模型和判別模型的選擇沒有強制限制,在Ian的論文中,判別模型D
和生成模型G均采用多層感知機。GANs定義了一個噪聲pz(x) 作為先驗,用於學習生成模型G 在訓練數據x上的概率分布pg,G(z)表示將輸入的噪聲z映射成數據(例如生成圖片)。D(x)代表x 來自於真實數據分布pdata而不是pg
的概率。據此,優化的目標函數定義如下minmax的形式:
圖片名稱
原論文在參數的更新過程,是對D更新k次后,才對G更新1次。上式中的minmax可理解為當更新D時,需要最大化上式,而當更新G時,需要最小化上式,詳細解釋如下:
在對判別模型D
的參數進行更新時:對於來自真實分布pdata的樣本x而言,我們希望D(x)的輸出越接近於1越好,即logD(x)越大越好;對於通過噪聲z生成的數據G(z)而言,我們希望D(G(z))盡量接近於0(即D能夠區分出真假數據),因此log(1−D(G(z)))也是越大越好,所以需要maxD
。
在對生成模型G
的參數進行更新時:我們希望G(z)盡可能和真實數據一樣,即pg=pdata。因此我們希望D(G(z))盡量接近於1,即log(1−D(G(z)))越小越好,所以需要minG。需要說明的是,logD(x)是與G(z)
無關的項,在求導時直接為0。
原論文中對GANs理論上的有效性進行了分析,即當固定G
更新D時,最優解為D∗(x)=pdata(x)pdata(x)+pg(x);而在更新G時,目標函數取到全局最小值當且僅當pg=pdata。最后兩個模型博弈的結果是G可以生成以假亂真的數據G(z)。而D難以判定G生成的數據是否真實,即D(G(z))=0.5
。
下面這張圖解釋了這一博弈過程:
圖片名稱
第一階段只有判別模型D
參與。將訓練集中的樣本x作為D的輸入,輸出0-1之間的某個值,數值越大意味着樣本x為真實數據的可能性越大。在這個過程中,我們希望D盡可能使輸出的值逼近1。第二階段中,判別模型D和生成模型G都參與,首先將噪聲z輸入G,G從真實數據集里學習概率分布並產生假的樣本,然后將假的樣本輸入判別模型D,這一次D將盡可能輸入數值0。所以在這個過程中,判別模型D
相當於一個監督情況下的二分類器,數據要么歸為1,要么歸為0。
下圖給出了一個更為直觀的解釋:
圖片名稱
其中,藍色虛線為判別模型D
的分布,黑色虛線為真實數據的分布pdata,綠色實線為生成模型G學習的分布pg。下方的水平線為均勻采樣噪聲z的區域,上方的水平線為數據x的區域。朝上的箭頭表示將隨機噪聲轉化成數據,即x=G(z)。從圖(a)到圖(b)給出了一個GANs的收斂過程。圖(a)中pg與pdata存在相似性,但還未完全收斂,D是個部分准確的分類器。圖(b)中,固定G更新D,收斂到 D∗(x)=pdata(x)pdata(x)+pg(x) 。圖(c)中對G進行了1次更新,D的梯度引導G(z)移向更可能分類為真實數據的區域。圖(d)中,訓練若干步后,若G和D均有足夠的capacity,它們接近某個穩定點,此時pg=pdata。判別模型將無法區分真實數據分布和生成數據分布,即D(x)=0.5
。
論文中給出的算法流程如下:
圖片名稱
3. GANs的應用
對抗網絡的一個主要缺點是訓練過程不穩定,為了提高訓練的穩定性,文獻[2]提出了 Conditional Generative Adversarial Nets (CGAN),通過把無監督的 GAN 變成半監督或者有監督的模型,從而為 GAN 的訓練加上一點目標,其優化的目標函數為:
圖片名稱
CGAN在生成模型G
和判別模型D
的建模中均引入了條件變量 y,這里y可以是label或者其他數據形態,將y和GAN原有的輸入合並成一個向量作為CGAN的輸入。這個簡單直接的改進被證明很有效,並廣泛用於后續的相關工作中。CGAN模型的示意圖如下所示:
圖片名稱
文獻[3]提出了一種Deep Convolutional Generative Adversarial Networks(DCGAN),將對抗網絡與卷積神經網絡相結合進行圖片生成,DCGAN模型的結構如下:
圖片名稱
DCGANs的基本架構就是使用幾層“反卷積”(Deconvolution)。傳統的CNN是將圖像的尺寸壓縮,變得越來越小,而反卷積是將初始輸入的小數據(噪聲)變得越來越大(但反卷積並不是CNN的逆向操作),例如在上面這張圖中,從輸入層的100維noise,到最后輸出層64x64x3的圖片,從小維度產生出大的維度。反卷積的示意圖如下所示,2x2的輸入圖片,經過3x3 的卷積核,可產生4x4的feature map:
圖片名稱
由於反卷積存在於卷積的反向傳播中。其中反向傳播的卷積核矩陣是前向傳播的轉置,所以其又可稱為transport convolution。只不過我們把反向傳播的操作拿到了前向傳播來做,就產生了所謂的反卷積一說。但是transport convolution只能還原信號的大小,不能還原其值,因此不是真正的逆操作。
DCGAN的另一個改進是對生成模型中池化層的處理,傳統CNN使用池化層(max-pooling或mean-pooling)來壓縮數據的尺寸。在反卷積過程中,數據的尺寸會變得越來越大,而max-pooling的過程並不可逆,所以DCGAN的論文里並沒有采用池化的逆向操作,而只是讓反卷積的滑動步長設定為2或更大值,從而讓尺寸按我們的需求增大。另外,DCGAN模型在G
和D
上均使用了batch normalization,這使得訓練過程更加穩定和可控。
文獻[3]將GANs應用於文本轉圖像(Text to Image),從而可根據特定輸入文本所描述的內容來產生特定圖像。因此,生成模型里除了輸入隨機噪聲之外,還有一些特定的自然語言信息。所以判別模型不僅要區分樣本是否是真實的,還要判定其是否與輸入的語句信息相符。網絡結構如下圖所示:
圖片名稱
以下是實驗的結果,同時可看到模型仍然存在Mode Collapse的問題:
圖片名稱
4. 文獻
Goodfellow I J, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[C]// International Conference on Neural Information Processing Systems. MIT Press, 2014:2672-2680.
Mirza M, Osindero S. Conditional generative adversarial nets[J]. arXiv preprint arXiv:1411.1784, 2014.
Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks[J]. arXiv preprint arXiv:1511.06434, 2015.
Reed S, Akata Z, Yan X, et al. Generative adversarial text to image synthesis[J]. arXiv preprint arXiv:1605.05396, 2016.
---------------------
作者:Joe-Han
來源:CSDN
原文:https://blog.csdn.net/u010089444/article/details/78946039
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!