Auto-Encoding Variational Bayes from PGM概率圖模型
1. PGM 概率圖模型
AVEB(Auto-Encoding Variational Bayes)的思想可以從概率圖模型來理解。它是建立在概率圖模型Inference中的Variational Inference基礎上的。
1.1 Variational Inference
概率圖的inference,是一種從概率圖模型中獲取信息的方式(通俗的來說,就是向模型提問)。inference一般由兩種常見的形式:
- Marginal inference : 用來得到整個系統狀態的某一部分(從其他狀態變量中marginalize之後)的概率。(以圖像處理爲例,如果扣掉圖像的一塊,如何使用其他的圖像信息補全這一塊缺失的內容)。
- MAP inference : 最大後驗概率,從模型中得到結果。(以圖像爲例,輸入一張圖像,通過我們的概率模型,得到它是貓的概率和它是狗的概率)
Variational Inference是把inference問題,考慮成一個優化問題 :
我們有一組候選的概率分佈Q,真實的概率分佈記爲p(p是未知的,但是我們有服從它的觀測結果)。我們的目標則是在Q中找到一個元素q,使得q最接近於p。最後,我們使用p(完全已知的一個分佈)來回答上面的inference問題。
這樣的問題就涉及到了兩個方面:
- 一個是如何判斷p與q的相似程度。
- 如果找到這個最相似的q。
比較常用的方法是使用KL divergence衡量相似程度,並且使用gradient descent的方法找到最佳的q。
1.2 KL divergence
定義:
KL(q∣∣p)=x∑q(x)logp(x)q(x)
重要性質:
KL(q∣∣p)≥0
KL(q∣∣p)=0, if p=q
KL(q∣∣p)=KL(p∣∣q), if p=q
在這裏,p和q都是歸一化的概率分佈。但是實際上我們還是不能衡量KL,因爲p對我們來說是未知的(intractable)。我們考慮一個更加一般的p分佈, 它可能不是歸一化的,所以p的表達式爲:
p(x1,x2,...,xn;θ)=Z(θ)pˉ(x1,x2,...,xn;θ)=Z(θ)1k∏ϕk(xk;θ)
ϕk是一個factor(因子)。看這個表達式我們也可以更好的理解爲什麼p是intractable。這是由於Z(θ)是intractable,爲了求這個歸一化常數,我們需要對所有可能的狀態x進行計算,但是鑑於p其實是未知的分佈,我們不可能分析它對於所有x狀態的可能結果(當然我們可以用monte carto的方法sampling近似)。這裏也其實表達了對於一般的分佈,我們無法用直接KL衡量它與另一個分佈q的相似程度。
1.3 The Variational Lower bound
我們先分析下面的等式(直接把新的pˉ帶入KL的表達式):
J(q)=x∑q(x)logpˉ(x)q(x)
J(q)=x∑q(x)logp(x)q(x)−logZ(θ)=KL(q∣∣p)−logZ(θ)
我們可以得到下面的等式不等式:
logZ(θ)=KL(q∣∣p)−J(q)≥−J(q)
這表示了,−J(q) 其實是logZ(θ)的一個下界(lower bound)。而KL(q∣∣p)恰好是下界與真實值之間的gap。如果我們嘗試最大化這個下界−J(q) ,那麼會促使−J(q)和logZ(θ)變得越來越接近,也就是說他們之間的gap越來越小,也就是達到了最小化KL(q∣∣p)的目的。
−J(q)被稱作 the variational lower bound 或者 the evidence lower bound (ELBO)。
−J(q)=−x∑q(x)logq(x)+x∑q(x)logpˉ(x)
−J(q)=Eq(x)[logpˉ(x)−logq(x)]
通常上面的結論也被寫爲:
logZ(θ)≥Eq(x)[logpˉ(x)−logq(x)]=L(p,q)
對這個表達式求相對於q分佈的期望值。
2. Black-box variational inference
2.1 gradient descent
這是一個用來最大化ELBO的算法,它的核心思想很簡單,它不在乎p和q的分佈具體是什麼,而單純的只考慮他們的梯度,然後使用梯度下降(gradient descent)來優化目標函數。
- q分佈的參數爲ϕ,p分佈的參數爲θ。所以我們需要分別對ELBO對ϕ和θ進行求導。
- 也就引出的它的唯一一個前提條件(或者說假設):q是相對於ϕ可微的(differentiable)。
我們需要計算的梯度爲:
∇θ,ϕEqϕ(z)[logpθ(z)−logqϕ(z)]
注意這裏的標記和前面的不一樣了,在這裏z是我們在這個inference中想要求的量,x是它的輸入值,p可以理解爲我們的觀測數據,q是我們預測模型。
2.2 Score function gradient estimator
我們把上面的梯度公式分開ϕ和θ兩部分來求:
θ部分:
∇θEqϕ(z)[logpθ(z)−logqϕ(z)]=∇θEqϕ(z)[logpθ(z)]=Eqϕ(z)[∇θlogpθ(z)]
這樣我們可以通過Monte Carlo來對Δθlogpθ(z)進行sample,得到它的結果。
ϕ部分:
∇ϕEqϕ(z)[logpθ(z)−logqϕ(z)]
這一個部分則更爲複雜,因爲它涉及到的期望的分佈也是和ϕ相關的。我們可以通過score function estimator求(可以在這篇文章的 附錄B中得到下面公式的證明 paper):
∇ϕEqϕ(z)[logpθ(z)−logqϕ(z)]=Eqϕ(z)[(logpθ(z)−logqϕ(z))∇ϕlogqϕ(z)]
然後我們就可以通過Monte Carlo來sample期望的結果了。
但是這個算法存在一個很大的問題 :high variance。
3. Our problem - Latent variable model
在繼續講解算法之前,我們先把我們的問題整理一下,並且把前面的公式,使用符合問題的記號重新在這裏表達:
- 我們假設我們在這裏的問題是生成隨機的人臉圖片。
- 準備階段時候,我們有一系列的人臉圖片數據集{x}。
- 我們的目的是,使用算法在這些圖片中找到一定的規律,encode這些圖片爲一系列的參數(特徵)z:
P(z∣x)
- 我們隨機給出一組參數(特徵)z,可以通過算法生成一張新的人臉的圖像x:
P(x∣z)
我們在這裏的p分佈爲:
pθ(z∣x)=pθ(x)pθ(x,z)
J(q)=(z∣x)∑qϕ(z∣x)logpθ(z,x)qϕ(z∣x)=(z∣x)∑qϕ(z∣x)logpθ(z∣x)qϕ(z∣x)−logpθ(x)=−L(p,q)
我們可以得到下面的等式不等式:
logpθ(x)=KL(qϕ(z∣x)∣∣pθ(z∣x))+L(p,q)
4. Auto-encoding reformulation
這裏對ELBO的公式進行了簡單的reform:
logpθ(x)=KL(qϕ(z∣x)∣∣pθ(z∣x))−(z∣x)∑qϕ(z∣x)logpθ(z,x)qϕ(z∣x)
=(z∣x)∑qϕ(z∣x)log[pθ(x∣z)pθ(z∣x)pθ(x∣z)qϕ(z∣x)]−(z∣x)∑qϕ(z∣x)logpθ(z)qϕ(z∣x)pθ(z,x)pθ(z)
=Eqϕ(z∣x)[log[pθ(x∣z)]−KL(qϕ(z∣x)∣∣pθ(z))+(z∣x)∑qϕ(z∣x)logpθ(z∣x)pθ(x∣z)qϕ(z∣x)pθ(z)pθ(z,x)
=Eqϕ(z∣x)[log[pθ(x∣z)]−KL(qϕ(z∣x)∣∣pθ(z))+KL(qϕ(z∣x)∣∣pθ(z∣x))
(因爲上面最右邊一個很長的表達式也是一個KL,而且我們知道KLdivergence是非負的)
logpθ(x)≥Eqϕ(z∣x)[log[pθ(x∣z)]−KL(qϕ(z∣x)∣∣pθ(z))
- 上面的右邊是在z~$q(z|x)上sample的期望和divergence。相當於前面我們提到的,提供一個x(圖像),把它encode成一個特徵表達z,所以在這裏q就是相當於是一個encoder。
- Eqϕ(z∣x)[log[pθ(x∣z)]這一項則是一個maximal log-likelihood函數,它表達瞭如果給到我們的提取的z特徵,能不能最大程度恢復原本的圖像x。p就相當於一個decoder。
- KL(qϕ(z∣x)∣∣pθ(z))這一項是一個的divergence。用來限制qϕ(z∣x),以保證它不會每次都生成一樣的特徵qϕ(z)。
5. The Reparameterization Trick
這裏考慮對分佈重新進行參數化,以簡化求梯度的難度。
原本的分佈爲:
qθ(z∣x)
假設誤差是正態分佈:
ϵ∼p(ϵ)
假設z的分佈是依賴於x的函數,同時包含一定的誤差ϵ:
z=gϕ(ϵ,x)
z=gϕ,σ(ϵ)=μ+ϵ⋅σ
所以對任意一個函數的期望的梯度可以表示爲:
∇ϕEz∼qϕ(z∣x)[f(x,z)]=∇ϕEϵ∼p(ϵ)[f(x,gϕ(ϵ,x))]=Eϵ∼p(ϵ)[∇ϕf(x,gϕ(ϵ,x))]
用這樣的重新參數化,可以更加輕鬆的解決前面的梯度問題。而且在這種方法下沒有那麼多的variance (這個在文章中有更加細節的討論)
6. Neural Network pick q and p
接下來就是使用神經網絡來選擇適當的decoder(p)和encoder(q)的問題了。
7. Loss function in Neural Network
7.1 reformulation of ELBO
從上面的推導,我們得到:
logpθ(x)=Eqϕ(z∣x)[log[pθ(x∣z)]−KL(qϕ(z∣x)∣∣pθ(z))+KL(qϕ(z∣x)∣∣pθ(z∣x))
可以寫爲:
logpθ(x)−Eqϕ(z∣x)[log[pθ(x∣z)]+KL(qϕ(z∣x)∣∣pθ(z))=KL(qϕ(z∣x)∣∣pθ(z∣x))
所以其實我們的目標函數其實可以看作爲最小化:
logpθ(x)−Eqϕ(z∣x)[log[pθ(x∣z)]+KL(qϕ(z∣x)∣∣pθ(z))
- 第一項是最小化從x通過decode p恢復的圖像和原本的輸入圖像的差異。
- 第二項則是前面解釋過的regulatization項。
7.2 Neural Network distribution
使用前面提到的reparameterization之後,我們的分佈則變爲:
p(x∣z)=N(x;μ(z),diag(σ(z))2)
p(z)=N(z;0,I)
q(z∣x)=N(z;μ(x),diag(σ(x))2)
7.3 Loss function
帶入到我們的reformulation ELBO表達式中:
logpθ(x)−Eqϕ(z∣x)[log[pθ(x∣z)]+KL(N(z;μ(x),diag(σ(x))2)∣∣N(z;0,I))
下圖來自Medium