直觀理解 VAE(譯文)

與上一篇譯文 “直觀理解 GAN” 一樣还绘,這篇文章的英文原文也出自 Joseph Rocca 之手践惑。文章既包括對 VAE(Variational Autoencoders捏萍,變分自編碼器) 的直觀理解哈扮,也有詳細(xì)的數(shù)學(xué)推導(dǎo)靡砌。很佩服作者用這種平實(shí)親和的語言寫科技博客的能力蒲凶。

本文依然是對原始文章的意譯垄惧,力求用符合中文的語言風(fēng)格還原作者的本意薯嗤。

原文鏈接:
https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73

=====================================

0. 引言

在過去幾年中,基于深度學(xué)習(xí)的生成模型(generative models)獲得越來越多的關(guān)注撮竿。依賴于大量訓(xùn)練數(shù)據(jù)吮便、巧妙設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)以及高效的訓(xùn)練方法,深度生成模型展現(xiàn)出不可思議的新內(nèi)容/新數(shù)據(jù)生成能力幢踏,包括生成圖片髓需、文字和聲音等。在各種深度生成模型中房蝉,有兩類受到格外關(guān)注:GANs (Generative Adversarial Networks, 生成對抗模型)和 VAEs (Variational Autoencoders, 變分自編碼器).

在之前的文章中(英文原文僚匆,中文翻譯),我們介紹了 GANs搭幻。本文將繼續(xù)介紹另一種深度生成模型 —— VAE咧擂。簡單來說,VAE 是一種特殊的自編碼器(Autoencoder)檀蹋,編碼之后得到的隱空間(latent space)具有良好的規(guī)則松申,可以生成有意義的新數(shù)據(jù)。VAE 名字中的“變分”(variational)一詞來源于其編碼方式與統(tǒng)計(jì)學(xué)中的變分推斷(variational inference)之間的密切關(guān)聯(lián)。

上邊一段話中對 VAE 的概括可能會(huì)帶來一些系列的疑問:什么是自編碼器攻臀?什么是隱空間以及為什么需要讓它規(guī)則化焕数?如何讓 VAE 生成新數(shù)據(jù)?變分自編碼器與變分推斷之間有什么的關(guān)系刨啸?為了盡量清晰的介紹 VAE堡赔,我們需要回答上面所有的問題(以及很多其他問題)。本文的目的是從基礎(chǔ)概念出發(fā)设联,逐步推導(dǎo)出 VAE 善已,并逐一回答上述問題。

廢話不多少离例,讓我們開始 VAE 的(重)發(fā)現(xiàn)之旅吧换团!

文章結(jié)構(gòu):
第 1 節(jié)介紹有關(guān)特征降維和自編碼器的重要概念。
第 2 節(jié)闡述為什么自編碼器無法生成有意義的新數(shù)據(jù)宫蛆,并且介紹 VAE 這個(gè)規(guī)則化版本的自編碼器艘包。
第 3 節(jié)介紹 VAE 的數(shù)學(xué)細(xì)節(jié),尤其是變分推斷耀盗。這一節(jié)將在 VAE 的直觀理解與數(shù)學(xué)推導(dǎo)之間架設(shè)一座橋梁想虎。對于數(shù)學(xué)細(xì)節(jié)不感興趣的讀者可以忽略這一節(jié),并不會(huì)影響對 VAE 的直觀理解叛拷。

1. 特征降維舌厨,主成分分析(PCA)以及自編碼器

這一節(jié)主要介紹與特征降維相關(guān)的概念,尤其是主成分分析(Principal Component Analysis, PCA)忿薇,自編碼器裙椭,以及它們之間的關(guān)聯(lián)。

1.1. 什么是特征降維署浩?

在機(jī)器學(xué)習(xí)中揉燃,特征降維就是減少用來描述數(shù)據(jù)的特征數(shù)量,包括特征篩選(挑選部分現(xiàn)有特征)和特征提冉疃啊(由現(xiàn)有特征構(gòu)造數(shù)量更少的新特征)你雌。特征降維主要用在需要低維數(shù)據(jù)的場景中,例如數(shù)據(jù)可視化二汛、數(shù)據(jù)存儲(chǔ)、降低計(jì)算復(fù)雜度等拨拓。特征降維的具體實(shí)現(xiàn)方法有很多肴颊,這里我們介紹一個(gè)統(tǒng)一的框架,可以包含幾乎所有的降維方法渣磷。

