生成模型VAE、GAN和基于流的模型詳細(xì)對比
在Ian Goodfellow和其他研究人員在一篇論文中介紹生成對抗網(wǎng)絡(luò)兩年后,Yann LeCun稱對抗訓(xùn)練是“過去十年里ML最有趣的想法”。盡管GANs很有趣,也很有前途,但它只是生成模型家族的一部分,是從完全不同的角度解決傳統(tǒng)AI問題,在本文中我們將對比常見的三種生成模型。
生成算法
當(dāng)我們想到機(jī)器學(xué)習(xí)時(shí),首先想到的可能是鑒別算法。判別模型是根據(jù)輸入數(shù)據(jù)的特征對其標(biāo)簽或類別進(jìn)行預(yù)測,是所有分類和預(yù)測解決方案的核心。與這些模型相比生成算法幫助我們講述關(guān)于數(shù)據(jù)的故事并提供數(shù)據(jù)是如何生成的可能解釋,與判別算法所做的將特征映射到標(biāo)簽不同,生成模型試圖預(yù)測給定標(biāo)簽的特征。
區(qū)別模型定義的標(biāo)簽y和特征x之間的關(guān)系,生成模型回答“你如何得到y(tǒng)”的問題。而生成模型模型則是P(Observation/Cause),然后使用貝葉斯定理計(jì)算P(Cause/Observation)。通過這種方式,他們可以捕獲p(x|y), x給定y的概率,或者給定標(biāo)簽或類別的特征的概率。所以實(shí)際上,生成算法也是可以用作分類器的,這可能是因?yàn)樗鼈儗Ω鱾€(gè)類的分布進(jìn)行了建模。
生成算法有很多,但屬于深度生成模型類別的最流行的模型是變分自動(dòng)編碼器(VAE)、gan和基于流的模型。
VAE
變分自編碼器(VAE)是一種生成模型,它“提供潛在空間中觀察結(jié)果的概率描述”。簡單地說,這意味著vae將潛在屬性存儲(chǔ)為概率分布。
變分自編碼器(Kingma & Welling, 2014)或VAE的思想深深植根于變分貝葉斯和圖形模型方法。
標(biāo)準(zhǔn)的自動(dòng)編碼器包括2個(gè)相似的網(wǎng)絡(luò),一個(gè)編碼器和一個(gè)解碼器。編碼器接受輸入并將其轉(zhuǎn)換為更小的表示形式,解碼器可以使用該表示形式將其轉(zhuǎn)換回原始輸入。它們將輸入轉(zhuǎn)換到的潛在空間以及它們的編碼向量所在的空間可能不是連續(xù)。這對于生成模型來說是一個(gè)問題,因?yàn)槲覀兌枷M麖臐撛诳臻g中隨機(jī)采樣,或者從連續(xù)潛在空間中生成輸入圖像的變化。
而變分自編碼器具有連續(xù)的潛在空間,這樣可以使隨機(jī)采樣和插值更加方便。為了實(shí)現(xiàn)這一點(diǎn),編碼器的隱藏節(jié)點(diǎn)不輸出編碼向量,而是輸出兩個(gè)大小相同的向量:一個(gè)均值向量和一個(gè)標(biāo)準(zhǔn)差向量。每一個(gè)隱藏的節(jié)點(diǎn)都認(rèn)為自己是高斯分布的。這里的均值和標(biāo)準(zhǔn)差向量的第i個(gè)元素對應(yīng)第i個(gè)隨機(jī)變量的均值和標(biāo)準(zhǔn)差值。我們從這個(gè)分布向量中采樣,解碼器從輸入向量的概率分布中隨機(jī)抽樣。這個(gè)過程就是隨機(jī)生成。這意味著即使對于相同的輸入,當(dāng)平均值和標(biāo)準(zhǔn)差保持不變時(shí),實(shí)際的編碼在每一次傳遞中都會(huì)有所不同。
自編碼器的損失是最小化重構(gòu)損失(輸出與輸入的相似程度)和潛在損失(隱藏節(jié)點(diǎn)與正態(tài)分布的接近程度)。潛在損失越小,可以編碼的信息就越少,這樣重構(gòu)損失就會(huì)增加,所以在潛在損失和重建損失之間是需要進(jìn)行進(jìn)行權(quán)衡的。當(dāng)潛在損耗較小時(shí),生成的圖像與訓(xùn)練的的圖像會(huì)過于相似,效果較差。在重構(gòu)損失小的情況下,訓(xùn)練時(shí)的重構(gòu)圖像效果較好,但生成的新圖像與重構(gòu)圖像相差較大,所以需要找到一個(gè)好的平衡。
VAE可以處理各種類型的數(shù)據(jù),序列的和非序列的,連續(xù)的或離散的,甚至有標(biāo)簽的或無標(biāo)簽的,這使它們成為非常強(qiáng)大的生成工具。
但是VAE的一個(gè)主要缺點(diǎn)是它們生成的輸出模糊。正如Dosovitskiy和Brox所指出的,VAE模型往往產(chǎn)生不現(xiàn)實(shí)的、模糊的樣本。這是由數(shù)據(jù)分布恢復(fù)和損失函數(shù)計(jì)算的方式造成的。Zhao等人在2017年的一篇論文中建議修改VAEs,不使用變分貝葉斯方法來提高輸出質(zhì)量。
生成對抗的網(wǎng)絡(luò)
生成對抗網(wǎng)絡(luò)(GANs)是一種基于深度學(xué)習(xí)的生成模型,能夠生成新內(nèi)容。GAN架構(gòu)在2014年Ian Goodfellow等人題為“生成對抗網(wǎng)絡(luò)”的論文中首次被描述。
GANs采用監(jiān)督學(xué)習(xí)方法,使用兩個(gè)子模型:生成新示例的生成器模型和試圖將示例分類為真實(shí)或假(生成的)的鑒別器模型。
生成器:用于從問題域生成新的似是而非例子的模型。
鑒頻器:用于將示例分類為真實(shí)的(來自領(lǐng)域)或假的(生成的)的模型。
這兩個(gè)模型作為競爭對手進(jìn)行訓(xùn)練。生成器直接產(chǎn)生樣本數(shù)據(jù)。它的對手鑒別器,試圖區(qū)分從訓(xùn)練數(shù)據(jù)中提取的樣本和從生成器中提取的樣本。這個(gè)競爭過程在訓(xùn)練中持續(xù)進(jìn)行,直到鑒別器模型有一半以上的時(shí)間無法判斷真假,這意味著生成器模型正在生成非常逼真的數(shù)據(jù)。
當(dāng)鑒別器成功地鑒別出真假樣本時(shí),它會(huì)得到獎(jiǎng)勵(lì)它的參數(shù)保持不變。如果生成器判斷錯(cuò)誤則受到懲罰,更新其參數(shù)。在理想情況下,每當(dāng)鑒別器不能分辨出差異并預(yù)測“不確定”(例如,50%的真假)時(shí),生成器則能從輸入域生成完美的副本。
但是這里每個(gè)模型都可以壓倒另一個(gè)。如果鑒別器太好,它將返回非常接近0或1的值,生成器則難以獲得更新的梯度。如果生成器太好,它就會(huì)利用鑒別器的弱點(diǎn)導(dǎo)致漏報(bào)。所以這兩個(gè)神經(jīng)網(wǎng)絡(luò)必須具有通過各自的學(xué)習(xí)速率達(dá)到的相似的“技能水平”,這也是我們常說的GAN難以訓(xùn)練的原因之一。
生成器模型
生成器取一個(gè)固定長度的隨機(jī)向量作為輸入,在定義域內(nèi)生成一個(gè)樣本。這個(gè)向量是從高斯分布中隨機(jī)抽取的。經(jīng)過訓(xùn)練后,這個(gè)多維向量空間中的點(diǎn)將對應(yīng)于問題域中的點(diǎn),形成數(shù)據(jù)分布的壓縮表示,這一步類似于VAE,這個(gè)向量空間被稱為潛在空間,或由潛在變量組成的向量空間。GAN的生成器將平均選定的潛在空間中的點(diǎn)。從潛在空間中提取的新點(diǎn)可以作為輸入提供給生成器模型,并用于生成新的和不同的輸出示例。訓(xùn)練結(jié)束后,保留生成器模型,用于生成新的樣本。
鑒別器模型
鑒別器模型將一個(gè)示例作為輸入(來自訓(xùn)練數(shù)據(jù)集的真實(shí)樣本或由生成器模型生成),并預(yù)測一個(gè)二進(jìn)制類標(biāo)簽為real或fake(已生成)。鑒別器是一個(gè)正常的(并且很容易理解的)分類模型。
訓(xùn)練過程結(jié)束后,鑒別器被丟棄,因?yàn)槲覀兏信d趣的是生成器。當(dāng)然鑒別器也可用于其他目的使用
GANs可以產(chǎn)生可行的樣本但最初版GAN也有缺點(diǎn):
- 圖像是由一些任意的噪聲產(chǎn)生的。當(dāng)生成具有特定特征的圖片時(shí),不能確定什么初始噪聲值將生成該圖片,而是需要搜索整個(gè)分布。
- GAN只區(qū)別于“真實(shí)”和“虛假”圖像。但是沒有約束說“貓”的照片必須看起來像“貓”。因此,它可能導(dǎo)致生成的圖像中沒有實(shí)際的對象,但樣式看起來卻很相似。
- GANs需要很長時(shí)間來訓(xùn)練。一個(gè)GAN在單個(gè)GPU上可能需要幾個(gè)小時(shí),而單個(gè)CPU可能需要一天以上的時(shí)間。
基于流的模型
基于流的生成模型是精確的對數(shù)似然模型,有易處理的采樣和潛在變量推理?;诹鞯哪P蛯⒁欢芽赡孀儞Q應(yīng)用于來自先驗(yàn)的樣本,以便可以計(jì)算觀察的精確對數(shù)似然。與前兩種算法不同,該模型顯式地學(xué)習(xí)數(shù)據(jù)分布,因此損失函數(shù)是負(fù)對數(shù)似然。
在非線性獨(dú)立分量分析中,流模型f被構(gòu)造為一個(gè)將高維隨機(jī)變量x映射到標(biāo)準(zhǔn)高斯?jié)撟兞縵=f(x)的可逆變換。流模型設(shè)計(jì)的關(guān)鍵思想是它可以是任意的雙射函數(shù),并且可以通過疊加各個(gè)簡單的可逆變換來形成??偨Y(jié)來說:流模型f是由組成一系列的可逆流動(dòng)作為f(x) =f1?···?fL(x),與每個(gè)fi有一個(gè)可處理的逆和可處理的雅可比矩陣行列式。
基于流的模型有兩大類:帶有標(biāo)準(zhǔn)化流模型和帶有試圖增強(qiáng)基本模型性能的自回歸流的模型。
標(biāo)準(zhǔn)化流模型
對于許多機(jī)器學(xué)習(xí)問題來說,能夠進(jìn)行良好的密度估計(jì)是必不可少的。但是它在本質(zhì)上是復(fù)雜的:當(dāng)我們需要在深度學(xué)習(xí)模型中進(jìn)行反向傳播時(shí),嵌入的概率分布需要足夠簡單,這樣才可以有效地計(jì)算導(dǎo)數(shù)。傳統(tǒng)的解決方案是在潛變量生成模型中使用高斯分布,盡管大多數(shù)現(xiàn)實(shí)世界的分布要復(fù)雜得多。標(biāo)準(zhǔn)化流(NF)模型,如RealNVP或Glow,提供了一個(gè)健壯的分布近似。他們通過應(yīng)用一系列可逆變換函數(shù)將一個(gè)簡單的分布轉(zhuǎn)化為一個(gè)復(fù)雜的分布。通過一系列的變換,根據(jù)變量變換定理,可以反復(fù)地用新變量替換原變量,最后得到最終目標(biāo)變量的概率分布。
自回歸流的模型
當(dāng)標(biāo)準(zhǔn)化流中的流動(dòng)變換被框定為一個(gè)自回歸模型,其中向量變量中的每個(gè)維度都處于先前維度的條件下,流模型的這種變化稱為自回歸流。與具有標(biāo)準(zhǔn)化流程的模型相比,它向前邁進(jìn)了一步。
常用的自回歸流模型是用于圖像生成的PixelCNN和用于一維音頻信號的WaveNet。它們都由一堆因果卷積組成——卷積運(yùn)算考慮到順序:在特定時(shí)間戳的預(yù)測只使用過去觀察到的數(shù)據(jù)。在PixelCNN中,因果卷積由一個(gè)帶掩碼的積核執(zhí)行。而WaveNet將輸出通過幾個(gè)時(shí)間戳轉(zhuǎn)移到未來時(shí)間。
基于流的模型在概念上對復(fù)雜分布的建模是非常友好的,但與最先進(jìn)的自回歸模型相比,它受到密度估計(jì)性能問題的限制。盡管流模型最初可能會(huì)替代GANs產(chǎn)生良好的輸出,但它們之間的訓(xùn)練計(jì)算成本存在顯著差距,基于流的模型生成相同分辨率的圖像所需時(shí)間是GANs的幾倍。
總結(jié)
每一種算法在準(zhǔn)確性和效率方面都有其優(yōu)點(diǎn)和局限性。雖然GANs和基于流程的模型通常生成比VAE更好或更接近真實(shí)的圖像,但后者比基于流程的模型更具有更快時(shí)間和更好的參數(shù)效率,下面就是三個(gè)模型的對比總結(jié):
可以看到GAN因?yàn)椴⑿兴运男屎芨?,但它并不可逆。相反,流模型是可逆的但是效率卻不高,而vae是可逆并且高效的,但不能并行計(jì)算。我們可以根據(jù)這些特性,在實(shí)際使用時(shí)根據(jù)產(chǎn)出、訓(xùn)練過程和效率之間進(jìn)行權(quán)衡選擇。