통계 및 머신러닝 방법론을 공부하다보면 어떠한 확률분포 $p(\textbf{x})$를 따르는 확률변수 $\textbf{x}$에 대해 함수 $f(\textbf{x})$의 기댓값 (expected value)을 구하는 경우를 많이 접한다. 중요도 샘플링은 샘플 $\textbf{x}$에 대한 확률 $p(\textbf{x})$은 쉽게 계산할 수 있지만, $p(\textbf{x})$에서 샘플을 생성하는 것은 어려울 때 사용하는 방법이다. 먼저 $p(\textbf{x})$에 대한 $f(\textbf{x})$의 기댓값은 아래와 같이 정의된다.
$$\begin{equation} E_{p(\textbf{x})} [f(\textbf{x})] = \int f(\textbf{x}) p(\textbf{x}) d\textbf{x} \label{eq:exp_val} \end{equation}$$
만약 샘플을 생성하는 것이 쉬운 $q(\textbf{x})$라는 새로운 확률분포를 도입하면, $p(\textbf{x})$에 대한 기댓값은 식 $\eqref{eq:exp_val_q}$와 같이 $q(\textbf{x})$에 대한 것으로 계산할 수 있다.
$$\begin{equation} \begin{aligned}[b] E_{p(\textbf{x})} [f(\textbf{x})] &= \int f(\textbf{x}) p(\textbf{x}) d\textbf{x}\\ &= \int \frac{f(\textbf{x})p(\textbf{x})}{q(\textbf{x})} q(\textbf{x}) d\textbf{x}\\ &= E_{q(\textbf{x})}\left[\frac{f(\textbf{x})p(\textbf{x})}{q(\textbf{x})} \right] \end{aligned} \label{eq:exp_val_q} \end{equation}$$
중요도 샘플링에서 원래의 확률분포 $p(\textbf{x})$는 목표 분포 (target distribution)라 하고, 새롭게 도입된 $q(\textbf{x})$는 제안 분포 (proposal distribution)라고 한다. 제안 분포 $q(\textbf{x})$는 $f(\textbf{x})p(\textbf{x}) \neq 0$인 모든 $\textbf{x}$에 대해 $q(\textbf{x}) > 0$를 만족해야한다.
중요도 샘플링을 이용하면 $q(\textbf{x})$에서 생성된 샘플 $\textbf{x}_1, \textbf{x}_2, ..., \textbf{x}_n$을 이용하여 기댓값 $E_{p(\textbf{x})}[f(\textbf{x})]$를 식 $\eqref{eq:imp_sampling}$과 같이 계산할 수 있다.
$$\begin{equation} E_{p(\textbf{x})}[f(\textbf{x})] \approx \frac{1}{n} \sum_{i=1}^n \frac{f(\textbf{x}_i)p(\textbf{x}_i)}{q(\textbf{x}_i)} \label{eq:imp_sampling} \end{equation}$$
따라서 샘플링이 어려운 $p(\textbf{x})$ 대신에 샘플링이 쉬운 $q(\textbf{x})$를 이용하여 기댓값을 계산할 수 있는 것이다.
앞의 importance sampling에서는 $q$라는 확률 분포를 이용하여 $p$의 기댓값을 추정하는 방법을 보았다. Sampling-importance-resampling (SIR)은 $q$라는 확률 분포를 이용하여 $p$의 샘플을 생성하는 방법이다. 아래의 [알고리즘 1]은 SIR을 이용하여 $N$개의 샘플을 생성하는 과정을 보여준다.
'지능형시스템 > 머신러닝' 카테고리의 다른 글
[머신 러닝] 나이브 베이즈 분류기 (Naive Bayes Classifier, NBC) (0) | 2018.04.10 |
---|---|
[머신 러닝] Bayesian Decision Theory (0) | 2018.04.08 |
[머신 러닝] 기각 샘플링 (Rejection Sampling) (0) | 2018.04.08 |
[머신러닝] - 단층 퍼셉트론(Single-layer Perceptron) (15) | 2016.02.15 |
[머신러닝] - 자기조직화지도(Self-Organizing Map, SOM) (5) | 2016.01.05 |