我們把從原始特征集合中獲得新特征集合的過程(通過篩選或者提刃鲎拧)稱為編碼過程,或者直接叫作編碼器,而相應(yīng)的逆過程稱為解碼器竟宋。從這個(gè)角度來看提完,特征降維的過程可以理解成編碼器將數(shù)據(jù)從原始空間壓縮到維度較低的編碼空間(或者稱為隱空間 latent space)中,解碼器則是相應(yīng)的解壓縮過程丘侠。這種壓縮可以是無損的(lossless)徒欣,即從編碼的數(shù)據(jù)可以完美重構(gòu)原始數(shù)據(jù);也可以是有損的(lossy)蜗字,即在編碼過程中打肝,部分原始信息丟失,數(shù)據(jù)無法被完美的解碼還原挪捕。

從上述編碼器+解碼器的角度來看粗梭,特征降維的一個(gè)主要目的是找到一對編碼器和解碼器,使得編碼過程中保留盡量多的重要信息级零,這樣解碼之后的重構(gòu)誤差較小断医。如果用 ED 分別表示編碼器集合和解碼器集合,那么特征降維問題可以寫成如下的優(yōu)化問題:
(e^*, d^*) = \underset{_{(e,d)\in E\times D}}{\arg\min} ~~\epsilon(x, d(e(x)))

其中 \epsilon(x, d(e(x))) 定義了原始數(shù)據(jù) x 與經(jīng)過編碼+解碼之后的重構(gòu)數(shù)據(jù) d(e(x)) 之間的誤差奏纪。在下面的介紹中鉴嗤,我們設(shè)定數(shù)據(jù)的數(shù)量為 N, 原始空間(也是解碼之后的空間)維度為 n_d,編碼空間為 n_e.

1.2. 主成分分析

當(dāng)談到特征降維時(shí)亥贸,一個(gè)很容易想到的方法就是主成分分析(Principal Component Analysis, PCA)躬窜。下邊,我們將 PCA 套用到上述編碼器+解碼器的統(tǒng)一框架中炕置,以便與后續(xù)的自編碼器相比較荣挨。

首先看一下 PCA 的基本思想:對原始特征(n_d 維)進(jìn)行線性組合,構(gòu)造出相互獨(dú)立的新特征(n_e 維)朴摊,而構(gòu)造目標(biāo)是默垄,原始數(shù)據(jù)在新特征構(gòu)成的降維空間中的投影與原始數(shù)據(jù)盡量靠近(以歐幾里得距離為度量指標(biāo))。也就是說甚纲,PCA 要尋找原始特征空間中的一個(gè)子空間(該子空間的正交基對應(yīng)新特征)使得原始數(shù)據(jù)在該子空間中的投影與原始數(shù)據(jù)誤差最小口锭。

套用到編碼+解碼的統(tǒng)一框架內(nèi):我們希望選擇一個(gè) n_e\times n_d 維的矩陣(各行正交)作為編碼器,以及一個(gè) n_d \times n_e 維的矩陣作為解碼器介杆,使得數(shù)據(jù)在編碼之后的降維子空間上的投影與原數(shù)據(jù)誤差最小鹃操。實(shí)際上可以證明(參考 Bishop. PRML. p561),樣本數(shù)據(jù)集合的協(xié)方差矩陣最大的 n_e 個(gè)特征根對應(yīng)的特征向量(單位正交化之后)可以組成上述編碼器矩陣春哨。這樣荆隘,PCA 特征降維問題最后就轉(zhuǎn)化成了矩陣的特征分解問題。還可以證明赴背,對應(yīng)的解碼器矩陣就是編碼器矩陣的轉(zhuǎn)置椰拒。

1.3. 自編碼器

下邊我們轉(zhuǎn)向自編碼器晶渠,看一下如何用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)特征降維。自編碼器的思想很簡單:用神經(jīng)網(wǎng)絡(luò)構(gòu)造編碼器和解碼器(編碼器網(wǎng)絡(luò)后邊跟著解碼器網(wǎng)絡(luò))燃观,通過迭代優(yōu)化的方法學(xué)習(xí)到最佳的參數(shù)配置褒脯。具體地,每一步迭代中缆毁,將數(shù)據(jù)送入自編碼器中番川,對比編碼+解碼之后的輸出與原始數(shù)據(jù),然后通過誤差反向傳播算法更新兩個(gè)網(wǎng)絡(luò)的權(quán)重积锅。

