計算機視覺課程的閱讀作業(yè),要求提交slides。
參考資料:
2?Tutorial - What is a variational autoencoder? – Jaan Altosaar
3?Variational Autoencoders Explained
4?變分自編碼器(一):原來是這么一回事 - 科學(xué)空間|Scientific Spaces
1 背景
1.1 應(yīng)用場景
? ?VAE被廣泛用于多媒體生成,包括圖像生成,音頻合成等。

1.2 要解決的問題
? ? 我們現(xiàn)在期望用一個網(wǎng)絡(luò)來生成貓的圖片,我們可以使用如下圖所示的結(jié)構(gòu),該網(wǎng)絡(luò)由一些反卷積層(一種上采樣方法,其輸出比輸入的維數(shù)更高)構(gòu)成,輸入是全1的向量,通過訓(xùn)練,我們可以最小化網(wǎng)絡(luò)的輸出與目標(biāo)圖片的均方誤差。這樣,當(dāng)我們將全1向量輸入訓(xùn)練好的網(wǎng)絡(luò)后,就能得到這張貓的圖片,也就是說,這張圖片的信息已被存儲在網(wǎng)絡(luò)的參數(shù)中。

? ? 但是我們不滿足于此,我們還希望能生成更多的圖片,甚至是訓(xùn)練集外的圖片。為了完成這樣的任務(wù),顯然輸入向量不能再是唯一的全1向量了,我們需要更多的輸入向量。一個簡單的解決方法是,輸入隨機選擇的實向量,對應(yīng)不同的訓(xùn)練集圖片,比如,用[3.3, 4.5, 2.1, 9.8] 表示貓的圖片,用[3.4, 2.1, 6.7, 4.2] 表示狗的圖片。這種隨機選擇輸入向量的方式顯然是不夠好的。因為輸入向量和目標(biāo)圖片沒有任何因果關(guān)系,除了已經(jīng)儲存過的圖片,我們不知道如何選擇輸入向量,去產(chǎn)生新的圖片。
? ? 標(biāo)準(zhǔn)自編碼器給出了一種產(chǎn)生輸入向量的方法:既然人工選擇輸入向量很困難,我們讓神經(jīng)網(wǎng)絡(luò)幫我們做這件事。如下圖所示,在標(biāo)準(zhǔn)自編碼器中,先由encoder將原始圖片變換為低維的隱變量,再由decoder將隱變量還原為原始圖片。這里的隱變量也就是剛才提到的輸入向量。此時,隱變量是由原始圖片經(jīng)過編碼生成的,一定程度上具備了因果關(guān)系,但是我們?nèi)匀缓茈y根據(jù)訓(xùn)練得到的隱變量去生成新的圖片,因為我們沒有對隱變量進(jìn)行任何約束,圖片對應(yīng)的隱變量分布可能是任意的。

2 VAE方法
2.1 主要思路
? ? 為了解決生成新圖片的問題,我們需要對自編碼器進(jìn)行改進(jìn)。
????1文指出,VAE的主要目的是為數(shù)據(jù)的隱變量加上先驗;3文指出,VAE區(qū)別傳統(tǒng)自編碼器的一個重要特征是,它將隱變量限制為一個標(biāo)準(zhǔn)正態(tài)分布。以上兩種說法是吻合的。
? ? 當(dāng)然,4文指出,VAE的核心假設(shè)是p(Z|X)(后驗分布)是正態(tài)分布,這一點確實有道理,但是通過計算可以發(fā)現(xiàn),此時,隱變量的分布確實也是標(biāo)準(zhǔn)正態(tài)分布。因此,本文不深究VAE的初衷到底是哪一種。
? ? 至此,我們可以說,VAE對于上述問題的解決方案就是,限制encoder生成的隱變量都服從正態(tài)分布,且盡可能逼近標(biāo)準(zhǔn)正態(tài)分布。此時,生成一幅新圖片將變得很簡單,只需要從標(biāo)準(zhǔn)正態(tài)分布中采樣出一個隱變量,再將隱變量輸入decoder即可。
? ? VAE的結(jié)構(gòu)如下圖所示:

我們可以看到, 在VAE中,encoder不再直接生成隱變量Z,轉(zhuǎn)而生成一個分布qphi(Z|Xi),隱變量由qphi(Z|Xi)采樣得到。3文指出,這種做法除了能使我們生成隨機的隱變量,而且提高了網(wǎng)絡(luò)的泛化能力。
為了提高網(wǎng)絡(luò)的泛化能力,即要求網(wǎng)絡(luò)能很好地生成訓(xùn)練集之外的圖片,要得到訓(xùn)練集外的圖片,就要求decoder輸入的隱變量與訓(xùn)練中所得到的不同,此時,可以看做是隱變量產(chǎn)生了噪聲。即我們希望decoder對輸入的噪聲具有魯棒性,如果encoder輸出的只有均值那一項,則VAE退化為標(biāo)準(zhǔn)自編碼器,decoder對輸入噪聲沒有魯棒性;但是encoder能同時輸出均值mu和方差sigma^2時,相當(dāng)于在訓(xùn)練過程中為decoder的輸入加上了方差為sigma^2的噪聲(且由于qphi(Z|Xi)要盡量靠近標(biāo)準(zhǔn)正態(tài)分布(方差為1),這就克服了自編碼器天然的“惰性”,即網(wǎng)絡(luò)很容易將方差學(xué)習(xí)為0)。
因此,在訓(xùn)練階段,decoder為了減小訓(xùn)練誤差,就必須學(xué)會克服噪聲的干擾。從而使訓(xùn)練好的decoder具有良好的魯棒性。
但是上述泛化能力與減小網(wǎng)絡(luò)的訓(xùn)練誤差是相互矛盾的,因為假如沒有“qphi(Z|Xi)要盡量靠近標(biāo)準(zhǔn)正態(tài)分布(方差為1)”這一約束,網(wǎng)絡(luò)會趨向于將方差學(xué)習(xí)為0,因為噪聲的存在會增加網(wǎng)絡(luò)擬合的難度。因此,在實際應(yīng)用中,我們需要權(quán)衡網(wǎng)絡(luò)能達(dá)到的訓(xùn)練精度以及隱變量逼近正態(tài)分布的程度。這種權(quán)衡,也正是機器學(xué)習(xí)算法經(jīng)常遇到的訓(xùn)練誤差和泛化能力的權(quán)衡。對應(yīng)損失函數(shù)中的重建誤差和正則化項。我們將通過x得到分布qphi(z|x)再得到z的這一過程看做是編碼器,而通過z還原x的這一過程,也就是從分布ptheta(x|z)中得出x的過程,看做是解碼器。ptheta(z) 表示z的先驗分布,在VAE中,ptheta(z) 被設(shè)置為標(biāo)準(zhǔn)正態(tài)分布。

