圓州率
🌐

Feature Image

Monte Carlo Method

數學, 機率論
介紹 Monte Carlo Method 的採樣法 Inverse Method 與 Rejection Sampling,與 Monte Carlo Method 在期望值與積分估計的應用。

介紹

Monte Carlo Method 是一種隨機採樣方法,能用於期望值估計與積分估計,核心概念是隨機漫步 (random walk),這邊介紹幾種 Monte Carlo 方法

隨機採樣

隨機採樣 (Random Sampling) 假設機率分部已知,並透過採樣去分析機率分布的特徵,例如期望值,能應用於機率密度複雜、變數間不獨立或甚至問題不存在 closed form 的情況

介紹幾種常用的方式

  1. Inverse method: 一種透過計算分布反函數以產生採樣的方式,常用於透過均勻分布 Unif(0,1)\unif (0, 1) 去生成其他分布
  2. Rejection sampling: 一種透過設定拒絕範圍的採樣方式,適用於反函數不存在或分布過於複雜的情況
  3. Importance sampling: 一種調整 rejection sampling 的方案,透過調整權重以提高採樣效率的方案

Inverse Method

我們僅有的隨機生成工具一般只有均勻分布 Unif(0,1)\unif (0, 1),但能透過轉換使得採樣服從指定分布,給定 cdf (cumulative distribution function) P(x)P (x),我們會用上 cdf 的性質 P:R[0,1]P : \bb R \to [0, 1] 的反函數 P1:[0,1]RP^{-1} : [0, 1] \to \bb R 並以下定義

P1(x)=inf{t:P(t)x} \begin{align*} P^{-1} (x) = \inf \{ t : P (t) \geq x \} \end{align*}

使得

P1(U)P \begin{align*} P^{-1} (U) \sim P \end{align*}

其中 UU 為均勻 (0,1)(0, 1) 分布

其優點為計算簡單,缺點則是需計算 P1P^{-1},而並非所有分佈的 P1P^{-1} 都容易計算,例如常態分佈

演算法

  • 目標:給定 cdf PP,生成服從 PP 的採樣
  • 輸入:cdf PP、採樣數量 nn
  • 輸出:服從 PP 的採樣 x1,x2,,xn\contia{x}{n}
  1. 計算 P1(x)=inf{t:P(t)x}P^{-1} (x) = \inf \{ t : P (t) \geq x \}
  2. 生成 u1,u2,,unUnif(0,1)\contia{u}{n} \sim \unif (0, 1)
  3. 計算 xi=P1(ui)x_i = P^{-1} (u_i),其中 i=1,2,,ni = \conti{n}

Rejection Sampling

給定 pdf p(x)p (x) 且此分佈難以透過 inverse method 採樣,我們可以尋找另一個較容易採樣的分佈 q(x)q (x),且存在 c>0c > 0 使得對任意 xxcq(x)p(x)c q (x) \geq p (x)。在對 qq 採樣一個 xx 後有機率

p(x)cq(x) \begin{align*} \frac{p(x)}{c q(x)} \end{align*}

接受此採樣,反之則拒絕此次採樣

其優點為能適應複雜的 pdf p(x)p (x);但缺點是須找到一個已知採樣 q(x)q (x),且滿足 cq(x)p(x)c q (x) \geq p (x),若 p(x)p (x)cp(x)c p(x) 占比不高則會有大量的點被拒絕,導致採樣效率低下

演算法

  • 目標:給定 pdf PP,生成服從 PP 的採樣
  • 輸入:pdf PP、採樣數量 nn
  • 輸出:服從 PP 的採樣 x1,x2,,xn\contia{x}{n}
  1. 找到已知採樣 q(x)q (x) 且存在 c>0c > 0 使得任意 xxcq(x)p(x)c q (x) \geq p (x)
  2. 生成 xpx \sim puUnif(0,1)u \sim \unif (0, 1),若 up(x)/[cq(x)]u \leq p (x) / [c q(x)] 則接受此採樣;反之拒絕此採樣
  3. 重複步驟 2 直到接受採樣至 nn

絕對值指數分布生成常態分佈

已知常態分佈的 pdf 為

