技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 變分自編碼器VAE教程

變分自編碼器VAE教程

時(shí)間:2018-06-12 17:17:56來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)載

導(dǎo)語(yǔ):?現(xiàn)在有一個(gè)數(shù)據(jù)集DX(dataset,也可以叫datapoints),每個(gè)數(shù)據(jù)也稱為數(shù)據(jù)點(diǎn)。我們假定這個(gè)樣本受某種神秘力量操控,但是我們也無(wú)從知道這些神秘力量是什么?

1.神秘變量與數(shù)據(jù)集

現(xiàn)在有一個(gè)數(shù)據(jù)集DX(dataset,也可以叫datapoints),每個(gè)數(shù)據(jù)也稱為數(shù)據(jù)點(diǎn)。

我們假定這個(gè)樣本受某種神秘力量操控,但是我們也無(wú)從知道這些神秘力量是什么?那么我們假定這股神秘力量有n個(gè),起名字叫power1,power2,...,powern吧,他們的大小分別是z1,z2,...,zn,稱之為神秘變量表示成一個(gè)向量就是

z也起個(gè)名字叫神秘組合。

一言以蔽之:神秘變量代表了神秘力量的神秘組合關(guān)系。

用正經(jīng)的話說(shuō)就是:隱變量(latent variable)代表了隱因子(latent factor)的組合關(guān)系。

這里我們澄清一下隸屬空間,假設(shè)數(shù)據(jù)集DX是m個(gè)點(diǎn),這m個(gè)點(diǎn)也應(yīng)該隸屬于一個(gè)空間,比如一維的情況,假如每個(gè)點(diǎn)是一個(gè)實(shí)數(shù),那么他的隸屬空間就是實(shí)數(shù)集,所以我們這里定義一個(gè)DX中每個(gè)點(diǎn)都屬于的空間稱為XS,我們?cè)诤竺嫣岬降臅r(shí)候,你就不再感到陌生了。

神秘變量z可以肯定他們也有一個(gè)歸屬空間稱為ZS。

下面我們就要形式化地構(gòu)造X與Z的神秘關(guān)系了,這個(gè)關(guān)系就是我們前面說(shuō)的神秘力量,直觀上我們已經(jīng)非常清楚,假設(shè)我們的數(shù)據(jù)集就是完全由這n個(gè)神秘變量全權(quán)操控的,那么對(duì)于DX中每一個(gè)點(diǎn)都應(yīng)該有一個(gè)n個(gè)神秘變量的神秘組合zj來(lái)神秘決定。

接下來(lái)我們要將這個(gè)關(guān)系再簡(jiǎn)化一下,我們假設(shè)這n個(gè)神秘變量不是能夠操控DX的全部,還有一些其他的神秘力量,我們暫時(shí)不考慮,那么就可以用概率來(lái)彌補(bǔ)這個(gè)缺失,為什么呢?舉個(gè)例子,假設(shè)我們制造了一個(gè)機(jī)器可以向一個(gè)固定的目標(biāo)發(fā)射子彈,我們精確的計(jì)算好了打擊的力量和角度,但由于某些難以控制的因素,比如空氣的流動(dòng),地球的轉(zhuǎn)動(dòng)導(dǎo)致命中的目標(biāo)無(wú)法達(dá)到精準(zhǔn)的目的,而這些因素可能十分巨大和繁多,但是他們并不是形成DX的主因素,根據(jù)大數(shù)定理,這些所有因素產(chǎn)生的影響可以用高斯分布的概率密度函數(shù)來(lái)表示。它長(zhǎng)這樣:

當(dāng)μ=0時(shí),就變成了這樣:

這是一維高斯分布的公式,那么多維的呢?比較復(fù)雜,長(zhǎng)這樣:

不管怎樣,你只要記住我們現(xiàn)在沒(méi)有能力關(guān)注全部的神秘變量,我們只關(guān)心若干個(gè)可能重要的因素,這些因素的分布狀況可以有各種假設(shè),我們回頭再討論他們的概率分布問(wèn)題,我們現(xiàn)在假定我們對(duì)他們的具體分布情況也是一無(wú)所知,我們只是知道他們處于ZS空間內(nèi)。

