Monte Carlo và Markov Chain Monte Carlo

The devil is in the details, hoá ra ứng dụng Bayesian Optimization trong thực tế khá là phức tạp. Vậy nên bài này sẽ ôn lại kiến thức về phương pháp Monte Carlo và MCMC. Vẫn chưa biết đến khi nào mới có thể viết một bài tổng hợp về Bayesian Optimization.

1. Luật mạnh số lớn (Strong law of large numbers – SLLN)

Luật mạnh số lớn rất đơn giản: khi N càng lớn thì trung bình mẫu hội tụ gần như chắc chắn (almost surely converge) về kì vọng:

\displaystyle \frac{1}{N}\sum_{i=1}^N x_i \overset{a.s.}{\rightarrow} \mu khi N \rightarrow \infty

với điều kiện là các mẫu x_i phải là i.i.d.

Mặt khác, ta biết rằng nếu biến ngẫu nhiên X tuân theo phân phối xác suất f\left(x\right), và g\left(X\right) là một hàm theo X, thì kì vọng của g\left(X\right) được tính là:

\displaystyle E\left[g\left(X\right)\right] = \int g\left(x\right)f\left(x\right)dx

Vậy nên theo luật mạnh số lớn, khi số mẫu càng lớn thì giá trị trung bình mẫu của g\left(X\right) sẽ hội tụ về kì vọng:

\displaystyle \left(\frac{1}{N}\sum_{i=1}^N g\left(X_i\right)\right) \overset{a.s.}{\rightarrow} \left(\int g\left(x\right)f\left(x\right)dx\right) khi N \rightarrow \infty    (1)

Như vậy khi tích phân ở bên phải không tính được, ta có thể tính xấp xỉ nó bằng cách lấy thật nhiều mẫu X_i và tính biểu thức ở bên trái. Đây là tư tưởng cơ bản của phương pháp Monte Carlo, như sẽ trình bày sau đây.

2. Phương pháp Monte Carlo: Importance Sampling

Hầu hết các mô hình máy học có giám sát (supervised ML models) đều cố gắng mô hình hoá xác suất likelihood p\left(y\vert x; \theta\right), trong đó \theta là các tham số trong mô hình. Như trong bài trước, ta biết rằng trong cách tiếp cận Bayesian thì tham số \theta tuân theo phân phối tiền nghiệm p\left(\theta\right), và ta sẽ quan tâm đến xác suất hậu nghiệm (posterior):

\displaystyle p\left(\theta\vert x, y\right) = \frac{p\left(y\vert x, \theta\right)p\left(\theta\right)}{\int p\left(y\vert x, \theta\right)p\left(\theta\right)d\theta} = \frac{1}{Z}p\left(y\vert x, \theta\right)p\left(\theta\right)    (2)

Vấn đề là

Z = \displaystyle \int p\left(y\vert x, \theta\right)p\left(\theta\right)d\theta     (3)

là tích phân trên toàn miền xác định của \theta, và nói chung là khó chịu. Vậy nên ta không thể tính chính xác xác suất hậu nghiệm này được.

Cái mẹo chủ yếu của phương pháp Monte Carlo là ta sẽ nhân và chia công thức (3) cho một đại lượng q\left(\theta\right):

\displaystyle Z = \int p\left(y\vert x, \theta\right)p\left(\theta\right)d\theta = \int \frac{p\left(y \vert x, \theta\right)p\left(\theta\right)}{q\left(\theta\right)}q\left(\theta\right)d\theta =\int \omega\left(\theta\right) q\left(\theta\right)d\theta

Để ý rằng nếu q\left(\theta\right) là phân phối của \theta thì tích phân ở trên chính là kì vọng của \omega\left(\theta\right).

Bây giờ nếu ta lấy mẫu \theta^{\left(i\right)} \sim q\left(\theta\right), thì theo luật mạnh số lớn (1), khi N càng lớn thì trung bình mẫu hội tụ về kì vọng:

\displaystyle \left(\frac{1}{N}\sum_{i=1}^N \omega\left(\theta^{\left(i\right)}\right)\right) \overset{a.s.}{\rightarrow} \left(\int \omega\left(\theta\right) q\left(\theta\right)d\theta\right) khi N \rightarrow \infty    (4)

