本文是Deep Learning Course總結(jié)系列的第五篇累舷,本文的主要內(nèi)容是對生成模型PixelCNN,PixelRNN,VAE总寒,GANs進行介紹。
本系列前四篇傳送門:第一篇 [Deep Learning] 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)理肺;第二篇 [Deep Learning] 卷積神經(jīng)網(wǎng)絡(luò) CNNs摄闸;第三篇 [Deep Learning] 集成學(xué)習(xí)Ensemble Learning&遷移學(xué)習(xí)Transfer Learning ;第四篇 [ [Deep Learning] 循環(huán)神經(jīng)網(wǎng)絡(luò)RNN ](http://www.reibang.com/p/5c22b41e9f07)妹萨。
生成模型分類
無監(jiān)督學(xué)習(xí)包括聚類K-means年枕、降維PCA、特征學(xué)習(xí)Antoencoders乎完、密度估計熏兄、生成模型(圖片生成、超分辨率树姨、圖片著色摩桶、時間序列數(shù)據(jù)模擬和計劃[增強學(xué)習(xí)]、潛在特征推斷)等帽揪,其中生成模型的分類歷史如下圖所示:
Explicit生成模型假設(shè)參數(shù)空間已知或可以近似估計硝清,然而真實數(shù)據(jù)的分布往往是十分復(fù)雜的。
PixelRNN & PixelCNN
由 Google 提出的 PixelRNN和 PixelCNN從左到右转晰,從上到下芦拿,逐步生成一個個像素,最終生成整張圖像查邢。它的基本原理是訓(xùn)練數(shù)據(jù)的概率最大化最優(yōu)化蔗崎,以之前生成的像素作為輸入,輸出對于下一個像素的值的統(tǒng)計分布的預(yù)測扰藕,然后從分布采樣出下一個像素缓苛。
由于逐個生成像素,PixelRNN & PixelCNN的最大問題是速度太慢邓深,但Pixel 系列的思想尤其適合生成音頻和文字未桥,例如 WaveNet番官,它用此前生成的音頻采樣作為輸入,生成下一個采樣钢属,不斷重復(fù)此過程徘熔,最終可生成高質(zhì)量的語音和音樂。
AE & VAE
-
自動編碼機(Auto Encoder):針對非標簽化數(shù)據(jù)學(xué)習(xí)其低維特征表示
通過編碼器降維關(guān)注更為重要的特征(下采樣downsampling)淆党,使用解碼器恢復(fù)圖像(上采樣upsampling)并使用L2損失函數(shù)判斷重構(gòu)圖像和原圖像的相似度酷师。由于AE 中沒有更先進的判別網(wǎng)絡(luò),AE 的優(yōu)化目標實際只是讓 x 和 G(E(x)) 盡量在像素上接近染乌。這并不是個好目標山孔,因此 AE 生成的圖像往往很模糊、質(zhì)量低荷憋。但AE生成的圖像更均勻台颠,光滑,訓(xùn)練過程更穩(wěn)定勒庄,這也是它可以與GAN后續(xù)結(jié)合的優(yōu)點串前。
- VAE:VAE(Variational Auto-Encoder)能解決 AE 的一個缺點:AE 的 G 只能保證將由 x 生成的 z 還原為 x。如果我們隨機生成 1 個 z实蔽,經(jīng)過 AE 的 G 后往往不會得到有效的圖像荡碾。而 VAE 可讓 E 生成的 z 盡量符合某個指定分布,例如標準差為 1 的多維正態(tài)分布局装。那么此時只需從這個分布采樣出 z坛吁,就能通過 G 得到有效的圖像筒饰。
作為生成模型的AE也可以用于分類問題:編碼器和Softmax函數(shù)結(jié)合適用于樣本量不足的分類監(jiān)督學(xué)習(xí)督暂,能夠避免樣本量不足時的過擬合問題。
對上述幾種方法的對比總結(jié):
GAN
GAN模型于2014年由Ian Goodfellow提出[1]焦影,GAN使用博弈的思想由一個生成器和一個判別器構(gòu)成宣增,生成器G從給定噪聲z中(一般是指均勻分布或者正態(tài)分布)產(chǎn)生合成數(shù)據(jù)玫膀,判別器D分辨生成器的的輸出和真實數(shù)據(jù),在訓(xùn)練過程中统舀,雙方不斷優(yōu)化自己匆骗,直到D無法再區(qū)分真實數(shù)據(jù)和G產(chǎn)生的數(shù)據(jù)劳景,到達納什均衡誉简。:
其中優(yōu)化D的部分:當x來自真實數(shù)據(jù)集data時,D(x)應(yīng)該越接近1越好盟广,而當處理G產(chǎn)生的數(shù)據(jù)G(z)時闷串,D(G(z))應(yīng)該越接近0越好,所以式子中筋量,log(D(x))烹吵,log(1-D(G(z)))應(yīng)該越大越好碉熄;
而G作為生成器,它所要做的就是迷惑D肋拔,讓D將自己生成的數(shù)據(jù)誤認為成來自真實數(shù)據(jù)集的數(shù)據(jù)锈津,所以D(G(z))應(yīng)該越接近1越好,即log(1-D(G(z)))應(yīng)該越小越好凉蜂。然而當優(yōu)化G時琼梆,由于在學(xué)習(xí)初期,G的表現(xiàn)較差窿吩,D很容易區(qū)分出G產(chǎn)生的數(shù)據(jù)茎杂,即D(G(z))=0, 導(dǎo)致log(1-D(G(z)))可能會出現(xiàn)飽和的問題。在出現(xiàn)這種問題時纫雁,可以轉(zhuǎn)而用最大化log(D(G(z)))來優(yōu)化G煌往。
GAN優(yōu)化
GAN自提出以來,就存在著訓(xùn)練困難轧邪、不易收斂刽脖、生成器和判別器的loss無法指示訓(xùn)練進程、生成樣本缺乏多樣性等問題忌愚。從那時起曾棕,很多研究人員就在嘗試解決,并提出了改進方案菜循,切實解決了部分問題翘地,如生成器梯度消失導(dǎo)致的訓(xùn)練困難。當然也還有很多問題亟待解決癌幕,如生成樣本的評價指標問題衙耕。
DCGAN (Deep Convolutional GAN)
樸素GAN在生成器和判別器在結(jié)構(gòu)上是通過以多層全連接網(wǎng)絡(luò)為主體的多層感知機(Multi-layer Perceptron, MLP) 實現(xiàn)的,然而其調(diào)參難度較大橙喘,訓(xùn)練失敗相當常見,生成圖片質(zhì)量也相當不佳厅瞎,尤其是對較復(fù)雜的數(shù)據(jù)集而言初坠。由于卷積神經(jīng)網(wǎng)絡(luò)比MLP有更強的擬合與表達能力和簸,2015年Alex Radford提出使用卷積架構(gòu)取代GAN中的全連接層[2]。DCGAN去掉了池化層锁保,采用批標準化(Batch Normalization, BN)等技術(shù),并強調(diào)了隱藏層分析和可視化技術(shù)對GAN訓(xùn)練的重要性和指導(dǎo)作用爽柒。
WGAN (Wasserstein GAN)
對于GAN的全局最優(yōu)解吴菠,固定G優(yōu)化D,D的最佳情況為:
根據(jù)D(x)的全局最優(yōu)解可以得出:當判別器過優(yōu)時浩村,生成器的loss可以近似等價于優(yōu)化真實分布與生成器產(chǎn)生數(shù)據(jù)分布的JS散度心墅。然而JS對于兩個完全沒有overlap的情況無法收斂。具體推導(dǎo)可參考:https://zhuanlan.zhihu.com/p/39398823嗓化。WGAN闡述了樸素GAN因生成器梯度消失而訓(xùn)練失敗的原因,并用Wasserstein距離替代了Jensen-Shannon散度严肪,在理論上解決了梯度消失問題谦屑。
此外,WGAN還從理論上給出了樸素GAN發(fā)生模式坍塌(mode collapse)的原因酝枢,本質(zhì)上是過擬合到某一點
模式坍塌的幾種解決方案包括正則化悍手、增加label(半監(jiān)督GAN)、fe
ature matching
WGAN從實驗角度說明了WGAN在這一點上的優(yōu)越性竣付。
雖然WGAN基本解決了訓(xùn)練失敗的問題滞欠,但是無論是訓(xùn)練過程還是是收斂速度都要比常規(guī) GAN 更慢。
WGAN-GP增加梯度懲罰項
Progressive GAN
BIgGAN
GraphSGAN
CVAE-GAN
CVAE-GAN包括4 個神經(jīng)網(wǎng)絡(luò):
E:編碼器(Encoder)逸绎,輸入圖像 x夭谤,輸出編碼 z棺牧。
如果還給定了類別 c沮翔,那么生成的 z 就會質(zhì)量更高,即更隨機疲牵,因為可移除c中已包含的信息榆鼠。
G:生成器(Generator)妆够。輸入編碼 z,輸出圖像 x神妹。
如果還給定了類別 c,那么就會生成屬于類別 c 的圖像冕茅。
C:分類器(Classifier)蛹找。輸入圖像 x庸疾,輸出所屬類別 c。
D:辨別器(Discriminator)届慈。輸入圖像 x金顿,判斷它的真實度。
CVAE 生成的圖像中規(guī)中矩缺虐,但是模糊礁凡,CGAN 生成的圖像清晰,但有時會有明顯錯誤剪芍,所以 兩者互補相結(jié)合后網(wǎng)絡(luò)共有三個目標: 對于從 x 生成的 z窟蓝,G 應(yīng)能還原出接近 x 的 x'(像素上的接近)。這來自 AE 的思想状共。G 生成的圖像應(yīng)可由 D 鑒別為屬于真實圖像。這來自 GAN 的思想冯袍。G 生成的圖像應(yīng)可由 C 鑒別為屬于 c 類別碾牌。這與 InfoGAN 的思想有些相似。
最終的z在不同 c 下的效果:
不同 c征冷,代表不同的明星资盅。相同 z踊赠,代表其他的一切語義特征(如表情,角度今穿,光照等等)都一模一樣伦籍。通過保持 z,改變 c芝薇,可輕松實現(xiàn)換臉效果作儿。由于 CVAE-GAN 生成的樣本質(zhì)量很高,還可用于增強訓(xùn)練樣本集晾嘶,進行語義插值等娶吞。
cGAN (conditional GAN)
為了生成指定標簽的數(shù)據(jù)妒蛇,在CGAN中楷拳,生成器不僅要輸入隨機數(shù)吏奸,還需要將之與標簽類別做拼接(concat,一般要將標簽轉(zhuǎn)換成如one-hot或其它的tensor)浸颓,再將其輸入生成器生成所需要的數(shù)據(jù)旺拉。此外棵磷,對判別器仪媒,也需要將真實數(shù)據(jù)或生成數(shù)據(jù)與對應(yīng)的標簽類別做拼接,再輸入判別器的神經(jīng)網(wǎng)絡(luò)進行識別和判斷留凭。
InfoGAN(MutualInformation)本質(zhì)上也可以看作是一種cGAN偎巢。它將原先生成器上輸入的z進行分解,除了原先的噪聲z以外求冷,還分解出一個隱含編碼c窍霞。其中c除了可以表示類別以外,還可以包含多種變量韭山。以MNIST數(shù)據(jù)集為例冷溃,還可以表示諸如光照方向,字體的傾斜角度续搀,筆畫粗細等菠净,這使得生成過程具有一定程度的可控性,生成結(jié)果也具備了一定的可解釋性牵咙。
pix2pix
生成器輸入除隨機數(shù)z以外洁桌,將圖片x(如灰度圖,素描圖等)作為條件進行拼接谱轨,輸出的是轉(zhuǎn)換后的圖片(如照片)吠谢。而判別器輸入的是轉(zhuǎn)換后的圖片或真實照片,特別之處在于献汗,文章發(fā)現(xiàn)王污,判別器也將生成器輸入的圖片x作為條件進行拼接,會極大提高實驗的結(jié)果尿招,其結(jié)構(gòu)圖如下所示(此處結(jié)構(gòu)圖隱去了生成器的隨機數(shù)z):
cycleGAN泊业、DiscoGAN & DualGAN
Pix2Pix訓(xùn)練需要相互配對的圖片x與y啊易,然而,這類數(shù)據(jù)是極度缺乏的篮奄,對此CycleGAN提出了無需配對數(shù)據(jù)的圖像翻譯方法割去。CycleGAN基于循環(huán)一致性(Cycle-Consistent)呻逆,兩類圖像經(jīng)過兩次相應(yīng)的映射后,又會變?yōu)樵瓉淼膱D像咖城,簡單有效地解決了這一問題。
而與CycleGAN十分類似的DiscoGAN握础、DualGAN與其最大區(qū)別在于DiscoGAN使用最簡單直白的CNN編碼器和解碼器悴品,使用全連接網(wǎng)絡(luò)當轉(zhuǎn)換器;CycleGAN使用了ResNet充當轉(zhuǎn)換器定枷;DualGAN則是使用類似WGAN的形式來表示邦蜜。
StarGAN
StarGAN作為CycleGAN的推廣亥至,將兩兩映射變成了多領(lǐng)域之間的映射姐扮,能夠通過一個生成器解決所有跨域類別問題。