前面說(shuō)到了一個(gè)神秘組合,如果一個(gè)數(shù)據(jù)集X對(duì)應(yīng)的神秘組合完全一樣,那么這個(gè)數(shù)據(jù)集就是一個(gè)單一的分類(lèi)數(shù)據(jù)集,如果是多個(gè),那么就是多分類(lèi)數(shù)據(jù)集,但如果是一個(gè)連續(xù)的組合數(shù)據(jù),那么就是一個(gè)有點(diǎn)分不清界限的復(fù)雜數(shù)據(jù)集,就好比,我們這個(gè)數(shù)據(jù)集是一條線段的集合,線段的長(zhǎng)度是唯一的神秘變量,那么只要長(zhǎng)度在一個(gè)范圍內(nèi)連續(xù)變化,那么這個(gè)集合里的線段你就會(huì)發(fā)現(xiàn)分散的很均勻,你幾乎沒(méi)有辦法區(qū)分開(kāi)他們,也沒(méi)法給他們分成幾類(lèi),但如果這個(gè)長(zhǎng)度值只能選擇1,3,5,那么當(dāng)你觀察這個(gè)數(shù)據(jù)集的時(shí)候,你會(huì)發(fā)現(xiàn)他們會(huì)聚在三堆兒里。如果這個(gè)線段的生成完全依靠的是計(jì)算機(jī),那么每一堆兒都是完全重合的,但如果是人畫(huà)的,就可能因?yàn)檎`差,沒(méi)法完全重合,這沒(méi)法重合的部分就是我們說(shuō)的其他復(fù)雜因素,我們通常用一個(gè)高斯分布來(lái)把它代表了。好,我們已經(jīng)基本清晰了,我們?cè)摻o這個(gè)神秘組合一個(gè)形式化的描述了。

假設(shè)有兩個(gè)變量,z∈ZS和x∈XS,存在一個(gè)確定性函數(shù)族f(z;θ),族中的每個(gè)函數(shù)由θ∈Θ唯一確定,f:ZS×Θ→XS,當(dāng)θ固定,z是一個(gè)隨機(jī)變量(概率密度函數(shù)為Pz(z))時(shí),那么f(z;θ)就是定義在XS上的隨機(jī)變量x,對(duì)應(yīng)的概率密度函數(shù)可以寫(xiě)成g(x)。

那么我們的目標(biāo)就是優(yōu)化θ從而尋找到一個(gè)f,能夠是隨機(jī)變量x的采樣和X非常的像。這里需要注意一下,x是一個(gè)變量,DX是已經(jīng)現(xiàn)成的數(shù)據(jù)集,x不屬于DX,我特意將名字起的有區(qū)分度。

這樣,f就是那個(gè)神秘力量通道,他把這些神秘力量的力度,通過(guò)f變成了x變量,而這個(gè)x變量就是與數(shù)據(jù)集DX具有直接關(guān)系的隨機(jī)變量。

設(shè)一個(gè)數(shù)據(jù)集為DX,那么這個(gè)數(shù)據(jù)集存在的概率為Pt(DX),則根據(jù)貝葉斯公式有:

其中,是我們新定義的概率密度函數(shù),我們前面知道f是將z映射成x,而x又與DX有某種直接的關(guān)系,這個(gè)直接關(guān)系可以表示成,那么

這樣我們就直接定義個(gè)來(lái)替換,從而表示z與DX的關(guān)系了。

好了,其實(shí)公式(1)就是我們的神秘力量與觀察到的數(shù)據(jù)集之間的神秘關(guān)系,這個(gè)關(guān)系的意思我們直白的說(shuō)就是:當(dāng)隱秘變量按照某種規(guī)律存在時(shí),就非常容易產(chǎn)生現(xiàn)在我們看到的這個(gè)數(shù)據(jù)集。那么,我們要做的工作就是當(dāng)我們假定有n個(gè)神秘力量時(shí),我們能夠找到一個(gè)神奇的函數(shù)f,將神秘力量的變化轉(zhuǎn)化成神奇的x的變化,這個(gè)x能夠輕而易舉地生成數(shù)據(jù)集DX。

從上面的描述里面我們看到,f是生成轉(zhuǎn)換函數(shù),公式(1)不表示這種轉(zhuǎn)換關(guān)系,而是這種關(guān)系的最大似然估計(jì)(maximumlikelihood),它的意思是找到最有可能生成DX這個(gè)數(shù)據(jù)集的主導(dǎo)函數(shù)f。

接下來(lái)我們回到討論這個(gè)概率密度函數(shù)上來(lái),我們前面說(shuō)過(guò),如果z是全部的神秘力量,那么它產(chǎn)生的變量x就一定固定的,即當(dāng)z取值固定時(shí),x取值固定,但是現(xiàn)實(shí)中還有很多其他的因素,因而x的取值還與他們有關(guān),他們的影響力,最終反映成了高斯函數(shù),所以我們大膽假定是一個(gè)高斯分布的概率密度函數(shù),即

注意z的分布我們依然是未知的。

假定我們知道z現(xiàn)在取某一個(gè)或幾個(gè)特定值,那么我們就可以通過(guò)GradientDescent來(lái)找到一個(gè)θ盡量滿足z能夠以極高的概率生成我們希望的數(shù)據(jù)集DX。再一推廣,就變成了,z取值某一范圍,但去幾個(gè)特定值或某一取值范圍是就面臨z各種取值的概率問(wèn)題,我們回頭再討論這個(gè)棘手的問(wèn)題,你現(xiàn)在只要知道冥冥之中,我們似乎可以通過(guò)學(xué)習(xí)參數(shù)θ尋找最優(yōu)解就行了。

OK,我們還要說(shuō)一個(gè)關(guān)鍵問(wèn)題,就是我們確信f是存在的,我們認(rèn)為變量與神秘變量之間的關(guān)系一定可以用一個(gè)函數(shù)來(lái)表示。

2.變分自編碼器(VAE)

本節(jié),我們探討如何最大化公式(1)。首先,我們要討論怎樣確定神秘變量z,即z應(yīng)該有幾個(gè)維度,每個(gè)維度的作用域是什么?更為較真的,我們可能甚至要追究每一維度都代表什么?他們之間是不是獨(dú)立的?每個(gè)維度的概率分布是什么樣的?

如果我們沿著這個(gè)思路進(jìn)行下去,就會(huì)陷入泥潭,我們可以巧妙地避開(kāi)這些問(wèn)題,關(guān)鍵就在于讓他們繼續(xù)保持“神秘”!

我們不關(guān)心每一個(gè)維度代表什么含義,我們只假定存在這么一群相互獨(dú)立的變量,維度我們也回到之前的討論,我們雖然不知道有多少,我們可以假定有n個(gè)主要因素,n可以定的大一點(diǎn),比如假設(shè)有4個(gè)主因素,而我們假定有10個(gè),那么最后訓(xùn)練出來(lái),可能有6個(gè)長(zhǎng)期是0。最后的問(wèn)題需要詳細(xì)討論一下,比較復(fù)雜,就是z的概率分布和取值問(wèn)題。

既然z是什么都不知道,我們是不是可以尋找一組新的神秘變量w,讓這個(gè)w服從標(biāo)準(zhǔn)正態(tài)分布N(0,I)。I是單位矩陣,然后這個(gè)w可以通過(guò)n個(gè)復(fù)雜函數(shù),轉(zhuǎn)換成z呢?有了神經(jīng)網(wǎng)絡(luò)這些也是可行的,假設(shè)這些復(fù)雜函數(shù)分別是h1,h2,...,hn,那么有z1=h1(w1),...,zn=hn(wn)。而z的具體分布是什么,取值范圍是多少我們也不用關(guān)心了,反正由一個(gè)神經(jīng)網(wǎng)絡(luò)去算?;叵胍幌?img alt="" src="http://fs10.chuandong.com/upload/images///20180612/F330D5CBCC0084ABm.jpg" style="width: 335px; height: 35px;">,我們可以想象,如果f(z;θ)是一個(gè)多層神經(jīng)網(wǎng)絡(luò),那么前幾層就用來(lái)將標(biāo)準(zhǔn)正態(tài)分布的w變成真正的隱變量z,后面幾層才是將z映射成x,但由于w和z是一一對(duì)應(yīng)關(guān)系,所以w某種意義上說(shuō)也是一股神秘力量。就演化成w和x的關(guān)系了,既然w也是神秘變量,我們就還是叫回z,把那個(gè)之前我們認(rèn)為的神秘變量z忘掉吧。

好,更加波瀾壯闊的歷程要開(kāi)始了,請(qǐng)坐好。

我們現(xiàn)在已經(jīng)有了

我們現(xiàn)在就可以專心攻擊f了,由于f是一個(gè)神經(jīng)網(wǎng)絡(luò),我們就可以梯度下降了。但是另一個(gè)關(guān)鍵點(diǎn)在于我們?cè)趺粗肋@個(gè)f生成的樣本,和DX更加像呢?如果這個(gè)問(wèn)題解決不了,我們根本都不知道我們的目標(biāo)函數(shù)是什么。

3.設(shè)定目標(biāo)函數(shù)

我們先來(lái)定義個(gè)函數(shù)Q(z|DX),數(shù)據(jù)集DX的發(fā)生,z的概率密度函數(shù),即如果DX發(fā)生,Q(z|DX)就是z的概率密度函數(shù),比如一個(gè)數(shù)字圖像0,z隱式代表0的概率就很大,而那些代表1的概率就很小。如果我們有辦法搞到這個(gè)Q的函數(shù)表示,我們就可以直接使用DX算出z的最佳值了。為什么會(huì)引入Q呢?其實(shí)道理很簡(jiǎn)單,如果DX是x這個(gè)變量直接生成的,要想找回x的模型,就要引入一個(gè)概率密度函數(shù)T(x|DX),亦即針對(duì)DX,我們要找到一個(gè)x的最佳概率密度函數(shù)。

現(xiàn)在的問(wèn)題就變成了,我們可以根據(jù)DX計(jì)算出Q(z|DX)來(lái)讓他盡量與理想的Pz(z|DX)盡量的趨同,這就要引入更加高深的功夫了——相對(duì)熵,也叫KL散度(Kullback-Leiblerdivergence,用D表示)。

這里不再給P起名,其實(shí)Pz(z)直接寫(xiě)成P(z)也是沒(méi)有任何問(wèn)題的,前面只是為了區(qū)分概念,括號(hào)中的內(nèi)容已經(jīng)足以表意。

因?yàn)閘ogP(DX)與z變量無(wú)關(guān),直接就可以提出來(lái)了,進(jìn)而得到閃閃發(fā)光的公式(2):

公式(2)是VAE的核心公式,我們接下來(lái)分析一個(gè)這個(gè)公式。

公式的左邊有我們的優(yōu)化目標(biāo)P(DX),同時(shí)攜帶了一個(gè)誤差項(xiàng),這個(gè)誤差項(xiàng)反映了給定DX的情況下的真實(shí)分布Q與理想分布P的相對(duì)熵,當(dāng)Q完全符合理想分布時(shí),這個(gè)誤差項(xiàng)就為0,而等式右邊就是我們可以使用梯度下降進(jìn)行優(yōu)化的,這里面的Q(z|DX)特別像一個(gè)DX->z的編碼器,P(DX|z)特別像z->DX的解碼器,這就是VAE架構(gòu)也被稱為自編碼器的原因。

由于DX早已不再有分歧,我們?cè)谶@里把所有的DX都換成了X。

我們現(xiàn)在有公式(2)的拆分:

還有下面這些:

我們?cè)倜鞔_一下每個(gè)概率的含義:

P(X)——當(dāng)前這個(gè)數(shù)據(jù)集發(fā)生的概率,但是他的概率分布我們是不知道,比如,X的空間是一個(gè)一維有限空間,比如只能取值0-9的整數(shù),而我們的X={0,1,2,3,4},那么當(dāng)概率分布是均勻的時(shí)候,P(X)就是0.5,但是如果不是這個(gè)分布,就不好說(shuō)是什么了,沒(méi)準(zhǔn)是0.1,0.01,都有可能。P(X)是一個(gè)函數(shù),就好像是一個(gè)人,當(dāng)你問(wèn)他X=某個(gè)值的時(shí)候,他能告訴發(fā)生的概率。

P(z)——這個(gè)z是我們后來(lái)引入的那個(gè)w,還記得嗎?他們都已經(jīng)歸順了正態(tài)分布,如果z是一維的,那他就是標(biāo)準(zhǔn)正態(tài)分布N(0,I)。

P(X|z)——這個(gè)函數(shù)的含義是如果z給定一個(gè)取值,那么就知道X取某個(gè)值的概率,還是舉個(gè)例子,z是一個(gè)神奇的變量,可以控制在計(jì)算機(jī)屏幕上出現(xiàn)整個(gè)屏幕的紅色并且控制其灰度,z服從N(0,1)分布,當(dāng)z=0時(shí)代表純正的紅色,z越偏離0,屏幕的紅色就越深,那么P(X|z)就表示z等于某個(gè)值時(shí)X=另一值的概率,由于計(jì)算機(jī)是精確控制的,沒(méi)有額外的隨機(jī)因素,所以如果z=0能夠?qū)е耎取一個(gè)固定色值0xFF0000,那么,,,但如果現(xiàn)實(shí)世界比較復(fù)雜附加其他的隨機(jī)因素,那么就可能在z確定出來(lái)的X基礎(chǔ)值之上做隨機(jī)了。這就是我們之前討論的,大數(shù)定理,。f(z)就是X與z直接關(guān)系的寫(xiě)照。

P(z|X)——當(dāng)X發(fā)生時(shí),z的概率是多少呢?回到剛才計(jì)算機(jī)屏幕的例子,就非常簡(jiǎn)單了,但是由于概率的引入,X|z可以簡(jiǎn)化成高斯關(guān)系,相反,也可以簡(jiǎn)化高斯關(guān)系。這個(gè)解釋對(duì)下面的Q同樣適用。

Q(z)——對(duì)于Q的分析和P的分析是一樣的,只不過(guò)Q和P的不同時(shí),我們假定P是那個(gè)理想中的分布,是真正決定X的最終構(gòu)成的背后真實(shí)力量,而Q是我們的親兒子,試著弄出來(lái)的贗品,并且希望在現(xiàn)實(shí)世界通過(guò)神經(jīng)網(wǎng)絡(luò),讓這個(gè)贗品能夠嘗試控制產(chǎn)生X。當(dāng)這個(gè)Q真的行為和我們理想中的P一模一樣的時(shí)候,Q就是上等的贗品了,甚至可以打出如假包換的招牌。我們的P已經(jīng)簡(jiǎn)化成N(0,I),就意味著Q只能向N(0,I)靠攏。

Q(z|X)——根據(jù)現(xiàn)實(shí)中X和Q的關(guān)系推導(dǎo)出的概率函數(shù),當(dāng)X發(fā)生時(shí),對(duì)應(yīng)的z取值的概率分布情況。

Q(X|z)——現(xiàn)實(shí)中z發(fā)生時(shí),取值X的概率。

我們的目標(biāo)是優(yōu)化P(X),但是我們不知道他的分布,所以根本沒(méi)法優(yōu)化,這就是我們沒(méi)有任何先驗(yàn)知識(shí)。所以有了公式(2),左邊第二項(xiàng)是P(z|X)和Q(z|X)的相對(duì)熵,意味著X發(fā)生時(shí)現(xiàn)實(shí)的分布應(yīng)該與我們理想的分布趨同才對(duì),所以整個(gè)左邊都是我們的優(yōu)化目標(biāo),只要左邊越大就越好,那么右邊的目標(biāo)就是越大越好。

右邊第一項(xiàng):就是針對(duì)面對(duì)真實(shí)的z的分布情況(依賴Q(z|X),由X->z的映射關(guān)系決定),算出來(lái)的X的分布,類(lèi)似于根據(jù)z重建X的過(guò)程。

右邊第二項(xiàng):就是讓根據(jù)X重建的z與真實(shí)的z盡量趨近,由于P(z)是明確的N(0,I),而Q(z|X)是也是正態(tài)分布,其實(shí)就是要讓Q(z|X)趨近與標(biāo)準(zhǔn)正態(tài)分布。

現(xiàn)在我們對(duì)這個(gè)公式的理解更加深入了。接下來(lái),我們要進(jìn)行實(shí)現(xiàn)的工作。

4.實(shí)現(xiàn)

針對(duì)右邊兩項(xiàng)分別實(shí)現(xiàn)

第二項(xiàng)是Q(z|X)與N(0,I)的相對(duì)熵,X->z構(gòu)成了編碼器部分。

Q(z|x)是正態(tài)分布,兩個(gè)正態(tài)分布的KL計(jì)算公式如下:

det是行列式,tr是算矩陣的秩,d是I的秩即d=tr(I)。

變成具體的神經(jīng)網(wǎng)絡(luò)和矩陣運(yùn)算,還需要進(jìn)一步變化該式:

OK,這個(gè)KL我們也會(huì)計(jì)算了,還有一個(gè)事情就是編碼器網(wǎng)絡(luò),都使用神經(jīng)網(wǎng)絡(luò)來(lái)編碼就可以了。

第一項(xiàng)是代表依賴z重建出來(lái)的數(shù)據(jù)與X盡量地相同,z->X重建X構(gòu)成了解碼器部分,整個(gè)重建的關(guān)鍵就是f函數(shù),對(duì)我們來(lái)說(shuō)就是建立一個(gè)解碼器神經(jīng)網(wǎng)絡(luò)。

到此,整個(gè)實(shí)現(xiàn)的細(xì)節(jié)就全都展現(xiàn)在下面這張圖里了

由于這個(gè)網(wǎng)絡(luò)傳遞結(jié)構(gòu)的一個(gè)環(huán)節(jié)是隨機(jī)采樣,導(dǎo)致無(wú)法反向傳播,所以聰明的前輩又將這個(gè)結(jié)構(gòu)優(yōu)化成了這樣:

這樣就可以對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行反向傳播訓(xùn)練了。

具體的實(shí)現(xiàn)代碼,我實(shí)現(xiàn)在了這里:

https://github.com/vaxin/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/variational_autoencoder.py

里面的每一步,都有配合本文章的對(duì)照解釋。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:淺談工業(yè)以太網(wǎng)的實(shí)時(shí)性

下一篇:一文深度了解超聲波傳感器的...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.connectcrack.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)