變分推斷(variational inference)學習筆記(1)——概念介紹
ref:http://www.crescentmoon.info/?p=709#more-709
問題描述
變分推斷是一類用於貝葉斯估計和機器學習領域中近似計算複雜(intractable)積分的技術,它廣泛應用於各種複雜模型的推斷。本文是學習PRML第10章的一篇筆記,錯誤或不足的地方敬請指出。
先給出問題描述。記得在上一篇EM的文章中,我們有一個觀察變數X={x{1},…,x{m}}和隱藏變數Z={z{1},…,z{m}}, 整個模型p(X,Z)是個關於變數X,Z的聯合分佈,我們的目標是得到後驗分佈P(Z|X)的一個近似分佈。
在之前介紹過Gibbs Sampling這一類Monte Carlo演算法,它們的做法就是通過抽取大量的樣本估計真實的後驗分佈。而變分推斷不同,與此不同的是,變分推斷限制近似分佈的型別,從而得到一種區域性最優,但具有確定解的近似後驗分佈。
其中
L(q)=∫q(Z)lnp(X,Z)p(Z)dZ(2) KL(q||p)=−∫q(Z)lnp(Z|X)q(Z)dZ(3)
這裡公式中不再出現引數θ,因為引數不再是固定的值,而變成了隨機變數,所以也是隱藏變數,包括在Z之內了。
這裡的KL散度KL(q||p)描述了估計分佈與真實分佈的差別。當KL(q||p)=0時,倆分佈就是相同的。因為我們不知道真實的後驗分佈是啥,所以直接最小化KL是做不到的,但是我們可以通過最大化L(q) 來達到這個目的。可以認為L(q)越大,則模型對資料擬合程度越好。由於lnp(X)≥L(q)始終成立,所以L
為了極大化L(q),我們需要選擇合適的函式q,使其便於計算。要注意到L(q)並非普通的函式,而是以函式q為自變數的函式,這就是泛函。泛函可以看成是函式概念的推廣,而變分方法是處理泛函的數學領域,和處理函式的普通微積分相對。變分法最終尋求的是極值函式:它們使得泛函取得極大或極小值。
條件獨立假設
如果引數之間具有相互依賴關係(mutually dependent),求積分時會比較麻煩。所以我們為q(Z)的分佈加一個限制條件,將Z分為M組變數,組與組之間變數相互獨立,這樣q的分佈就可以分解為
要注意我們對每個q(Zi)的函式形式並沒有做任何限制。這種將q分解的方法叫做平均場理論(mean field theory),主要基於基於系統中個體的區域性相互作用可以產生巨集觀層面較為穩定的行為這個物理思想。
求解過程
根據以上假設,我們來最大化下界L(q),因為假設qi(Zi)分佈之間都是獨立的,所以我們依次輪流來優化,以qj(Zj)為例(為了簡單起見,縮寫為qj)。
這裡我們定義一個新分佈lnp~(X,Zj)為
lnp~(X,Zj)=∫lnp(X,Z)∏i≠jqidZi(6)
我們發現它剛好是除去與qj分佈相關的zj之後原似然的期望值,有
lnp~(X,Zj)=Ei≠j[lnp(X,Z)]+const(7)
然後看式(5)的最後部分,就是qj(Zj)和lnp~(X,Zj)的KL散度的負值,這裡我們固定qi≠j不變,那麼最大化L(q)就變成了最小化這個KL散度,而KL 散度的最小值在qj(Zj)=lnp~(X,Zj)時取到。所以,最優解q∗j(Zj)為
lnq∗j(Zj)=Ei≠j[lnp(X,Z)]+C(8)
另加的這個C是為了歸一化整個分佈,有C=∫exp(Ei≠j[lnp(X,Z)])dZj 。然後依次更新其他Zj,最終相互迭代達到穩定。
變分下界
我們也可以直接衡量模型的下界。在實際應用中,變分下界可以直接判斷演算法是否收斂,也可以通過每次迭代都不會降低這一點來判斷演算法推導和實現的部分是否存在問題。