時(shí)間:2018-07-04 17:02:25來源:網(wǎng)絡(luò)轉(zhuǎn)載
眾所周知,在實(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ì)上說,如果你有一組輸入及其各自的目標(biāo)標(biāo)簽,你可以試著去了解特定目標(biāo)的特定標(biāo)簽概率。當(dāng)然,現(xiàn)實(shí)中圖像映射真的會(huì)如此美好嗎?在這篇文章中,我將探索變分自編碼器(VAE),以更深入了解未標(biāo)記數(shù)據(jù)的世界。該模型在對(duì)沒有標(biāo)簽的圖像集合進(jìn)行訓(xùn)練后將產(chǎn)生獨(dú)特的圖像。
自動(dòng)編碼器將輸入數(shù)據(jù)順序地解構(gòu)為隱藏表示,并使用這些表示來順序地重構(gòu)與它們的原始內(nèi)容相似的輸出。它本質(zhì)上是數(shù)據(jù)特定的數(shù)據(jù)壓縮,而這意味著它只能對(duì)類似于已經(jīng)它訓(xùn)練的數(shù)據(jù)進(jìn)行壓縮。當(dāng)然,自動(dòng)編碼器也被公認(rèn)為是有損耗的,因此相較于原始輸入,解壓縮輸出結(jié)果會(huì)稍微降低一些。那么大家可能會(huì)有所疑問,如果它們會(huì)造成質(zhì)量損失,為什么還那么實(shí)用呢?這是一個(gè)很好的問題,事實(shí)證明,它們對(duì)于數(shù)據(jù)去噪是非常有用的,即我們?cè)谶@里訓(xùn)練一個(gè)自動(dòng)編碼器,從自身?yè)p壞版本中重構(gòu)輸入,這樣它就可以消除類似的損壞數(shù)據(jù)。
首先,我們來談?wù)勜惾~斯推理(Bayesianinference)。所有閱讀這篇文章的人可能都知道深度學(xué)習(xí),以及談到近似復(fù)雜函數(shù)時(shí)它的有效性,然而貝葉斯推理提供了一個(gè)獨(dú)特的框架來解釋不確定性,所有的不確定性都是用概率表示的。這是有道理的,如果你仔細(xì)想想,在任何給定的時(shí)間,都有證據(jù)支持或反對(duì)我們已知的事物,這些證據(jù)可以被用來創(chuàng)造一個(gè)新的概率。再進(jìn)一步,當(dāng)我們學(xué)習(xí)新的東西時(shí),我們必須考慮我們已經(jīng)知道的,并將新的證據(jù)加入到考慮范圍內(nèi),創(chuàng)造一個(gè)新的概率。貝葉斯理論基本上是用數(shù)學(xué)方法描述這個(gè)概念的。
VAE就是這些想法的產(chǎn)物。從貝葉斯的角度來看,我們可以將VAE的輸入、隱藏表示和重構(gòu)輸出視為有向圖形模型中的概率隨機(jī)變量。假設(shè)它包含一些數(shù)據(jù)的特定概率模型,x和潛在/隱藏變量z,我們便可以寫出模型的聯(lián)合概率,如下所示:
模型的聯(lián)合概率
給定模型生成的一個(gè)字符,我們不知道隱形變量的設(shè)置是如何生成這個(gè)字符的,我們的模型本質(zhì)上就是隨機(jī)的!
VAE由3個(gè)主要部分組成:
?編碼器
?解碼器
?損失函數(shù)
給定輸入x,假設(shè)我們有一個(gè)28×28的手寫數(shù)字圖像,它可以達(dá)到784維度,其中每個(gè)像素都是一維的?,F(xiàn)在,這將會(huì)編碼到一個(gè)潛在/隱藏的表示空間,而這將要比784少很多。我們現(xiàn)在可以采樣高斯概率密度來獲得表示的噪聲值。
是不是很酷?下面我們就用代碼來將這個(gè)表示出來吧。
首先,我們導(dǎo)入庫(kù)并找到我們的超參數(shù)。
接下來,初始化編碼器網(wǎng)絡(luò)。該網(wǎng)絡(luò)的工作是將輸入映射到隱藏的分布參數(shù)中。我們接受輸入,并通過ReLU(壓縮維度的經(jīng)典非線性激活函數(shù))的密集完全連接層發(fā)送它。下一步,我們將輸入數(shù)據(jù)轉(zhuǎn)換為隱藏空間中的兩個(gè)參數(shù)。我們使用密集,完全連接層-zmean和zlogsigma來預(yù)定義大小。
解碼器將“z”作為其輸入,并將參數(shù)輸出到數(shù)據(jù)的概率分布中。我們假設(shè)每個(gè)像素是1或0(黑色或白色),現(xiàn)在我們可以使用伯努利分布,因?yàn)樗鼤?huì)將“成功”定義為二進(jìn)制值來表示單個(gè)像素。因此,解碼器將獲得一個(gè)數(shù)字的潛在/隱藏表示以作為其輸入,并且它會(huì)輸出784個(gè)伯努利參數(shù),每個(gè)像素一個(gè),所以在0和1之間有784個(gè)值。
我們將使用z_mean和z_log_var,通過定義采樣函數(shù),從隱藏/潛在正態(tài)分布中隨機(jī)抽取新的類似點(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)過程中丟失。
確實(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è)例子來說就是,如果兩個(gè)不同的人同時(shí)寫出數(shù)字3,那么這些表示結(jié)果可能會(huì)看起來很不一樣,因?yàn)椴煌娜藢懙慕Y(jié)果當(dāng)然會(huì)不一樣。這可能是一個(gè)不盡如人意的結(jié)果,而正則化項(xiàng)的任務(wù)就是拯救“不如意”!我們對(duì)不良行為進(jìn)行懲罰(如這里的例子),并確保類似的表示是緊密相連的。我們可以將總損失函數(shù)定義為重構(gòu)項(xiàng)和KL的散度正則化項(xiàng)的總和。
現(xiàn)在來到訓(xùn)練部分,我們通常會(huì)使用梯度下降來訓(xùn)練這個(gè)模型,以優(yōu)化我們對(duì)編碼器和解碼器參數(shù)的損失。但是我們?nèi)绾螌?duì)隨機(jī)確定的變量的參數(shù)進(jìn)行衍生?
原來,我們已經(jīng)將隨機(jī)性建立在我們的模型本身上了?,F(xiàn)在,梯度下降通常期望一個(gè)給定的輸入總是返回一個(gè)固定參數(shù)組的相同輸出。在我們這種情況下唯一的隨機(jī)來源將是輸入。那么我們?nèi)绾谓鉀Q這個(gè)問題呢?我們重新確定參數(shù)!我們將對(duì)樣本進(jìn)行重新確定參數(shù),使得隨機(jī)性可以獨(dú)立于參數(shù)。
我們將定義一個(gè)取決于參數(shù)確定性的函數(shù),因此我們可以通過引入隨機(jī)變量將隨機(jī)性注入到模型中。編碼器將生成平均值向量和標(biāo)準(zhǔn)偏差向量,而不是生成實(shí)數(shù)值的向量。我們采用涉及z的函數(shù)關(guān)于其分布參數(shù)的導(dǎo)數(shù)。我們將模型的優(yōu)化器定義為rmsprop,并將損失函數(shù)定義為vae_loss。
我們通過導(dǎo)入MNIST數(shù)據(jù)集并將它們饋送到我們的模型中,為給定數(shù)量的訓(xùn)練次數(shù)和批量大小開始下面的訓(xùn)練。
下面我們畫出二維平面上的鄰域。每個(gè)顏色聚類用一個(gè)數(shù)字表示,而閉合聚類本質(zhì)上是與結(jié)構(gòu)相似的數(shù)字。
數(shù)字表示法
另一種表示方法是通過掃描潛在計(jì)劃(latentplan)生成數(shù)字,定期采樣潛點(diǎn),并為這些點(diǎn)生成相應(yīng)的數(shù)字,如下所示:
生成的數(shù)字
這在某些程度上讓你感到震撼!
所以這個(gè)練習(xí)在本質(zhì)上有三個(gè)關(guān)鍵的要點(diǎn):
?變分編碼器允許我們通過執(zhí)行無監(jiān)督學(xué)習(xí)以生成數(shù)據(jù)。
?VAE=貝葉斯推理+深度學(xué)習(xí)。
?重參數(shù)化使我們能夠通過網(wǎng)絡(luò)進(jìn)行反向傳播,隨機(jī)獨(dú)立的參數(shù)使我們能夠得出梯度。
查看github上的代碼,可獲得完整代碼資源:https://github.com/vvkv/Variational-Auto-Encoders/blob/master/Variational%2BAuto%2BEncoders.ipynb
標(biāo)簽:
中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
相關(guān)資訊
產(chǎn)品新聞
更多>新品發(fā)布:CD300系列總線型伺服驅(qū)動(dòng)器
2024-10-31
2024-10-31
2024-10-31
新勢(shì)能 新期待|維智B1L直線伺服驅(qū)動(dòng)器
2024-10-31
纖薄之間,化繁為簡(jiǎn)|合信全新simple系...
2024-10-29
2024-10-18
推薦專題
更多>