直觀地看爽彤,整個(gè)自編碼器架構(gòu)內(nèi)部具有一種類似瓶頸的作用,只有原始數(shù)據(jù)中關(guān)鍵特征會(huì)被保留缚陷,穿過瓶頸适篙,最終用于數(shù)據(jù)重構(gòu),而那些不重要的特征由于瓶頸維度限制被剔除掉了箫爷。

如果設(shè)定我們的編碼器和解碼器網(wǎng)絡(luò)都是單層的嚷节,并且沒有非線性激活函數(shù),那么它們都是簡單的線性變換虎锚,可以用矩陣表示硫痰。在這種情況下,可以看到自編碼器與 PCA 之間的聯(lián)系窜护。PCA 中設(shè)計(jì)的編碼器和解碼器矩陣效斑,在自編碼器中有可能通過神經(jīng)網(wǎng)絡(luò)的迭代學(xué)習(xí)最終習(xí)得。但是自編碼器網(wǎng)絡(luò)沒有如 PCA 一樣的新特征之間獨(dú)立的限制柱徙,因此有可能學(xué)習(xí)到更多樣的編碼+解碼矩陣/網(wǎng)絡(luò)缓屠。

現(xiàn)在我們看看具有深度網(wǎng)絡(luò)結(jié)構(gòu)以及非線性激活函數(shù)的更復(fù)雜的自編碼器。理論上來說护侮,網(wǎng)絡(luò)結(jié)構(gòu)越復(fù)雜敌完,對應(yīng)的(訓(xùn)練之后)自編碼器效果越好,即在降低維度的同時(shí)羊初,提高重構(gòu)精度滨溉。一種極端情況是,如果自編碼器有足夠多的自由度(獨(dú)立參數(shù))长赞,它可以將任意維度的原始數(shù)據(jù)壓縮到一維空間中晦攒。例如,將 N 個(gè)數(shù)據(jù)編碼為 1得哆,2勤家,3,... 一直到 N柳恐,然后解碼器執(zhí)行逆過程伐脖,可以沒有任何重構(gòu)誤差.

但是我們需要注意兩件事:第一,過分的追求無重構(gòu)誤差可能導(dǎo)致編碼之后的隱空間沒有任何規(guī)律性乐设,可解釋性差(lack of regularity)讼庇;第二, 在很多時(shí)候特征降維的最終目的并不僅僅是降低維度近尚,還希望保留關(guān)鍵特征的結(jié)構(gòu)信息蠕啄。在這兩個(gè)額外要求下,隱空間的維度和自編碼器的深度需要謹(jǐn)慎選擇戈锻。

2. 變分自編碼器 VAE

到目前為止歼跟,我們討論了特征降維問題,介紹了基于神經(jīng)網(wǎng)絡(luò)的自編碼器格遭。接下來討論數(shù)據(jù)生成的問題哈街。首先看一下自編碼器在數(shù)據(jù)生成方面的缺陷,然后引入 VAE.

2.1. 自編碼器在數(shù)據(jù)生成方面的缺陷

訓(xùn)練好的自編碼器包括編碼器和解碼器拒迅。一個(gè)很直觀的想法是骚秦,我們可以從編碼之后的隱空間中采樣一個(gè)點(diǎn)送入解碼器,產(chǎn)生新的數(shù)據(jù)璧微。這樣解碼器就扮演了生成器的角色作箍。

圖中上部對應(yīng)訓(xùn)練自編碼器的過程,下部對應(yīng)數(shù)據(jù)生成的過程

但是正如前邊所討論的前硫,我們并不能保證自編碼器的隱空間具有規(guī)則性胞得,從中隨機(jī)選取的一個(gè)點(diǎn)不一定能生成有意義的新數(shù)據(jù)。為了說明這個(gè)問題屹电,我們繼續(xù)使用前邊的例子:假設(shè)我們已經(jīng)有了一個(gè)功能強(qiáng)大的自編碼器阶剑,可以把 N 個(gè)原始數(shù)據(jù)編碼到一維空間中(例如實(shí)數(shù)軸上的 N 個(gè)點(diǎn)),并且可以無損解碼還原嗤详。這種極限無損壓縮有可能意味著嚴(yán)重的過擬合个扰,也就是說在一維隱空間中只有這幾個(gè)點(diǎn)能夠還原出有意義的數(shù)據(jù)。

