深入理解VAE(变分自编码器)
原文地址:https://pan.baidu.com/s/1LNolV-_SZcEhV0vz2RkDRQ?;
本文進(jìn)行翻譯和總結(jié)。
VAE
VAE是兩種主要神經(jīng)網(wǎng)絡(luò)生成模型中的一種,另一種典型的方法是GAN。VAE是一種自編碼器,在訓(xùn)練時(shí)將數(shù)據(jù)編碼成正則化的隱層分布,該隱層分布可以生成新的數(shù)據(jù)。其中,"變分"一詞來(lái)自正則化和統(tǒng)計(jì)學(xué)中變分推斷的關(guān)系。
本文想要解決的問(wèn)題:
1.什么是自編碼器?
2.什么是隱層空間,為什么需要正則化?
3.怎樣使用VAE生成新的數(shù)據(jù)?
4.VAE和變分推斷之間的關(guān)系?
自編碼器,降維,PCA
? ? ? ? 自編碼器(autoencoder)是一種降維的方法,一般的自編碼器框架包括了編碼器和解碼器。編碼器通過(guò)選擇和抽取特征將數(shù)據(jù)編碼到低維隱層特征空間中,解碼器則相反。自編碼器的損失函數(shù)就是編碼時(shí)最大化信息保留和解碼之后最小化重構(gòu)損失。通過(guò)降低隱層特征空間(編碼空間)的維度,達(dá)到降維的作用。
? ? ? ? 說(shuō)到降維就不得不說(shuō)PCA(主成分分析)了。PCA中,新的特征是原特征的線性組合,且新特征是相互正交的,目的就是減少信息的丟失。所以pca的編碼過(guò)程就是求特征空間的特征向量和特征值。PCA也可以融入自編碼器框架,編碼過(guò)程中就是求解編碼矩陣,得到編碼空間特征向量;解碼過(guò)程就是進(jìn)行特征還原,解碼矩陣為編碼矩陣的轉(zhuǎn)置。線性自編碼器其實(shí)就是神經(jīng)網(wǎng)絡(luò)版的PCA。
? ? ? ? 自編碼器需要注意的點(diǎn):①不考慮重構(gòu)損失的降維,可能會(huì)導(dǎo)致缺乏解釋性和可開發(fā)性。②降維的目的不單單只是減少數(shù)據(jù)特征的維度,還要得到數(shù)據(jù)最重要的那些維度。所以最后隱層空間的維度和自編碼器的深度需要和降維的目的有關(guān)。
變分自編碼器
? ? ? ? 自編碼器和內(nèi)容生成之間的聯(lián)系:隱層空間足夠“正則化”,就是在編碼器訓(xùn)練時(shí)well organized。如果自編碼器在訓(xùn)練時(shí)有足夠的自由,那么重構(gòu)損失會(huì)變得很小,在網(wǎng)絡(luò)足夠深時(shí)達(dá)到0(造成過(guò)擬合)。
? ? ? ? 變分自編碼器的定義:訓(xùn)練時(shí)加入正則化防止過(guò)擬合,保證隱層空間具有足夠的能力進(jìn)行生成過(guò)程的自編碼器。所以對(duì)自編碼器進(jìn)行了一些輕微的修改:編碼過(guò)程將輸入數(shù)據(jù)編碼成分布而不是一些點(diǎn)。
? ? ? ? 訓(xùn)練過(guò)程:1.將數(shù)據(jù)編碼成分布;2.再?gòu)碾[層分布中采樣數(shù)據(jù)點(diǎn);3.解碼還原數(shù)據(jù)并計(jì)算重構(gòu)損失;4.將重構(gòu)損失反向傳播。
? ? ? ? 編碼器生成的分布被選為正態(tài)分布,那么編碼器就可以訓(xùn)練返回描述這些正太分布的均值和協(xié)方差矩陣這些統(tǒng)計(jì)量就可以。為什么一個(gè)輸入被編碼成分布而不是一個(gè)唯一的一點(diǎn)是因?yàn)樗梢院茏匀坏乇磉_(dá)潛在空間的全局正則化和局部正則化,后面會(huì)說(shuō)明這一點(diǎn):局部是因?yàn)榉讲畹目刂?#xff0c;全局是因?yàn)榫档目刂啤?/p>
? ? ? ? 變分自編碼器的損失函數(shù)由重構(gòu)項(xiàng)(最后層)和正則項(xiàng)(隱層)組成。正則項(xiàng)為生成的分布和正太分布之間的KL散度來(lái)表示。
直覺上的正則項(xiàng)
? ? ? ? 正則化的作用是使隱層空間可以進(jìn)行生成過(guò)程,所以需滿足以下兩個(gè)特點(diǎn):連續(xù)性和完整性。連續(xù)性可以理解為隱層中兩個(gè)相近的點(diǎn)解碼后應(yīng)該近似是一樣的;完整性理解為分布中采樣得到的點(diǎn)解碼后的內(nèi)容應(yīng)該是有具體意義的。如果單單是將隱層中的點(diǎn)變成分布是不足以滿足上面兩個(gè)特點(diǎn)。所以需要定義一個(gè)好的正則項(xiàng),即編碼器生成的分布接近標(biāo)準(zhǔn)正太分布,協(xié)方差矩陣接近單位陣,均值為0。這個(gè)正則化項(xiàng),可以防止模型在潛在空間中對(duì)數(shù)據(jù)進(jìn)行遙遠(yuǎn)的編碼,并鼓勵(lì)盡可能多的返回分布“重疊”,從而滿足預(yù)期的連續(xù)性和完整性條件。正則項(xiàng)會(huì)提高重構(gòu)損失,所以訓(xùn)練時(shí)需要權(quán)衡這兩個(gè)損失。
VAE的數(shù)學(xué)細(xì)節(jié)
? ? ? ? ? 前面的直覺上的總結(jié):VAE是將輸入編碼成分布的自編碼器,并且隱層被規(guī)整為標(biāo)準(zhǔn)正太分布。下面從數(shù)學(xué)的角度來(lái)解釋這個(gè)正則化項(xiàng)的合理性。首先進(jìn)行如下概率框架定義和假設(shè):
? ? ? ? 1.隱層z是從p(z)中采樣而來(lái)。
? ? ? ? 2.數(shù)據(jù)x是從條件似然分布p(x|z)中采樣得到。
? ? ? ? 所以在編碼器框架中的解碼器"條件概率"可以定義為p(x|z),表示給出編碼器變量結(jié)果下的編碼結(jié)果的條件分布。編碼器“條件概率”p(z|x)。假設(shè)z的先驗(yàn)分布p(z)為標(biāo)準(zhǔn)正太分布,那么根據(jù)貝葉斯定義:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? 假設(shè)p(z)滿足標(biāo)準(zhǔn)正太分布,那么p(x|z)也可以表示為正太分布:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? p(z)和p(x|z)都是滿足正太分布的,所以p(z|x)也是滿足正太分布的。通過(guò)上面的貝葉斯公式,計(jì)算p(z|x)是一個(gè)標(biāo)準(zhǔn)的貝葉斯推導(dǎo)問(wèn)題,但是這個(gè)計(jì)算是很棘手的,因?yàn)樨惾~斯公式的分母上的積分求解很困難,所以我們需要優(yōu)化方法,比如變分推斷。
變分推斷
? ? ? ? ? ? 變分推斷是一個(gè)近似復(fù)雜分布的技術(shù)手段,就是使用一個(gè)參數(shù)化的分布來(lái)尋找目標(biāo)分布的最優(yōu)近似。現(xiàn)在我們的目標(biāo)是近似p(z|x)使用高斯分布q_x(z),它的均值和方差由兩個(gè)函數(shù)g,h定義參數(shù)為x。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? 所以我們需要找到最優(yōu)函數(shù)解g和h,使得近似分布和目標(biāo)分布之間KL最小化。? ? ? ? ?
? ? ? ? 從這個(gè)倒數(shù)第二行的等式中可以看到,在求近似p(z|x)分布時(shí),在可見數(shù)據(jù)的似然函數(shù)最大化(左邊項(xiàng))和先驗(yàn)分布的kl距離最小化(右邊項(xiàng))。這兩個(gè)權(quán)衡項(xiàng)可以理解為對(duì)于數(shù)據(jù)的自信和對(duì)先驗(yàn)的自信兩者之間的權(quán)衡。從倒數(shù)第一行的等式中,我們可以得到常數(shù)c是權(quán)衡左右兩項(xiàng),c越大表示解碼器的方差越大,越傾向正則項(xiàng)。
神經(jīng)網(wǎng)絡(luò)中變分推斷
? ? ? ? 從上面可以看出,在神經(jīng)網(wǎng)絡(luò)中函數(shù)g和h共享同一個(gè)結(jié)構(gòu)和權(quán)重。
? ? ? ??
? ? ? ? 上面兩個(gè)圖是自編碼器神經(jīng)網(wǎng)絡(luò)的圖,但是訓(xùn)練時(shí)變分推斷中需要在編碼得到的分布中采樣得到樣本點(diǎn),但是這個(gè)采樣過(guò)程在訓(xùn)練時(shí)無(wú)法進(jìn)行損失的反響傳播,所以需要一個(gè)重采樣的技巧。左邊的情況是沒有重采樣技巧時(shí)無(wú)法進(jìn)行反向傳播,右邊的圖表示引入重采樣。
? ? ? ? ?變分自編器的表示總體結(jié)構(gòu)圖:
總結(jié)
? ? ? ? 本文的主要內(nèi)容:
? ? ? ? ? ? ? ? 1.降維是將描述數(shù)據(jù)的特征維度數(shù)量降低的過(guò)程。
? ? ? ? ? ? ? ? 2.自編碼器是神經(jīng)網(wǎng)絡(luò)架構(gòu),通過(guò)編碼解碼過(guò)程進(jìn)行重構(gòu),并訓(xùn)練使得重構(gòu)損失最小。
? ? ? ? ? ? ? ? 3.由于過(guò)擬合,自編碼器的隱層沒有正則化,無(wú)法進(jìn)行生成過(guò)程解碼得到新數(shù)據(jù)。
? ? ? ? ? ? ? ? 4.變分自編碼器可以解決隱層沒有正則化的問(wèn)題,通過(guò)將隱層表示為分布為不是點(diǎn),并且加入了正則損失。
? ? ? ? ? ? ? ? 5.自編碼器的損失由重構(gòu)和正則損失組成,使用變分推斷的方法求解。
? ? ? ? ? ? ? ? ? ? ??
總結(jié)
以上是生活随笔為你收集整理的深入理解VAE(变分自编码器)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【WineHQ】Ubuntu 16.04
- 下一篇: 安利一个方便加载百度地图的js插件