Bayesian Learning Notes


枉費我學習 ML 這麼久, 最近才完整了解 Bayesian learning 大架構, 以及與 MLE, MAP, Variational Inference, Sampling 之間的關聯. 這才終於有了見樹又見林的港覺阿! 筆記整理如下 …

圖片來自 wiki, 我也好想要這個裝飾燈. 就這麼一個 Baye’s Rule, 撐起了統計機器學習的基石!


Bayesian Learning

給定訓練集 ($X,Y$) 和一個 probabilistic classifier $p(y|x,\theta)$, 同時定義好 prior distribution $p(\theta)$.

根據 Baye’s rule, Training stage 如下:

$$\begin{align} p(\theta|X,Y)=\frac{p(Y|X,\theta)p(\theta)}{\color{red}{\int p(Y|X,\theta)p(\theta)\,d\theta}} \end{align}$$

Testing stage 如下:

$$\begin{align} p(y^*|x^*,X,Y)=\color{red}{\int p(y^*|x^*,\theta)p(\theta|X,Y)\,d\theta} \end{align}$$

注意到關鍵的兩個紅色積分通常都是不容易算, 或根本算不出來. 此時我們有兩種選擇:

  1. 使用 Variational Inference 找出一個 $q(\theta)$ 來逼近 $p(\theta|X,Y)$
  2. 使用 sampling 方法. 理解一下這個積分的形式, 可以發現這是在算根據某個機率分佈$p(x)$計算$f(x)$的期望值. 因此, 如果我們直接根據 $p(x)$ sample 出 $M$ 個 $x$, 就可以用如下的平均算出近似值了.
$$\begin{align} \int p(x)f(x) \,dx \simeq \frac{1}{M}\sum_{i=1}^M f(x_i)\mbox{, where }x_i \sim p(x) \end{align}$$

我們可能會想, 是不是可以將 Bayesian learning 做些簡化來避掉上述紅色積分? 是的, MLE 和 MAP 就是簡化了完整的 Bayesian learning 過程. 下面介紹.


MLE and MAP

Baye’s rule (式 (1)), 在 ML 中舉足輕重, 幾乎是所有的根本. 重新列出來並用不同顏色做強調

$$\begin{align} \color{orange}{p(\theta|X,Y)}=\frac{\color{blue}{p(Y|X,\theta)}\color{green}{p(\theta)}}{\color{red}{\int p(Y|X,\theta)p(\theta)\,d\theta}} \end{align}$$

橘色稱為 posterior distribution, 藍色為 likelihood, 而綠色為 prior distribution. 注意到紅色的期望值基本算不出來, 在這種情況下, 我們要怎麼得到 posterior?

MLE

MLE (Maximum Likelihood Estimation) 的想法是, 既然 posterior 算不出來, 那乾脆直接用一個 $\theta^*$ 代表整個 $p(\theta|X,Y)$ 分布算了. 至於要找哪一點呢, 就找對 likelihood 最大的那點吧! 數學這麼寫:

$$\begin{align} \theta_{MLE}=\arg\max_\theta p(Y|X,\theta) \end{align}$$

既然已經用一個點來代表整個 posterior 了, 因此原來的 testing (2) 就不需要積分了, testing stage 直接就是:

$$\begin{align} p(y^*|x^*,\theta_{MLE}) \end{align}$$

MAP

MAP (Maximum A Posterior) estimation 跟 MLE 相同, 也使用一個點來代表整個 posterior:

$$\begin{align} \theta_{MP}=\arg\max_\theta p(\theta|X,Y) \end{align}$$

意思是 MAP 直接使用 mode 來代表整個 posterior. 因此 testing stage 也如同 MLE 情形:

$$\begin{align} p(y^*|x^*,\theta_{MP}) \end{align}$$

不過聰明的讀者應該會覺得很疑惑, posterior 不是很難計算, 或根本算不出來, 這樣怎麼可能找的到 mode? 是的, 一般情形下是找不出來, 但有一個特殊情況叫做 conjugate prior. conjugate prior 指的是 prior 與 posterior 屬於同一個 distribution family, 等於是告訴我們 posterior 是什麼樣的 distribution, 因此算不出來的紅色期望值(式(4))也根本沒必要去計算, 只不過是個 normalization constant. 因此明確知道 posterior 是什麼樣的 distribution, 找 mode 就容易多了.

所以對於 MAP 來說有哪些 distribution 是互為 conjugate 變得很重要. 我們可以從 wiki 上查到明確資料. 基本上 exponential family 都是.


完全避掉紅色積分項了嗎?

很多模型都具有 latent variable (一般都用 $z$ 表示) 的形式

稍微說明下, 一般說的 latent variable 會隨著 data 變大而變大, 而 parameter $\theta$ 不會. 以 GMM 為例子, latent variable 指每一個 observation 是哪一個 Gaussian 產生出來的那個 index, 而 parameter 是 Gaussian components 的 mean, var, 和 mixture weights 集合.

可以使用 EM algorithm 來找出 MLE 或 MAP . 其中 E-step 為 “令 $q(z)$ 等於 $p(z|x,\theta^{odd})$”, 這又回到如同式 (1) 求 posterior 會遇到分母積分項的問題. 如果我們的 $z$ 的值有限個的 (如 GMM, $z$ 的值就是 component 的 index), $p(z|x,\theta^{odd})$ 可以直接算出來. 但複雜一點就不行了, 所以情況又變得跟原來的 Bayesian learning 一樣, 兩種選擇:

  1. 使用 Variational Inference, 這時稱為 Variational EM.
  2. 使用 sampling 方法. Sampling 通常採用 MCMC 方式, 這時稱為 MCMC EM.

Summary

擷取自 Coursera 的 Bayesian Methods for Machine Learning 課程投影片如下: (圖中的 $T$ 指的是 latent variable)