之所以產(chǎn)生這種不規(guī)則的隱空間也是很容易理解的葱色。在訓(xùn)練自編碼器的過程中递宅,我們只是要求重構(gòu)誤差盡量的小,沒有對隱空間施加任何規(guī)則化限制苍狰。自編碼器為了實(shí)現(xiàn)優(yōu)化目標(biāo)可以用任意的方式構(gòu)造隱空間办龄,在這個(gè)過程中就有可能出現(xiàn)上述過擬合問題。

2.2. VAE 的定義

為了把解碼器當(dāng)作生成器使用淋昭,隱空間應(yīng)該具有某種規(guī)則性俐填,使得隨機(jī)采樣的一個(gè)點(diǎn)可以產(chǎn)生有意義的新數(shù)據(jù)。一種解決方案是在訓(xùn)練自編碼器的過程中明確施加規(guī)則性限制翔忽。VAE 就是采用了這種解決方案英融。

與普通的自編碼器類似盏檐,VAE 的架構(gòu)也包括編碼器和解碼器,訓(xùn)練的目標(biāo)(之一)也是最小化重構(gòu)誤差驶悟。不同的是胡野,VAE 不是將輸入數(shù)據(jù)編碼成隱空間中的一個(gè)點(diǎn),而是編碼成隱空間中的一個(gè)分布. 具體的訓(xùn)練步驟如下:

  • 輸入數(shù)據(jù)被編碼成隱空間上的一個(gè)分布
  • 從該分布中采樣一個(gè)點(diǎn)
  • 采樣點(diǎn)被解碼痕鳍,計(jì)算重構(gòu)誤差
  • 重構(gòu)誤差反向傳播硫豆,更新網(wǎng)絡(luò)參數(shù)

在實(shí)際應(yīng)用中,編碼分布采用正態(tài)分布笼呆,因此編碼器的輸出實(shí)際上是正態(tài)分布的均值和協(xié)方差矩陣熊响。

2.3. 規(guī)則化的直觀理解

規(guī)則化的隱空間應(yīng)該具備兩個(gè)性質(zhì):

  • 完備性:隱空間中隨機(jī)采樣的點(diǎn)應(yīng)該解碼出有意義的新數(shù)據(jù)。
  • 連續(xù)性:隱空間中相鄰的兩個(gè)點(diǎn)解碼之后的數(shù)據(jù)內(nèi)容不能相差太大

需要注意的是诗赌,單純的將普通自編碼器中的“編碼成點(diǎn)”修改為 VAE 中的“編碼成分布”并不能保證上述隱空間的兩個(gè)性質(zhì)汗茄。VAE 為了實(shí)現(xiàn)重構(gòu)誤差最小的目標(biāo),可能表現(xiàn)的與普通自編碼器類似境肾,訓(xùn)練出方差很小的分布剔难,相當(dāng)于編碼成一個(gè)點(diǎn)。而且由輸入數(shù)據(jù)編碼出的各個(gè)分布的均值之間間距可能很大奥喻。上述問題都會(huì)導(dǎo)致隱空間既沒有完備性偶宫,也沒有連續(xù)性。

為了解決上述問題环鲤,我們需要對編碼分布的均值和方差施加限制纯趋。在 VAE 中,要求編碼分布逼近標(biāo)準(zhǔn)正態(tài)分布冷离,即協(xié)方差矩陣盡量逼近單位矩陣吵冒,避免了過小的方差,而且均值靠近 0 點(diǎn)西剥,避免了輸入數(shù)據(jù)編碼后的各個(gè)分布之間過于分散痹栖。

從上圖中可以看出,施加限制之后瞭空,編碼器產(chǎn)生的分布靠的更近揪阿,有部分重疊,而且各個(gè)分布的方差(覆蓋面)增大咆畏,保證了連續(xù)性和完備性南捂。

為了施加這一限制,可以采用如下的 loss function:

其中編碼成的分布與標(biāo)準(zhǔn)正態(tài)分布之間的差距通過 KL 散度(Kulback-Leibler divergence)來衡量旧找。KL 散度有一個(gè)很好的特性:兩個(gè)正態(tài)分布的 KL 散度可以通過這兩個(gè)分布的均值和協(xié)方差矩陣顯式地寫出來溺健,因此計(jì)算很方便。

