技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 未標(biāo)注的數(shù)據(jù)如何處理?一文讀懂變分自編碼器VAE

未標(biāo)注的數(shù)據(jù)如何處理?一文讀懂變分自編碼器VAE

時(shí)間:2018-07-04 17:02:25來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)載

導(dǎo)語(yǔ):?這篇文章中,我將探索變分自編碼器(VAE),以更深入了解未標(biāo)記數(shù)據(jù)的世界。該模型在對(duì)沒(méi)有標(biāo)簽的圖像集合進(jìn)行訓(xùn)練后將產(chǎn)生獨(dú)特的圖像。

眾所周知,在實(shí)驗(yàn)中我們會(huì)遇到各種各樣的數(shù)據(jù),那么想象一下,如果我們遇到?jīng)]有標(biāo)簽的數(shù)據(jù)會(huì)發(fā)生什么呢?大多數(shù)深度學(xué)習(xí)技術(shù)需要干凈的標(biāo)注數(shù)據(jù),但這一點(diǎn)現(xiàn)實(shí)嗎?從技術(shù)本質(zhì)上說(shuō),如果你有一組輸入及其各自的目標(biāo)標(biāo)簽,你可以試著去了解特定目標(biāo)的特定標(biāo)簽概率。當(dāng)然,現(xiàn)實(shí)中圖像映射真的會(huì)如此美好嗎?在這篇文章中,我將探索變分自編碼器(VAE),以更深入了解未標(biāo)記數(shù)據(jù)的世界。該模型在對(duì)沒(méi)有標(biāo)簽的圖像集合進(jìn)行訓(xùn)練后將產(chǎn)生獨(dú)特的圖像。

自動(dòng)編碼器將輸入數(shù)據(jù)順序地解構(gòu)為隱藏表示,并使用這些表示來(lái)順序地重構(gòu)與它們的原始內(nèi)容相似的輸出。它本質(zhì)上是數(shù)據(jù)特定的數(shù)據(jù)壓縮,而這意味著它只能對(duì)類(lèi)似于已經(jīng)它訓(xùn)練的數(shù)據(jù)進(jìn)行壓縮。當(dāng)然,自動(dòng)編碼器也被公認(rèn)為是有損耗的,因此相較于原始輸入,解壓縮輸出結(jié)果會(huì)稍微降低一些。那么大家可能會(huì)有所疑問(wèn),如果它們會(huì)造成質(zhì)量損失,為什么還那么實(shí)用呢?這是一個(gè)很好的問(wèn)題,事實(shí)證明,它們對(duì)于數(shù)據(jù)去噪是非常有用的,即我們?cè)谶@里訓(xùn)練一個(gè)自動(dòng)編碼器,從自身?yè)p壞版本中重構(gòu)輸入,這樣它就可以消除類(lèi)似的損壞數(shù)據(jù)。

首先,我們來(lái)談?wù)勜惾~斯推理(Bayesianinference)。所有閱讀這篇文章的人可能都知道深度學(xué)習(xí),以及談到近似復(fù)雜函數(shù)時(shí)它的有效性,然而貝葉斯推理提供了一個(gè)獨(dú)特的框架來(lái)解釋不確定性,所有的不確定性都是用概率表示的。這是有道理的,如果你仔細(xì)想想,在任何給定的時(shí)間,都有證據(jù)支持或反對(duì)我們已知的事物,這些證據(jù)可以被用來(lái)創(chuàng)造一個(gè)新的概率。再進(jìn)一步,當(dāng)我們學(xué)習(xí)新的東西時(shí),我們必須考慮我們已經(jīng)知道的,并將新的證據(jù)加入到考慮范圍內(nèi),創(chuàng)造一個(gè)新的概率。貝葉斯理論基本上是用數(shù)學(xué)方法描述這個(gè)概念的。

