Markov Chain & Monte Carlo

Blackteaxx發表於2024-05-14

Background

在機率圖模型的推斷過程中,當過程比較複雜時,需要進行大量的計算,這時候就需要使用一些近似推斷的方法。

Monte Carlo Method

一種基於取樣的隨機近似方法,主要用途是數值積分。

而我們經常透過一個機率\(p(Z|X)\),其中\(Z\)是我們 latent variable,\(X\)是 observed variable,來求取期望\(\mathbb{E}_{Z|X}[f(Z)] = \int f(Z) p(Z|X) \text{d}Z\),此時可以使用 Monte Carlo 透過取樣求積分, \(\int f(Z) p(Z|X) \text{d}Z \approx \frac{1}{N} \sum f(Z_i)\), 那麼問題就轉化為了如何從複雜分佈中取樣\(Z_i\)

  1. 機率分佈取樣

透過計算機能夠產生一個均勻分佈的隨機數,然後透過給定的 pdf \(p(z)\)獲得 cdf,然後透過 cdf 的反函式得到取樣。

  1. 拒絕取樣 (Rejection Sampling)

先指定一個 proposal distribution \(q(z)\),使得 \(q(z) \geq M p(z)\),其中 \(M\) 是一個常數,指定接受率\(\alpha=\frac{p(z_i)}{Mq(z_i)}\), 演算法描述為:

a. 從 \(q(z)\) 中取樣 \(z_i\)
b. 在 0-1 均勻分佈中取樣 \(u\)
c. 如果 \(u \leq \alpha\) 則接受 \(z_i\),否則拒絕

即,我們其實知道\(p(z_i)\)在某一點的取值,但是我們不知道整體的分佈,因此我們透過一個簡單的分佈\(q(z)\)來近似,然後透過接受率來判斷是否接受。

  1. 重要性取樣 (Importance Sampling)

$\mathbb{E}_{ p(z) }[f(z)] = \int p(z) f(z) \text{d}z = \int \frac{p(z)}{q(z)} q(z) f(z) \text{d} z \approx \frac{1}{N}\sum f(z_i) \frac{p(z_i)}{q(z_i)} $

嚴重依賴於 q 的選擇,如果 q 選擇不當,會導致取樣的效率很低。

  1. Sampling Importance Resampling (SIR)

Markov Chain

隨機過程研究的是一個隨機變數序列,而馬爾可夫鏈是一種特殊的隨機過程。

馬爾可夫鏈是一個事件和狀態都是離散的,具有齊次\(n\)階馬爾可夫性的隨機過程,即給定現在的狀態,未來的狀態與過去的狀態無關。
1 階 Markov Chain:\(p(x_t | x_{t-1}, x_{t-2}, \dots, x_1) = p(x_t | x_{t-1})\)

我們定義轉移矩陣\(p_{ij} = p(x_{t+1} = j | x_t = i)\)

以機率圖模型表示,即為

graph LR x1 --> x2 --> x3 --> ... --> xt --> ....

\(t\)時刻狀態的\(x\)取值可以由\(t-1\)時刻的狀態+轉移機率求邊緣機率得到。

平穩分佈\(\pi = \pi P\),其中\(\pi\)是一個行向量,\(P\)是轉移矩陣,\(\pi\)是一個平穩分佈,即\(\pi = \pi P = \pi P^2 = \dots\),也可以表示為\(\pi(i) = \sum_j \pi(j) p_{ji}\)

Detailed balance condition\(\pi(i) p_{ij} = \pi(j) p_{ji}\)

\(\text{Detailed balance condition} \Rightarrow \text{Balance Distribution}\)

Proof

\[\sum_j \pi(j) p_{ji} = \sum_j \pi(i) p_{ij} = \pi(i) \sum_j p_{ij} = \pi(i) \]

假如我們能夠構造一個馬爾可夫鏈,使得其平穩分佈為我們要求的分佈,那麼我們就可以透過馬爾可夫鏈的取樣來獲得我們要求的分佈。

MH Algorithm

主要思想:從一個 Markov Chain 中不斷地取樣,使得其平穩分佈為我們要求的分佈。

我們需要構造轉移矩陣,使得其平穩分佈為我們要求的分佈。但是不能直接構造出這樣的矩陣,但是透過detailed balance condition可以構造平穩分佈,因此我們先構造一個提議分佈\(Q(x^\star | x^{t-1})\),然後透過構造一個接受率來使得滿足以下條件:

\[p(x^{t-1}) Q(x^\star | x^{t-1}) A(x^\star| x^{t-1}) = p(x^\star) Q(x^{t-1} | x^\star) A(x^{t-1} | x^\star) \]

如果我們定義接受率為\(A(x^\star| x^{t-1}) =\min(1, \frac{p(x^\star) Q(x^{t-1} | x^\star)}{p(x^{t-1}) Q(x^\star | x^{t-1})}\)) ,那麼上述等式就可以滿足 detailed balance condition。

Proof

那麼上述等式左邊即可被表示為:

\[p(x^{t-1}) Q(x^\star | x^{t-1}) A(x^\star| x^{t-1}) = \\ p(x^{t-1}) Q(x^\star | x^{t-1}) \min(1, \frac{p(x^\star) Q(x^{t-1} | x^\star)}{p(x^{t-1}) Q(x^\star | x^{t-1})} )= \\ \min(p(x^{t-1}) Q(x^\star | x^{t-1}), p(x^\star) Q(x^{t-1} | x^\star)) = \\ p(x^{t-1}) Q(x^\star | x^{t-1}) \min(1, \frac{p(x^\star) Q(x^{t-1} | x^\star)}{p(x^{t-1}) Q(x^\star | x^{t-1})} ) = \\ p(x^\star) Q(x^{t-1} | x^\star) A(x^{t-1} | x^\star) \]

即我們可以透過構造一個接受率為\(A(x^\star| x^{t-1}) =\min(1, \frac{p(x^\star) Q(x^{t-1} | x^\star)}{p(x^{t-1}) Q(x^\star | x^{t-1})}\))的轉移矩陣,使得其平穩分佈為我們要求的分佈。

End Proof

那麼根據拒絕取樣的思想,我們可以透過一個簡單的分佈\(q(x)\)來近似\(p(x)\),然後透過接受率來判斷是否接受。

這裡的接受率在演算法當中是怎麼計算出來的?

相關文章