施加規(guī)則化限制的代價(jià)是帶來更大的重構(gòu)誤差钮蛛,因?yàn)?loss function 需要兼顧 重構(gòu)誤差兩個(gè)分布的 KL 散度鞭缭。

總結(jié)本小節(jié)內(nèi)容:結(jié)合下圖我們可以看到剖膳,施加規(guī)則化限制之后,隱空間上的分布呈現(xiàn)某種“梯度”漸變現(xiàn)象岭辣,如果采樣點(diǎn)在兩個(gè)分布的均值之間的位置潮秘,那么該采樣點(diǎn)解碼之后得到的新數(shù)據(jù)也會(huì)表現(xiàn)出兩個(gè)原始數(shù)據(jù)的中間態(tài)形式。

3. VAE 背后的數(shù)學(xué)

本節(jié)將從更加理論化的角度分析 VAE 易结。不過,在此之前我們首先要介紹清楚相關(guān)的概率框架以及變分推斷方法柜候。

3.1. 概率框架和假設(shè)

首先定義一個(gè)概率圖模型搞动。令 x 變量表示生成的數(shù)據(jù),并假設(shè) x 的分布依賴于隱變量 z

注意渣刷,此處我們假設(shè)生成數(shù)據(jù)與隱變量之間是概率性的鹦肿,實(shí)際中我們是用確定性的神經(jīng)網(wǎng)絡(luò)描述生成數(shù)據(jù)與隱變量之間的關(guān)系,前者包含了后者辅柴。我們先從比較廣義的角度進(jìn)行理論分析箩溃,然后再具體化。

在概率框架下碌嘀,數(shù)據(jù)生成的步驟如下:

  • 首先依分布 p(z) 采樣一個(gè)隱變量 z
  • 然后再依分布 p(x|z) 采樣出新數(shù)據(jù) x

在此基礎(chǔ)上涣旨,我們重新定義概率化的編碼器和解碼器:概率化的解碼器就是前邊定義的 p(x|z),描述了在給定 隱變量 z 的條件下生成(或解碼)數(shù)據(jù) x 的分布股冗;概率化編碼器定義為 p(z|x)霹陡,描述了在給定數(shù)據(jù) x 的條件下,隱變量 z 的分布止状。

上述定義的都是條件概率烹棉,假設(shè)隱空間自身還有先驗(yàn)分布 p(z)。我們可以用貝葉斯定理建立以上各分布之間的關(guān)系:
p(z|x) = \frac{p(x|z)p(z)}{p(x)} = \frac{p(x|z)p(z)}{\int p(x|u)p(u)du}

假設(shè) p(z) 服從標(biāo)準(zhǔn)正態(tài)分布怯疤,p(x|z) 也是一個(gè)高斯分布浆洗,其均值是關(guān)于 z 的確定性函數(shù) f(\cdot),協(xié)方差矩陣形如 cI集峦,即
p(z) \sim \mathcal{N}(0, I) \\ p(x|z) \sim \mathcal{N}(f(z), cI), ~~ c>0

我們先假設(shè) f(\cdot) 是已知的伏社。理論上來說,我們已知了 p(z)p(x|z), 可以通過貝葉斯定理計(jì)算 p(z|x)少梁,這是典型的貝葉斯推斷問題洛口。但是,這個(gè)問題中計(jì)算分母上的積分比較困難凯沪,我們只能采用近似方法計(jì)算 p(z|x)第焰,比如變分推斷 (variational inference).

3.2. 變分推斷

在統(tǒng)計(jì)學(xué)中,變分推斷可以用來近似比較復(fù)雜的分布妨马⊥伲基本思想是杀赢,從一類參數(shù)化的分布中(例如高斯分布,參數(shù)為均值和協(xié)方差)選出對目標(biāo)分布的最佳近似湘纵。這里的優(yōu)化目標(biāo)一般是待求分布與目標(biāo)分布的 KL 散度脂崔。

這里我們是希望用高斯分布 q_x(z) (這種表示方法意味著這個(gè)關(guān)于 z 的分布是依賴于 x 的,一旦 x 確定了梧喷,這個(gè)分布也是確定的)逼近 p(z|x)砌左,其中高斯分布的均值和方差分別設(shè)定為 g(x), h(x),即
q_x(z) \sim \mathcal{N}(g(x), h(x))

