Mark Chang's Blog

Machine Learning, Deep Learning and Python

Variational Inference

Introduction

若某個有 個維度的 data 的產生,是跟某個有 個維度的 hidden variable 有關,在機率圖模型,表示成:

從這機率圖形,可得出 hidden variable 的聯合分佈機率:

若是給定 hidden variable 的值,則可產生 data ,如下:

但如果給定 data 的值,這組 data 所對應到的 hidden variable 的值,如下:

其中,分母 積分如果無法算出來的時候,就無法直接算出 的值,則要用估計的方法來計算 的值。

Variational Inference 用來估計 的值 。

Variational Inference 的做法是,不直接把 求出,而是用一個較好算的 來求出近似解。其中, 為參數,調整此參數可以讓 。較接近

求近似解的方法,是讓 這兩個機率分佈的 KL Divergence 越小越好:(公式一)

Evidence Lower Bound (ELOB)

由於(公式一)中的 無法直接計算出,因此這個

KL Divergence 的值也無法算出來。但可以把它稍微整理一下,如下(公式二)

註:以上省略

定義 Evidence Lower Bound (ELOB) 為:

代入(公式二)的推導結果,得出:

因此:

由於 為一個固定的機率分佈,因此 為常數。

因此,只要將 的最大化,即可將 最小化。

中的 是可以算得出來的,因此目標函數為:

Mean-Field Variational Inference

Variational Inference 有很多種作法,其中一種常見的作法為 Mean-Field Variational Inference ,這種方法是,假設 中的每個維度都是獨立的。這樣會比較容易求出它的值,即:(公式三)

每個獨立的 都是機率分佈,即積分結果為1:

Maximizing ELOB

再來,用 Mean-Field Variational Inference 的方法,把 整理一下。

可分成兩部分:

現在,要分別把(公式三)代入這兩項,並稍做整理,讓它們的值可以被求出來。

首先,來看

挑出 中的某個元素: ,整理一下,繼續以上推導過程:

由於 是 joint distribution,可以把 放到此機率分布的期望值裡,繼續以上推導過程:(公式四)

由於 中,把 中不是 全都消掉了,所以算完後的 只會剩 ,令:

將其代入(公式四),繼續推導過程,得出公式五

再來看

挑出 中的某個元素: ,整理一下,繼續以上推導過程:

不涉及 的部分,就當 來處理,整理以上公式,得出:(公式六)

(公式五)(公式六) 代入 ,得出:

根據以上結果,要將 最大化,則:

因此:

由於 個, 整個運算過程,有點類似 EM 演算法,就是挑選某個 根據以上公式,來更新其值,而其他的 則固定。這樣依序更新每個 ,一直循環下去,則最後收斂的結果,即為 Local Maximum

Reference

A Tutorial on Variational Bayesian Inference

http://www.orchid.ac.uk/eprints/40/1/fox_vbtut.pdf

Comments