VAE就是這些想法的產(chǎn)物。從貝葉斯的角度來(lái)看,我們可以將VAE的輸入、隱藏表示和重構(gòu)輸出視為有向圖形模型中的概率隨機(jī)變量。假設(shè)它包含一些數(shù)據(jù)的特定概率模型,x和潛在/隱藏變量z,我們便可以寫(xiě)出模型的聯(lián)合概率,如下所示:

模型的聯(lián)合概率

給定模型生成的一個(gè)字符,我們不知道隱形變量的設(shè)置是如何生成這個(gè)字符的,我們的模型本質(zhì)上就是隨機(jī)的!

VAE由3個(gè)主要部分組成:

?編碼器

?解碼器

?損失函數(shù)

給定輸入x,假設(shè)我們有一個(gè)28×28的手寫(xiě)數(shù)字圖像,它可以達(dá)到784維度,其中每個(gè)像素都是一維的?,F(xiàn)在,這將會(huì)編碼到一個(gè)潛在/隱藏的表示空間,而這將要比784少很多。我們現(xiàn)在可以采樣高斯概率密度來(lái)獲得表示的噪聲值。

是不是很酷?下面我們就用代碼來(lái)將這個(gè)表示出來(lái)吧。

首先,我們導(dǎo)入庫(kù)并找到我們的超參數(shù)。

接下來(lái),初始化編碼器網(wǎng)絡(luò)。該網(wǎng)絡(luò)的工作是將輸入映射到隱藏的分布參數(shù)中。我們接受輸入,并通過(guò)ReLU(壓縮維度的經(jīng)典非線(xiàn)性激活函數(shù))的密集完全連接層發(fā)送它。下一步,我們將輸入數(shù)據(jù)轉(zhuǎn)換為隱藏空間中的兩個(gè)參數(shù)。我們使用密集,完全連接層-zmean和zlogsigma來(lái)預(yù)定義大小。

解碼器將“z”作為其輸入,并將參數(shù)輸出到數(shù)據(jù)的概率分布中。我們假設(shè)每個(gè)像素是1或0(黑色或白色),現(xiàn)在我們可以使用伯努利分布,因?yàn)樗鼤?huì)將“成功”定義為二進(jìn)制值來(lái)表示單個(gè)像素。因此,解碼器將獲得一個(gè)數(shù)字的潛在/隱藏表示以作為其輸入,并且它會(huì)輸出784個(gè)伯努利參數(shù),每個(gè)像素一個(gè),所以在0和1之間有784個(gè)值。

我們將使用z_mean和z_log_var,通過(guò)定義采樣函數(shù),從隱藏/潛在正態(tài)分布中隨機(jī)抽取新的類(lèi)似點(diǎn)。以下代碼塊中的epsilon是一個(gè)隨機(jī)正態(tài)張量。

一旦我們得到z,我們可以將其提供給我們的解碼器,解碼器會(huì)將這些潛在空間點(diǎn)映射回原始輸入數(shù)據(jù)。因此,為了構(gòu)建一個(gè)解碼器,我們首先用兩個(gè)完全連接層及其它們各自的激活函數(shù)對(duì)其進(jìn)行初始化。因?yàn)閿?shù)據(jù)是從一個(gè)小的維度提取到一個(gè)較大維數(shù),所以其中一些會(huì)在重構(gòu)過(guò)程中丟失。