接下來就是通過調(diào)節(jié) g, h (也就是調(diào)節(jié) q_x(z))來尋找對 p(z|x) 的最佳近似铺敌』愦酰可以寫成如下優(yōu)化問題:

其中第三個(gè)等式最后一項(xiàng)與 g,h 選擇無關(guān),被省略掉偿凭;最后一行就是將 p(x|z) 的高斯分布表達(dá)式代入产弹。

通過倒數(shù)第二行我們可以看到 “基于采樣數(shù)據(jù)的最大似然” 與 “靠近先驗(yàn)分布”(即最小 KL) 之間的權(quán)衡。這種權(quán)衡在貝葉斯推理問題中是普遍存在的弯囊,反映了對采樣數(shù)據(jù)和對先驗(yàn)知識的信心痰哨。

到目前為止,我們一直假設(shè)概率解碼器 p(x|z) \sim \mathcal{N}(f(z), cI) 中的函數(shù) f 是已知的匾嘱,并由此對概率編碼器 p(z|x) 進(jìn)行變分推斷斤斧。但在實(shí)際中這個(gè) f 函數(shù)是未知的。不同的 f 可以定義不同的 p(x|z)奄毡,進(jìn)而有相應(yīng)的對 p(z|x) 的最佳近似折欠,記作 q^*_x(z)。從編碼+解碼整體的有效性出發(fā)吼过,我們希望找到一個(gè) f 滿足:對于給定的輸入 x, 編碼+解碼之后得到 \hat{x}=x 的概率最大锐秦,其中 z 服從 q^*_x(z) 分布,\hat{x} 服從 p(x|z) 分布盗忱。 可以寫成如下的優(yōu)化問題:
f^* = \underset{f\in F}{\arg\max} ~E_{z\sim q^*_x}(\log p(x|z)) = \underset{f\in F}{\arg\max} ~E_{z\sim q^*_x}\left( -\frac{\|x-f(z)\|^2}{2c} \right)

再結(jié)合前邊的變分推斷問題酱床,最終的優(yōu)化問題如下:
(f^*, g^*, h^*) = \underset{(f,g,h)\in F\times G\times H}{\arg\max}\left( E_{z\sim q_x} \left(-\frac{\|x-f(z)\|^2}{2c}\right) - KL(q_x(z), p(z)) \right)

上式中的 c 可以用來調(diào)節(jié)兩個(gè)優(yōu)化項(xiàng)的權(quán)重,c 越大趟佃,第二項(xiàng)扇谣,即規(guī)則化那一項(xiàng)權(quán)重越大。

3.3. 將神經(jīng)網(wǎng)絡(luò)引進(jìn)來

至此闲昭,我們已經(jīng)定義好了概率優(yōu)化問題罐寨,包含 3 個(gè)待尋優(yōu)的函數(shù) f,g,h。下邊我們用神經(jīng)網(wǎng)絡(luò)對這 3 個(gè)函數(shù)進(jìn)行建模序矩,然后我們需要優(yōu)化的就是神經(jīng)網(wǎng)絡(luò)的參數(shù)鸯绿。

先看編碼器部分。在實(shí)際中,gh 可以共享部分網(wǎng)絡(luò)結(jié)構(gòu)瓶蝴,即
g(x) = g_2(g_1(x)), ~~~~ h(x) = h_2(h_1(x)), ~~~~ g_1(x) = h_1(x)

另外毒返,h 輸出的是 q_x(z) 的協(xié)方差矩陣。為了簡化計(jì)算舷手,減少參數(shù)拧簸,我們可以將 q_x(z) 的協(xié)方差矩陣限定為對角矩陣。此時(shí)男窟,h 的輸出就是一個(gè)向量(對應(yīng)矩陣的對角元素)盆赤,與 g 的輸出同維度。當(dāng)然歉眷,這種簡化也會(huì)降低對 p(z|x) 的近似精度弟劲。

再看解碼器部分。這里 f(z) (原本為分布的均值) 就直接作為解碼器的輸出姥芥,省掉了概率采樣的過程:

