电竞比分网-中国电竞赛事及体育赛事平台

分享

【干貨】深入理解變分自編碼器

 taotao_2016 2021-02-19

【導(dǎo)讀】自編碼器是一種非常直觀的無監(jiān)督神經(jīng)網(wǎng)絡(luò)方法,由編碼器和解碼器兩部分構(gòu)成,自編碼器近年來很受研究人員的歡迎。本文是機器學(xué)習(xí)工程師Jeremy撰寫的一篇非常棒的博文,介紹了變分自編碼器理論基礎(chǔ)和工作原理,通過人臉示例幫助讀者更直觀的理解。本文強調(diào)了變分自編碼器的理論推導(dǎo)和實現(xiàn)細節(jié),在文末展示了變分自編碼器作為生成模型的輸出結(jié)果。希望深入理解變分自編碼器的讀者不妨讀一讀。

Variational autoencoders 

變分自編碼器

自編碼器是發(fā)現(xiàn)數(shù)據(jù)的一些隱狀態(tài)(不完整,稀疏,去噪,收縮)表示的模型。更具體地說,輸入數(shù)據(jù)被轉(zhuǎn)換成一個編碼向量,其中每個維度表示從數(shù)據(jù)學(xué)到的屬性。最重要的是編碼器為每個編碼維度輸出單個值, 解碼器隨后接收這些值并嘗試重新創(chuàng)建原始輸入。

變分自編碼器(VAE)提供了描述隱空間觀察的概率方式。因此,我們不需要構(gòu)建一個輸出單個值來描述每個隱狀態(tài)屬性的編碼器,而是要用編碼器描述每個隱屬性的概率分布。

直覺



舉個例子,假設(shè)我們已經(jīng)在一個大型人臉數(shù)據(jù)集上訓(xùn)練了一個Autoencoder模型, encoder的維度是6。理想情況下, 我們希望自編碼器學(xué)習(xí)面部的描述性屬性,比如膚色,人是否戴眼鏡,從而能夠用一些特征值來表示這些屬性。

在上面的示例中,我們使用單個值來描述輸入圖像的隱屬性。但是,我們其實更愿意用一個分布去表示每個隱屬性。比如, 輸入蒙娜麗莎的照片,我們很難非常自信的為微笑屬性分配一個具體值, 但是用了變分自編碼器, 我們有能比較自信的說微笑屬性服從什么分布。

通過這種方法,我們現(xiàn)在將給定輸入的每個隱屬性表示為概率分布。當(dāng)從隱狀態(tài)解碼時,我們將從每個隱狀態(tài)分布中隨機采樣,來生成向量作為解碼器的輸入。

注意:對于變分自編碼器,編碼器有時被稱為識別模型,而解碼器有時被稱為生成模型。

通過構(gòu)造我們的編碼器來輸出一系列可能的值(統(tǒng)計分布),然后隨機采樣該值作為解碼器的輸入,我們能夠?qū)W習(xí)到一個連續(xù),平滑的隱空間。因此,在隱空間中彼此相鄰的值應(yīng)該與非常類似的重建相對應(yīng)。而從隱分布中采樣到的任何樣本,我們都希望解碼器理解, 并準(zhǔn)確重構(gòu)出來。

統(tǒng)計動機




假設(shè)存在一些生成觀測值的隱藏變量。

我們只能看到,但我們想推斷的特征。換句話說,我們想計算。

不幸的是,計算是相當(dāng)困難的。

這通常是一個棘手的問題。但是,我們可以應(yīng)用變分推斷來估計這個值。

我們想用一個比較簡單的分布來近似。如果我們可以確定的參數(shù),又能保證它與非常相似,有時候就可以用來作近似推理。

KL散度是衡量兩個概率分布之間的差異的度量。因此,如果我們想確保類似,我們可以使兩個分布之間的KL散度最小化。

Ali Ghodsi博士在這里演示了一個完整的推導(dǎo),結(jié)果表明最小化上述表達式即最大化以下表達式: 

第一項代表重建的似然估計,第二項確保我們學(xué)習(xí)到的分布q與真實的先驗分布p相似性。

https://www./watch?v=uaaqyVS9-rM&feature=youtu.be&t=19m42s

為了重新審視我們的圖模型,我們可以使用來推斷用于生成觀察的可能隱變量(即隱狀態(tài))。我們可以進一步將此模型構(gòu)造成神經(jīng)網(wǎng)絡(luò)架構(gòu),其中編碼器學(xué)習(xí)從到的映射,并且解碼器模型學(xué)習(xí)從到的映射。

這個網(wǎng)絡(luò)的損失函數(shù)將包括兩個項,一個懲罰重建誤差(可以認為是最大化重建可能性,如前所述),第二項鼓勵我們學(xué)習(xí)的分布與真實的分布相似。對于隱空間的每個維度,我們假設(shè)先驗分布遵循單位高斯分布。

實現(xiàn)



