본문 바로가기
지능형시스템/머신러닝

[머신 러닝] 중요도 샘플링 (Importance Sampling)과 기댓값 추정

by CHML 2018. 4. 8.
1. 중요도 샘플링 (Importance Sampling)

통계 및 머신러닝 방법론을 공부하다보면 어떠한 확률분포 $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})$를 이용하여 기댓값을 계산할 수 있는 것이다.

 

2. 중요도 샘플링의 이점과 활용

 

 

 

2. Sampling-importance-resampling (SIR)

앞의 importance sampling에서는 $q$라는 확률 분포를 이용하여 $p$의 기댓값을 추정하는 방법을 보았다. Sampling-importance-resampling (SIR)은 $q$라는 확률 분포를 이용하여 $p$의 샘플을 생성하는 방법이다. 아래의 [알고리즘 1]은 SIR을 이용하여 $N$개의 샘플을 생성하는 과정을 보여준다.