需要注意的是,整個(gè)編碼+解碼中存在采樣過程(從隱變量空間采樣得到 z)汇鞭,因此在訓(xùn)練過程中需要保證采樣不影響誤差反向傳播過程凉唐。這里可以采用重參數(shù)化的技巧(reparametrisation trick)。它的基本思想是:如果正態(tài)分布隨機(jī)變量 z 具有均值 \mu_x 和標(biāo)準(zhǔn)差 \sigma_x霍骄,則可以借助標(biāo)準(zhǔn)正態(tài)分布表示成如下形式:
z = \sigma_x\zeta + \mu_x, ~~~~ \zeta\sim \mathcal{N}(0,I)

在誤差反向傳播過程中台囱,不考慮標(biāo)準(zhǔn)正態(tài)分布 \zeta 的采樣,只考慮 \mu_x\sigma_x读整。

對于優(yōu)化目標(biāo)函數(shù)中的期望簿训,在實(shí)際計(jì)算中通過蒙特卡洛方法近似計(jì)算,只需要一次采樣即可米间。另外强品,令優(yōu)化目標(biāo)函數(shù)中 C = 1/(2c)。最后的優(yōu)化目標(biāo)函數(shù)重現(xiàn)了第 2 節(jié)中的樣式屈糊,包括重構(gòu)誤差項(xiàng)和規(guī)則化項(xiàng)的榛,并且由常數(shù) C 調(diào)節(jié)兩項(xiàng)的權(quán)重。

4. 總結(jié)

  • 特征降維的過程就是減少數(shù)據(jù)特征的過程逻锐,也可以理解成編碼的過程夫晌。
  • 自編碼器包含編碼器和解碼器兩部分,都是由神經(jīng)網(wǎng)絡(luò)構(gòu)造的昧诱。通過瓶頸作用晓淀,編碼只保留關(guān)鍵信息。
  • 自編碼器的隱空間是不規(guī)則的盏档,因此無法生成有意義的新數(shù)據(jù)凶掰。
  • VAE 中編碼器輸出的是隱空間中的分布而不是一個(gè)點(diǎn),通過在 loss function 中增加規(guī)則化約束保證隱空間的規(guī)則化。
  • VAE 可以通過概率模型框架推導(dǎo)出來锄俄,其中采用了變分推斷局劲,這也是“變分”自編碼器名字的由來。

在過去的幾年中奶赠,GANs 的發(fā)展勢頭超過了 VAE鱼填,一個(gè)原因是 VAE 的理論稍微難一些,而 GANs 的對抗訓(xùn)練的思想則比較容易理解毅戈。通過這篇文章苹丸,我們分享了關(guān)于 VAE 的直觀理解以及理論基礎(chǔ),希望 VAE 更容易被接受苇经。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載赘理,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末扇单,一起剝皮案震驚了整個(gè)濱河市商模,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜘澜,老刑警劉巖施流,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鄙信,居然都是意外死亡瞪醋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門装诡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來银受,“玉大人,你說我怎么就攤上這事鸦采”鑫。” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵渔伯,是天一觀的道長蜀漆。 經(jīng)常有香客問我,道長咱旱,這世上最難降的妖魔是什么确丢? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮吐限,結(jié)果婚禮上鲜侥,老公的妹妹穿的比我還像新娘。我一直安慰自己诸典,他們只是感情好描函,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般舀寓。 火紅的嫁衣襯著肌膚如雪胆数。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天互墓,我揣著相機(jī)與錄音必尼,去河邊找鬼。 笑死篡撵,一個(gè)胖子當(dāng)著我的面吹牛判莉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播育谬,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼券盅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膛檀?” 一聲冷哼從身側(cè)響起锰镀,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咖刃,沒想到半個(gè)月后互站,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡僵缺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踩叭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磕潮。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖容贝,靈堂內(nèi)的尸體忽然破棺而出自脯,到底是詐尸還是另有隱情,我是刑警寧澤斤富,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布膏潮,位于F島的核電站,受9級特大地震影響满力,放射性物質(zhì)發(fā)生泄漏焕参。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一油额、第九天 我趴在偏房一處隱蔽的房頂上張望叠纷。 院中可真熱鬧,春花似錦潦嘶、人聲如沸涩嚣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽航厚。三九已至顷歌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間幔睬,已是汗流浹背眯漩。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溪窒,地道東北人坤塞。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像澈蚌,于是被迫代替她去往敵國和親摹芙。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容