Với công thức này, ta có thể lấy mẫu để tính xác suất hậu nghiệm của tham số \theta trong (2).

Tuy nhiên trong thực tế ta hay phải làm prediction, tức là cho tập huấn luyện D = \left\{x_i, y_i\right\}_{i=1}^t và một mẫu input x_{t+1}, ta muốn mô hình hoá xác suất p\left(y_{t+1} \vert D, x_{t+1}\right). Ta viết như sau:

\displaystyle \begin{array}{rl} p\left(y_{t+1} \vert D, x_{t+1}\right) & \displaystyle = \int p\left(y_{t+1} \vert x_{t+1}, \theta\right) p\left(\theta \vert D \right)d\theta \\ & \displaystyle = \int p\left(y_{t+1} \vert x_{t+1}, \theta\right) \frac{p\left(D \vert \theta \right) p\left(\theta\right)}{p\left(D\right)}d\theta \\ & \displaystyle = \frac{1}{p\left(D\right)} \int p\left(y_{t+1} \vert x_{t+1}, \theta \right) p\left(D \vert \theta\right) p\left(\theta\right) d\theta \\ & = \frac{\displaystyle \int p\left(y_{t+1} \vert x_{t+1}, \theta \right) p\left(D \vert \theta\right) p\left(\theta\right) \frac{q\left(\theta\right)}{q\left(\theta\right)} d\theta}{\displaystyle \int p\left(D \vert \theta\right) p\left(\theta\right) \frac{q\left(\theta\right)}{q\left(\theta\right)} d\theta } \\ & = \frac{\displaystyle \int p\left(y_{t+1} \vert x_{t+1}, \theta \right) \omega\left(\theta\right) q\left(\theta\right) d\theta}{\displaystyle \int \omega\left(\theta\right) q\left(\theta\right) d\theta } \end{array}

Trong đó \omega\left(\theta\right) = \frac{p\left(D \vert \theta \right)p\left(\theta\right)}{q\left(\theta\right)}.

Áp dụng (4) ta có:

\displaystyle \begin{array}{rl} p\left(y_{t+1} \vert D, x_{t+1}\right) & = \frac{\displaystyle \int p\left(y_{t+1} \vert x_{t+1}, \theta \right) \omega\left(\theta\right) q\left(\theta\right) d\theta}{\displaystyle \int \omega\left(\theta\right) q\left(\theta\right) d\theta } \\ & \approx \frac{\displaystyle \frac{1}{N}\sum_i p\left(y_{t+1}\vert x_{t+1}, \theta^{\left(i\right)}\right)\omega\left(\theta^{\left(i\right)}\right)}{\displaystyle \frac{1}{N}\sum_j \omega\left(\theta^{\left(j\right)}\right)} \\ & \displaystyle \approx \sum_i \tilde{\omega}\left(\theta^{\left(i\right)}\right) p\left(y_{t+1}\vert x_{t+1}, \theta^{\left(i\right)}\right)\end{array}

với \tilde{\omega}\left(\theta^{\left(i\right)}\right) = \frac{\omega\left(\theta^{\left(i\right)}\right)}{\sum_j\omega\left(\theta^{\left(j\right)}\right)}.

q\left(\theta\right) là phân phối xác suất do ta “bịa” ra, ta sẽ chọn q\left(\theta\right) sao cho dễ lấy mẫu. Như vậy ta có thể lấy thật nhiều mẫu \theta_i, sau đó dùng công thức trên để xấp xỉ xác suất hậu nghiệm.

Điều tricky là để luật mạnh số lớn áp dụng được thì các mẫu \theta_i phải là i.i.d. Hơn nữa nếu q\left(\theta\right) càng gần p\left(D\vert \theta\right) p\left(\theta\right) thì chất lượng lấy mẫu sẽ càng cao.

3. Markov Chain Monte Carlo

Ý tưởng chính là ta sẽ “cơ cấu” một chuỗi Markov để lấy mẫu từ p\left(D\vert \theta\right) p\left(\theta\right), đồng thời bằng cách đi theo chuỗi Markov ta sẽ navigate qua tất cả các region quan trọng của phân phối này.

Hai thuật toán quan trọng của MCMC là Metropolis-Hasting và Gibbs sampling, sẽ được trình bày trong một bài khác, khi có dịp.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s