Variational Auto-Encoder (VAE)論文閱讀與公式推導

1.問題描述

給定一個數據集,假設其滿足樣本間獨立同分布。本質上,我們希望得到關於該數據集的真實的概率分佈p(x),雖然有一些方法能夠直接估計p(x)中某一點的概率(例如核密度估計、近鄰方法),但這些方法一方面準確性較差,並且隨着樣本維度的升高,對樣本數量的需求也是指數增加的。簡單來說,我們多數情況下無法知道p(x)。

       那麼換一個思路,假設每個樣本是由一組潛在的因素決定,這些因素我們很難明確他們的含義,但他們確確實實地決定這些樣本的分佈,令這些隱變量爲z。需要說明的是,有些時候,隱變量是一個確定的值,但在貝葉斯理論下,這些隱變量是一組隨機變量,他們也存在着各自對應的概率分佈。

       通過上邊的描述,我們可知,隱變量z決定這隨機變量x的概率分佈,其概率圖模型如下:

當我們只關注上圖中的z,x和他們之間的實線箭頭,可知:

上式中,p(z)表示隱變量z的概率分佈,可知,對任意一個x的概率,都需要遍歷所有z的取值,這一複雜度隨z的維度指數上升,並且,我們也不知道z的真實分佈是什麼樣子的。

這裏,就可以利用貝葉斯的方法對z的分佈進行估計,即VAE首先令z的先驗分佈p(z)爲標準高斯分佈,之後,基於觀測到的X,計算其後驗分佈p(z|x)來估計z的真實分佈。而對後驗分佈的估計,也正是VAE的核心。注:原文中通過最大化p(X)對數似然,推導得出等價於優化變分下界,角度不同,本質一樣。

2.問題建模

爲了估計,VAE假設存在一個分佈,令q不斷近似p,即最小化,從而將一個估計問題轉化爲一個優化問題,這一過程本質上是一個變分推斷的過程,所以VAE不叫AE。接下來,具體來看如何優化.

基於上述推導,將p(z)=N(0,I)帶入上式,並變換一下可得:

3.求解優化目標1——

首先,需要明確VAE中直接認爲服從各分量相互獨立的多元高斯分佈,所以

上述積分可拆成三個積分,其中,第一項是概率密度乘一個和x無關的常數,即對概率密度積分,結果爲1,

第二項是正態分佈的二階矩,

第三項

-

其中J爲因變量z的維數綜上所述,

4.求解優化目標2——

而另一項,也就是,理論上來說,對它的計算也是要計算如下積分的

但通過一種叫重參數的技巧(reparameterization trick),可以構造一個簡單的式子作爲的近似值。

這樣一來,得到了如下形式

  • Bernouli分佈建模x

將x看做一組服從Bernouli分佈的隨機變量,pθx|z輸出的是一組Bernouli分佈的參數,假設爲y,對於x中的某個分量xi,存在着y中的一個分量yi與之對應。可知,

同一表達在一個式子中,就是

所以,有

其中,D爲數據的分量個數。

  • Gaussian分佈建模x

將x看做一組服從Gaussian分佈的隨機變量,輸出的是多元高斯分佈的均值與方差,假設分別爲μ和σ,則

5.一些實現細節

按照論文中的模型,模型均爲包含一個隱層的神經網絡,其中模型以x爲輸入,輸出一組μ,這裏之所以輸出而不是,是因爲是非負的,這就需要對網絡加一些限制,爲了方便,改爲,從而正負都可以變換爲方差。

參考:

https://www.zhihu.com/question/41765860

https://blog.csdn.net/u012356619/article/details/102588314

https://github.com/wiseodd/generative-models/tree/master/VAE/vanilla_vae

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章