由上述推導(dǎo)可知,正則化項需要刻畫qphi(Z|Xi)與標(biāo)準(zhǔn)正態(tài)分布(先驗分布ptheta(z))的相似度,VAE使用了KL散度來度量,即上式中的第一項,簡單說,KL散度可以用來度量兩個分布的逼近程度,且KL散度越小,兩個分布越接近。上式中的第二項是decoder的輸出是原數(shù)據(jù)點的對數(shù)似然,再求期望,這就對應(yīng)重建誤差(該似然越大,說明decoder產(chǎn)生原始數(shù)據(jù)的可能性越大,即重建誤差越?。醋畲蠡痙ecoder輸出原數(shù)據(jù)點的可能性,相當(dāng)于最小化重建誤差。需要注意的是,我們的優(yōu)化目標(biāo)為最大化上述L。
2.2 概率視角
?接下來我們用更數(shù)學(xué)化的語言描述VAE。
生成模型的目的是要求解數(shù)據(jù)與隱變量間的聯(lián)合密度,即p(x,z),有p(x,z)=p(x∣z)p(z),此時,生成過程變?yōu)椋?/p>
先產(chǎn)生zi~p(z),再產(chǎn)生xi~p(x|z),這就需要估計隱變量的分布p(z),而p(z)=p(z∣x)p(x),但p(z|x)通常難以計算,因此,VAE引入另外一個參數(shù)phi和對應(yīng)的分布qphi(z|x),以估計p(z|x),記p(z|x)的參數(shù)為theta,則p(z|x)可寫為ptheta(z|x)。

參數(shù)phi和theta就是深度網(wǎng)絡(luò)模型中各個神經(jīng)網(wǎng)絡(luò)單元的參數(shù),也就是我們要優(yōu)化的參數(shù)。優(yōu)化模型中參數(shù)phi和theta的過程如下,注意這里引入了變分下限:

這里應(yīng)用了變分推斷的技巧,等式左側(cè)是數(shù)據(jù)集內(nèi)某一條數(shù)據(jù)出現(xiàn)的概率的對數(shù),是一個無法被計算的常數(shù),等式右側(cè)第一項KL散度表示qphi(z|x)對ptheta(z|x)的逼近程度,是我們想要優(yōu)化(最小化)的對象,第二項往往被稱作evidence lower bound (ELBO,變分下限)。優(yōu)化的目標(biāo)是使變分下限最大,這樣在等式左側(cè)不變的情況下,KL散度就能取到最小。
經(jīng)過推導(dǎo),變分下限又可寫為如下形式,與之前得到的式子相同。

2.3 關(guān)于Reparameterization trick
????1文中將Reparameterization trick(下稱RT)的目的描述為:從分布中采樣這個操作是無法求偏導(dǎo)的,利用BP算法優(yōu)化模型的時候,梯度將無法計算。 即:RT是我們在實現(xiàn)模型時使用的技巧。
????即下圖中的一般采樣無法求導(dǎo),而RT采樣可以對mu和sigma求導(dǎo),在筆者看來,encoder為了得到一個正態(tài)分布,必然是通過生成其均值和標(biāo)準(zhǔn)差(即正態(tài)分布的兩個參數(shù))來實現(xiàn)的。不同之處在于,在一般采樣中,得到均值和標(biāo)準(zhǔn)差后,很自然的,從均值和標(biāo)準(zhǔn)差這兩個參數(shù)確定的正態(tài)分布中采樣得到z即可,但由于采樣過程的存在,計算梯度時將無法求偏導(dǎo);因此,在RT采樣中,將正態(tài)分布N(mu,sigma^2)重新參數(shù)化為mu和sigma(也是Reparameterization trick 名字的由來),encoder產(chǎn)生到mu和sigma即可,此時z可對mu和sigma求偏導(dǎo)。


3 實驗
原論文在人臉和手寫數(shù)字集上進(jìn)行了實驗,下面的圖是在標(biāo)準(zhǔn)正態(tài)分布采樣得到z后,輸入decoder得到的結(jié)果,可見VAE能生成與原數(shù)據(jù)集類似的新圖片。


4 結(jié)論
提出了一種生成模型——變分自編碼器
從實驗結(jié)果看,該方法能較好地解決圖片生成問題。