GANs综述
生成式對抗網絡GANs及其變體
基礎GAN
生成式對抗網絡,是lan Goodfellow 等人在2014年開發的,GANs 屬于生成式模型,GANs是基于最小值和最大值的零和博弈理論。
為此,GANs是由兩個神經網絡組成一個Generator。另一個是Discriminator。生成器的目標是學習生成虛假的樣本分布來欺騙鑒別器。而鑒別器的目標是學習區分生成器生成的真實分布和虛假分布。
GAN的總體結構由生成器和鑒別器組成,如圖1所示,生成器G將一些隨機噪聲向量Z作為輸入。然后嘗試使用這些噪聲向量G(Z)G(Z)G(Z)生成圖像,然后將生成的圖像傳遞給Disrciminator.
并根據Discriminator的輸出更新generator參數。
DiscriminatorDiscriminatorDiscriminator是一個二進制分類器。i其同時查看生成器生成的虛假樣本和真實樣本,并試圖決定那些事真實的,那些事虛假的。
給定一個樣本圖像XXX,鑒別器模型的概率是虛假或真實額圖像。
然后將概率作為反饋傳遞回GeneratorGeneratorGenerator。
隨著時間的推移,生成器和鑒別器模型,都試圖通過相互競爭來打敗對方,這就是生成式對抗網絡技術的對抗性來源。
優化是基于極大極小博弈問題,在訓練過程中,GeneratorGeneratorGenerator和DisriminatorDisriminatorDisriminator的參數都使用反向傳播進行更新。生成器的最終目標是能夠生成逼真的圖像。而DiscriminatorDiscriminatorDiscriminator的最終目標是逐步更好地從真實圖像中檢測生成虛假圖像。
GANs等人使用的是GoodFellow等人在首次引入GANs時引入的Minimax損失函數。生成器試圖最小化下面的函數,而判別式試圖最大化它,極大極小損失表達式為:
MinGMaxDf(D,G)=Ex[log(D(x))]+Ez[log(1?D(G(z)))]Min_GMax_Df(D,G) = E_x[log(D(x))] + E_z[log(1 - D(G(z)))]MinG?MaxD?f(D,G)=Ex?[log(D(x))]+Ez?[log(1?D(G(z)))]
在這里ExE_xEx?是所有數據樣本的期望值,D(x)D(x)D(x)是鑒別器估計xxx的真實概率,G(z)G(z)G(z)是給定隨機噪聲矢量zzz作為輸入的生成器輸出,
D(G(z))D(G(z))D(G(z))是鑒別器估計生成假樣本是真的概率。
EzE_zEz?是生成機所有隨機輸入的期望值。
條件生成對抗網絡(cGAN)
條件生成對抗網絡或CGAN是GANs的擴展。用于條件樣本生成,這可以控制生成數據的模式,CGAN使用一些額外信息uyuyuy,
例如類標簽或其他模式,通過連接這些額外信息或輸入。并將其饋送到生成器GGG和鑒別器DDD, 如圖所示,可以如下修改MinmaxMinmaxMinmax的目標函數:
MinGMAXDf(D,G)=Ex[log(D(x∣y))]+Ez[log(1?D(G(z∣y)))]Min_GMAX_Df(D,G) = E_x[log(D(x|y))] + E_z[log(1 - D(G(z|y)))]MinG?MAXD?f(D,G)=Ex?[log(D(x∣y))]+Ez?[log(1?D(G(z∣y)))]
WGAN
作者提出了一種新的算法,可以替代傳統的GAN訓練,它們表明,它們的新算法提高了模型學習的穩定性。并防止了模式崩潰等問題,對于批判模型,WGAN使用權值剪裁。還確保權值(模型參數**)保持在預定義的范圍內**。作者發現Jensen?ShannonJensen-ShannonJensen?Shannon散度,并不是測量不相交的部分分布距離的理想方法
。因此其使用了Wasserstein距離。該距離使用了Earth mover’s(EM)距離的概念,而不是測量生成的數據分布和真實數據分布之間的距離,在訓練模型時試圖保持One-Lipschitz連續性。
- 徹底解決了GAN訓練不穩定的問題,不再需要小心平衡生成器和判別器的訓練程度。
- 基本解決了Collapse mode的問題,確保生成樣本的多樣性。
- 訓練過程中終于育一個像交叉熵,準確率這樣的數值來指示訓練的進程。這個數值越小代表GAN訓練的越好,代表生成器產生的圖像質量越高。
- 以上一切好處不需要精心設計的網絡架構,最簡單的多層全連接網絡都可以做到。
最終給出改進的算法和實現流程,而改進后相比原始的GAN算法實現流程卻只改了四點: - 判別器最后一層去掉SigmoidSigmoidSigmoid
- 生成器和判別器的loss不取log。
- 每次更新判別器的參數之后把它們的絕對值截斷到不超過一個固定常數ccc.
WAN-GP
WGAN-GP是WGAN之后的改進版,主要還是改進了連續性限制的條件,因為,作者也發現將權重剪切到一定范圍之后,比如剪切到[-0.01,+0.01]后,發生了這樣的情況,如下圖左邊表示
發現大多數的權重都在-0.01 和0.01上,這就意味了網絡的大部分權重只有兩個可能數,對于深度神經網絡來說不能充分發揮深度神經網絡的擬合能力,簡直是極大的浪費。并且,也發現強制剪切權重容易導致梯度消失或者梯度爆炸,梯度消失很好理解,就是權重得不到更新信息****,梯度爆炸就是更新過猛了,權重每次更新都變化很大,很容易導致訓練不穩定。梯度消失與梯度爆炸原因均在于剪切范圍的選擇,選擇過小的話會導致梯度消失,如果設得稍微大了一點,每經過一層網絡,梯度變大一點點,多層之后就會發生梯度爆炸 。為了解決這個問題,并且找一個合適的方式滿足lipschitz連續性條件,作者提出了使用梯度懲罰(gradient penalty)的方式以滿足此連續性條件,其結果如上圖右邊所示。
梯度懲罰就是既然Lipschitz限制是要求判別器的梯度不超過K,那么可以通過建立一個損失函數來滿足這個要求,即先求出判別器的梯度d(D(x)),然后建立與K之間的二范數就可以實現一個簡單的損失函數設計。但是注意到D的梯度的數值空間是整個樣本空間,對于圖片(既包含了真實數據集也包含了生成出的圖片集)這樣的數據集來說,維度及其高,顯然是及其不適合的計算的。作者提出沒必要對整個數據集(真的和生成的)做采樣,只要從每一批次的樣本中采樣就可以了,比如可以產生一個隨機數,在生成數據和真實數據上做一個插值
所以WGAN?GPWGAN-GPWGAN?GP的貢獻是:
- 提出了一種新的lipschitz連續性限制手法—梯度懲罰,解決了訓練梯度消失梯度爆炸的問題。
- 比標準的WGAN擁有更塊的收斂速度,并能生成更高質量的樣本。
- 提供穩定的GAN訓練方式,幾乎不需要怎么調參,成功訓練多種針對圖片生成和語言模型的GAN架構。
但是論文提出,由于是對每個batch中的每一個樣本都做了梯度懲罰(隨機數的維度是(batchsize,1)),因此判別器中不能使用batch norm,但是可以使用其他的normalization方法,比如Layer Normalization、Weight Normalization和Instance Normalization,論文中使用了Layer Normalization,weight normalization效果也是可以的。
DCGANs
Radford等人[134]引入了深度卷積生成對抗網絡(DCGANs)。顧名思義,DCGANs對生成器和鑒別器模型都使用深度卷積神經網絡。最初的GAN架構只使用多層感知器或MLP,但由于CNN比MLP更擅長圖像,DCGAN的作者在Generator G和Discriminator D神經網絡架構中使用了CNN。以下列出了DCGANs神經網絡體系結構的三個關鍵特性:
- 首先,對于圖所示的Generator,將卷積替換為轉置后的卷積,因此Generator在每一層的表示依次變大,因為它從一個低維潛在向量映射到一個高維圖像。用大步卷積(Discriminator)和部分大步卷積(Generator)替換任何池化層。
- 第二,在生成器和鑒別器中使用批處理歸一化。
- 第三,在Generator中使用ReLU激活除輸出使用Tanh外的所有層。在所有層的鑒別器中使用LeakyReLU激活。
第四,使用Adam優化器,而不是帶有動量的SGD。
以上所有的修改都使DCGAN實現了穩定的訓練。DCGAN很重要,因為作者證明,通過強制某些約束,我們可以開發出復雜的高質量生成器。作者還對普通GAN架構做了其他一些修改
ProGAN
Karrs引入了一種新的訓練方法,用于訓練GAN生成高分辨率圖像
ProGAN的想法是,,通過在訓練過程中逐漸增長的鑒別器和生成器網絡,能夠合成高分辨率圖像和高質量的圖像。ProGANST通過逐步訓練GeneratorGeneratorGenerator從低分辨率圖像到高分辨率的圖像,使其更容易生成高分辨率圖像,在漸進式GANGANGAN中,生成器的第一層產生非常低的分辨率圖像,隨后的層增加細節,通過漸進式學習過程,訓練相當穩定。
InfroGAN
背后的動機使GANsGANsGANs能夠學習解的耦合表示,并以無監督的方式控制生成圖像的屬性和特征,要執行此操作,而不是僅使用noisenoisenoise向量zzz作為輸入,作者將噪聲向量分解為兩部分:
- 第一部分是傳統噪聲向量zzz
- 第二是新的替代向量ccc,此代碼對輸出圖像有可預測的影響。
- 目標函數如下所示:
其中λλλ是正則化參數,I(c;G(z,c))是潛在代碼c和生成器輸出G(z,c)之間的互信息. 其思想是最大化潛在代碼和生成器輸出之間的互信息。這鼓勵潛在代碼c盡可能包含真實數據分布的重要相關特征。然而,計算互信息I(c;G(z,c))是不實際的,因為它需要后驗信息P(c|x), 因此只能計算I(c;G(z,c))的近似值。這可以通過定義輔助分布Q(c|x)來估計P(c|x)的近似值。 因此**,目標函數的最終形式由互信息的下界近似給出**
Image-to-Image Translation with Conditional Adversarial Networks (pix2pix)
>使用pix2pix將邊緣映射到彩色圖像[70]。D,鑒別器,學習區分偽元組(生成器生成)和實際元組(邊緣,照片)。G,生成器,學習如何欺騙鑒別器。與無條件GAN相比,生成器和鑒別器都查看輸入邊圖
pix2pix[70]是一種條件生成式對抗網絡(cGAN[118]),用于解決通用的圖像到圖像的翻譯問題。GAN由一個具有U-Net[137]架構的Generator和一個PatchGAN[70]分類器組成。pix2pix模型不僅學習從輸入圖像到輸出圖像的映射,而且構造一個損失函數來訓練這種映射。有趣的是,不像常規的GANs, pix2pix生成器沒有隨機噪聲向量輸入。相反,生成機學習從輸入圖像x映射到輸出圖像G(x)。鑒別器的目標或損失函數是傳統的對抗損失函數。生成器的另一方面是使用對抗訓練的L1損失或生成的圖像和真實圖像/目標圖像之間的像素距離損失來訓練。?1損失仍鼓勵特定輸入生成的圖像盡可能接近真實或地面實況圖像對應的輸出。這導致更快的收斂和更穩定的訓練。條件GAN的損失函數:
L1L1L1損失或圖像間像素損失為:
最終的優化目標為:
Cycle GAN
pix2pix的一個致命缺陷是,它需要成對的圖像進行訓練,因此不能用于沒有輸入和輸出對的未配對數據。CycleGAN【197】通過引入循環一致性損失來解決這個問題,該損失試圖在一個周期的翻譯和反向翻譯后保留原始圖像。在此公式中,不再需要匹配圖像對進行訓練。CycleGAN使用兩個生成器和兩個鑒別器。生成器G用于將圖像從X域轉換到Y域。另一方面,生成器F將圖像從Y轉換為X(G: X->Y; F: Y->X). 鑒別器Dy區分y和G(x)和鑒別器DX區分x和G(y). 對抗性損失適用于兩個映射函數。對于映射函數G : X →Y及其鑒別器DY , 目標函數如下所示:
λ\lambdaλ控制兩個目標相對重要性。
Style GAN
StyleGAN[80]的主要目標是產生高質量、高分辨率的面部圖像,這些圖像在本質上是多樣化的,并提供對生成的合成圖像風格的控制。StyleGAN是ProGAN[78]模型的擴展,ProGAN模型在訓練過程中,通過Discriminator和Generator網絡的增量(逐漸)增長,采用漸進式增長的方法合成高分辨率和高質量的圖像。需要注意的是,StyleGAN的變化只影響Generator網絡,這意味著它們只影響生成過程。與傳統GAN相同的Discriminator和loss函數并沒有改變。升級后的Generator包括對ProGAN的Generator的幾個添加,如圖8所示。并描述如下:
- 基線漸進式GAN:作者使用漸進式GAN(ProGAN[78])作為基線,從中繼承網絡架構和一些超參數
- 雙線性上/下采樣:ProGAN模型使用最近鄰上/下采樣,但StyleGAN的作者對生成器和鑒別器都使用雙線性采樣層
- 映射網絡、樣式網絡和AdaIN:代替輸入噪聲向量? 它直接進入生成器,通過映射網絡獲得中間噪聲向量?z。映射網絡的輸出(w) 通過學習的仿射變換(A),然后通過自適應實例規范化(68)或* AdaIN模塊進入合成網絡。在圖中,“A”代表學習的仿射變換。AdaIN模塊傳輸由映射網絡在仿射變換后創建的編碼信息,這些信息在卷積層之后被合并到生成器模型的每個塊中。AdaIN模塊首先將特征映射的輸出轉換為標準高斯,然后添加樣式向量作為偏差項。映射網絡f是一個標準的深度神經網絡,由8個完全連接的層和合成網絡g組成由18層組成
*** 刪除傳統輸入**:包括ProGAN在內的大多數模型都使用隨機輸入來生成生成器的初始圖像。然而,StyleGAN的作者發現,圖像特征由? 還有亞當。因此,他們通過消除傳統的輸入層來簡化體系結構,并使用學習到的常量張量開始圖像合成
*** 添加噪聲輸入**:在評估非線性之前,在每次卷積之后添加高斯噪聲。如圖所示?!癇”是每個通道應用于噪聲輸入的學習比例因子 - 混合正則化:作者還介紹了一種新的正則化方法,以減少相鄰樣式的相關性,并對生成的圖像進行更細粒度的控制。而不是只傳遞一個潛在向量z, 通過映射網絡作為輸入,得到一個向量w, 作為輸出,混合正則化傳遞兩個潛在向量,z1和z2,通過映射向量得到兩個向量,w1和w2。使用的w1和w2對于每次迭代都是完全隨機的。這種技術可以防止網絡假設相鄰的樣式相互關聯。
RCGAN
除生成合成圖像外,GAN還可以生成順序數據[38,119]。而不是建模數據分布在原始特征空間中,時間序列數據的生成模型也捕捉到了條件分布P(Xt|X1:t?1)給定的歷史數據。循環神經網絡與傳統神經網絡在結構上的主要區別在于,我們在生成器和鑒別器上都用循環神經網絡(RNNs)取代了DNNs/ CNNs。這里,RNN可以是RNN的任何變體,如長短期記憶(LSTM)和門控循環單元(GRU),它捕捉輸入數據的時間依賴性。在循環條件GAN (RCGAN)中,Generator和Discriminator都以一些輔助信息為條件。[38]實驗表明,RGAN和RCGAN能夠有效地生成真實的時間序列合成數據。
我們闡述了RGAN和RCGAN的架構。生成器RNN在每個時間步取隨機噪聲生成合成序列。然后,判別器RNN作為分類器來區分輸入的真偽。如果是RCGAN,條件輸入連接到生成器和鑒別器的順序輸入。與GAN類似,RGAN中的Discriminator最大限度地減少了生成數據與真實數據之間的交叉熵損失。判別器損耗公式如下:
總結
- 上一篇: 理论+实战,一文详解最常使用的10个聚类
- 下一篇: 老虎面试