確實(shí)很酷?但是這個(gè)“一些”到底是多少呢?為了獲取準(zhǔn)確值,我們將建立損失函數(shù)對(duì)其進(jìn)行精確測(cè)量。下面的第一項(xiàng)是測(cè)量重構(gòu)損失。如果解碼器輸出在重建數(shù)據(jù)方面很糟糕,那么損失方面的成本就會(huì)相當(dāng)大。下一個(gè)項(xiàng)是正則化項(xiàng),意味著它可以保持每個(gè)數(shù)字的表示盡可能多樣化。所以舉個(gè)例子來(lái)說(shuō)就是,如果兩個(gè)不同的人同時(shí)寫(xiě)出數(shù)字3,那么這些表示結(jié)果可能會(huì)看起來(lái)很不一樣,因?yàn)椴煌娜藢?xiě)的結(jié)果當(dāng)然會(huì)不一樣。這可能是一個(gè)不盡如人意的結(jié)果,而正則化項(xiàng)的任務(wù)就是拯救“不如意”!我們對(duì)不良行為進(jìn)行懲罰(如這里的例子),并確保類(lèi)似的表示是緊密相連的。我們可以將總損失函數(shù)定義為重構(gòu)項(xiàng)和KL的散度正則化項(xiàng)的總和。

現(xiàn)在來(lái)到訓(xùn)練部分,我們通常會(huì)使用梯度下降來(lái)訓(xùn)練這個(gè)模型,以?xún)?yōu)化我們對(duì)編碼器和解碼器參數(shù)的損失。但是我們?nèi)绾螌?duì)隨機(jī)確定的變量的參數(shù)進(jìn)行衍生?

原來(lái),我們已經(jīng)將隨機(jī)性建立在我們的模型本身上了。現(xiàn)在,梯度下降通常期望一個(gè)給定的輸入總是返回一個(gè)固定參數(shù)組的相同輸出。在我們這種情況下唯一的隨機(jī)來(lái)源將是輸入。那么我們?nèi)绾谓鉀Q這個(gè)問(wèn)題呢?我們重新確定參數(shù)!我們將對(duì)樣本進(jìn)行重新確定參數(shù),使得隨機(jī)性可以獨(dú)立于參數(shù)。

我們將定義一個(gè)取決于參數(shù)確定性的函數(shù),因此我們可以通過(guò)引入隨機(jī)變量將隨機(jī)性注入到模型中。編碼器將生成平均值向量和標(biāo)準(zhǔn)偏差向量,而不是生成實(shí)數(shù)值的向量。我們采用涉及z的函數(shù)關(guān)于其分布參數(shù)的導(dǎo)數(shù)。我們將模型的優(yōu)化器定義為rmsprop,并將損失函數(shù)定義為vae_loss。

我們通過(guò)導(dǎo)入MNIST數(shù)據(jù)集并將它們饋送到我們的模型中,為給定數(shù)量的訓(xùn)練次數(shù)和批量大小開(kāi)始下面的訓(xùn)練。

下面我們畫(huà)出二維平面上的鄰域。每個(gè)顏色聚類(lèi)用一個(gè)數(shù)字表示,而閉合聚類(lèi)本質(zhì)上是與結(jié)構(gòu)相似的數(shù)字。

數(shù)字表示法

另一種表示方法是通過(guò)掃描潛在計(jì)劃(latentplan)生成數(shù)字,定期采樣潛點(diǎn),并為這些點(diǎn)生成相應(yīng)的數(shù)字,如下所示:

生成的數(shù)字

這在某些程度上讓你感到震撼!

所以這個(gè)練習(xí)在本質(zhì)上有三個(gè)關(guān)鍵的要點(diǎn):

?變分編碼器允許我們通過(guò)執(zhí)行無(wú)監(jiān)督學(xué)習(xí)以生成數(shù)據(jù)。

?VAE=貝葉斯推理+深度學(xué)習(xí)。

?重參數(shù)化使我們能夠通過(guò)網(wǎng)絡(luò)進(jìn)行反向傳播,隨機(jī)獨(dú)立的參數(shù)使我們能夠得出梯度。

查看github上的代碼,可獲得完整代碼資源:https://github.com/vvkv/Variational-Auto-Encoders/blob/master/Variational%2BAuto%2BEncoders.ipynb

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:選擇差壓傳感器需要注意的6個(gè)...

下一篇:詳細(xì)解析工業(yè)機(jī)器人控制系統(tǒng)

中國(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.treenowplaneincome.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é)任。