p(x)=12πexp(x22) \begin{align*} p (x) = \frac{1}{\sqrt{2 \pi}} \exp \left( - \frac{x^2}{2} \right) \end{align*}

其 cdf 不存在 closed form,因此難以使用 inverse method 採樣;但能透過 rejection sampling 生成,給定絕對值指數分佈 pdf 與 cdf

q(x)=12exQ(x)={112exif x012exotherwise \begin{align*} q (x) & = \frac{1}{2} e^{-|x|} \\ Q (x) & = \begin{cases} 1 - \frac{1}{2} e^{-x} & \text{if } x \geq 0 \\ \frac{1}{2} e^{x} & \text{otherwise} \end{cases} \end{align*}

透過 inverse method 轉換

Q1(x)={ln(2x)if 0<x12ln(22x)if 12<x<1 \begin{align*} Q^{-1} (x) & = \begin{cases} \ln (2x) & \text{if } 0 < x \leq \frac{1}{2} \\ - \ln (2 - 2x) & \text{if } \frac{1}{2} < x < 1 \end{cases} \end{align*}

以此獲得滿足 qq 分佈的採樣,接著尋找 c>0c > 0 使得 cq(x)p(x)c q(x) \geq p (x),等價於 cq(x)/p(x)1c q (x) / p (x) \geq 1

1cq(x)p(x)=c2exp(x)12πexp(x22)=cπ2exp((x1)212) \begin{align*} 1 \leq \frac{c q (x)}{p (x)} = \frac{\frac{c}{2} \exp (- |x|)}{\frac{1}{\sqrt{2 \pi}} \exp(-\frac{x^2}{2})} = c \sqrt{\frac{\pi}{2}} \exp \left( \frac{(|x| - 1)^2 - 1}{2} \right) \end{align*}

c2πexp((x1)212) \begin{align*} c \geq \sqrt{\frac{2}{\pi}} \exp \left( - \frac{(|x| - 1)^2 - 1}{2} \right) \end{align*}

因上式須對任意 xx 均成立,故

cmaxxR2πexp((x1)212)=2eπ1.3 \begin{align*} c \geq \max_{x \in \bb R} \sqrt{\frac{2}{\pi}} \exp \left( - \frac{(|x| - 1)^2 - 1}{2} \right) = \sqrt{\frac{2e}{\pi}} \approx 1.3 \end{align*}

接著生成 xpx \sim puUnif(0,1)u \sim \unif (0, 1),若 up(x)/[cq(x)]u \leq p (x) / [c q(x)] 則接受此採樣;反之拒絕此採樣,並重複此步驟直到接受採樣至 nn

期望值估計

給定隨機變數 XX 與其 pdf p(x)p (x),再給定函數 f(x)f (x),試計算期望值 Ep[f(X)]E_{p} [f (X)],可以透過採樣 x1,x2,,xnp\contia{x}{n} \sim p 與計算樣本平均

E^p[f(X)]=1ni=1nf(xi) \begin{align*} \hat E_{p} [f (X)] = \frac{1}{n} \sum_{i = 1}^{n} f (x_i) \end{align*}

大數法則 (law of large number) 下,此方式是收斂的

E^p[f(X)]Ep[f(X)]asn \begin{align*} \hat E_{p} [f (X)] \to E_{p} [f (X)] \quad \text{as} \quad n \to \infty \end{align*}

Monte Carlo Integration

給定積分函數 h(x)h (x)

Xh(x)dx \begin{align*} \int_{\mathcal X} h (x) dx \end{align*}

h(x)h (x) 能被分解成一個 pdf p(x)p (x) 與另一函數 f(x)f (x) 使得 h(x)=p(x)f(x)h (x) = p (x) f (x),則

Xh(x)dx=Xf(x)p(x)dx=Ep[f(x)] \begin{align*} \int_{\mathcal X} h (x) dx = \int_{\mathcal X} f (x) p (x) dx = E_p [f (x)] \end{align*}

將此問題轉換成期望值問題,即可以用期望值估計處理

參考資料

  1. LI, Hang. Machine Learning Methods. Springer Nature, 2023.
  2. Lange, Kenneth, J. Chambers, and W. Eddy. Numerical analysis for statisticians. Vol. 1. New York: springer, 2010.