前面的章節(jié),建立了變分自編碼器結(jié)構(gòu)的統(tǒng)計動機。在本節(jié)中,我將提供自己構(gòu)建這種模型的實現(xiàn)細節(jié)。

與在標(biāo)準(zhǔn)自編碼器中直接輸出隱狀態(tài)值不同,VAE的編碼器模型的輸出描述的是每個維度分布。既然我們假設(shè)先驗p(z)服從正態(tài)分布,我們將輸出兩個向量來描述隱狀態(tài)分布的均值和方差。如果我們要構(gòu)建一個真正的多元高斯模型,我們需要定義一個協(xié)方差矩陣來描述每個維度是如何相關(guān)的。但是,我們將做一個簡化的假設(shè),即我們的協(xié)方差矩陣只在對角線上有非零值,這允許我們用簡單的向量來描述這些信息

然后,我們的解碼器將通過從這些定義的分布中抽樣來生成一個隱向量,并開始重建原始輸入。

但是,這個抽樣過程需要額外的關(guān)注。在訓(xùn)練模型時,我們使用反向傳播來計算網(wǎng)絡(luò)中每個參數(shù)與最終輸出損失之間的關(guān)系。但是,我們無法為隨機抽樣過程做到這一點。幸運的是,我們可以利用一種稱為“Reparameterization ”的聰明想法,即從單位高斯隨機抽樣ε,然后將隨機抽樣的ε乘以隱分布的均值μ,并用隱分布的方差σ對其進行縮放。

通過這種Reparameterization ,我們現(xiàn)在可以優(yōu)化分布的參數(shù),同時仍然保持從該分布隨機采樣的能力。

注意:為了處理網(wǎng)絡(luò)可能學(xué)到的σ為負值這一事實,我們通常會通過網(wǎng)絡(luò)學(xué)習(xí)logσ并且指數(shù)化這個值來得到隱分布的方差。

隱空間的可視化



為了理解變分自編碼器模型的含義及其與標(biāo)準(zhǔn)自編碼器體系結(jié)構(gòu)的差異,檢驗隱空間是必要的, 這篇博客文章介紹了關(guān)于這個主題的一個很好的討論,我將在本節(jié)中對此進行總結(jié)。

變分自編碼器的主要優(yōu)點是我們能夠?qū)W習(xí)輸入數(shù)據(jù)的平滑隱狀態(tài)表示。對于標(biāo)準(zhǔn)的自編碼器,我們只需要學(xué)習(xí)一個編碼,它允許我們重現(xiàn)輸入。正如你在最左邊的圖中可以看到的,只關(guān)注重建損失確實允許我們分離出不同的類(在這種情況下是MNIST數(shù)字),這允許我們的解碼器模型能夠重現(xiàn)原始手寫數(shù)字,但是在隱空間中可能數(shù)據(jù)的分布是不均勻的。換句話說,隱空間中的某些區(qū)域并不代表我們觀察到的任何數(shù)據(jù)。

另一方面,如果我們只關(guān)心隱分布與先驗分布類似(通過我們的KL散度損失項),我們最終將使用相同的單位高斯描述每個觀測值,在隨后的抽樣和可視化, 就會像上面中間的圖的樣子。換句話說,我們沒能描述原始數(shù)據(jù)。

但是,當(dāng)兩個式子同時優(yōu)化時,我們即希望有接近先驗分布的隱狀態(tài)來表述屬性,也希望重建誤差比較小。

當(dāng)我構(gòu)建一個變分自編碼器時,我喜歡檢查數(shù)據(jù)中的幾個樣本的隱維度以查看分布的特征。

如果我們觀察到隱分布非常狹窄,我們可以用參數(shù)β> 1賦予KL散度項更高的權(quán)重,鼓勵網(wǎng)絡(luò)學(xué)習(xí)更廣泛的分布。這種簡單的觀察導(dǎo)致了一類新的模型 - disentangled variational autoencoders的發(fā)展。事實證明,通過更加強調(diào)KL散度項,我們也隱含地強調(diào)學(xué)習(xí)的隱維度是不相關(guān)的(通過我們對對角協(xié)方差矩陣的簡化假設(shè))。

變分自編碼器作為生成模型



通過從隱空間采樣,我們可以使用解碼器網(wǎng)絡(luò)形成一個生成模型,能夠創(chuàng)建類似于訓(xùn)練過程中觀察到的新數(shù)據(jù)。具體來說,我們將從先前的分布中采樣,假定它遵循單元高斯分布。

下圖顯示了在MNIST手寫數(shù)字數(shù)據(jù)集上訓(xùn)練的變分自編碼器的解碼器網(wǎng)絡(luò)生成的數(shù)據(jù)。在這里,我們從二維高斯采樣了一個網(wǎng)格值,并展示了解碼器網(wǎng)絡(luò)的輸出。

正如你所看到的,每個獨立的數(shù)字都存在于隱空間的不同區(qū)域,并順利地從一個數(shù)字變換到另一個數(shù)字。如果您想要在兩個觀察點之間進行插值,這種平滑轉(zhuǎn)換可能非常有用。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多