정의
중요 샘플링(importance sampling)은 기댓값을 계산하고자 하는 확률분포함수는 알고 있지만 샘플을 생성하기가 어려울 때 해당 확률분포함수 대신에 샘플을 생성하기가 쉬운 다른 확률분포함수를 이용해 기댓값을 추정하는 방법이다.
즉, 샘플 x에 대한 확률 p(x)는 쉽게 계산할 수 있지만, p(x)에서 샘플을 생성하는 것이 어려울 때 사용하는 방법이다.
다음과 같이 확률밀도함수 p(x)에 기반한 함수 f(x)의 기댓값을 구한다.
아래의 q(x)는 p(x)와 다른 확률밀도함수이다.
Ex∼p(x)[f(x)]=∫xp(x)f(x)dx=∫xq(x)q(x)p(x)f(x)dx=Ex∼q(x)[q(x)p(x)f(x)]
기대값의 아래 첨자 x∼p(x)는 기댓값을 계산할 때 확률밀도함수로 p(x)를 사용한다는 의미이다.
위 식에서 보듯이 p(x)에 기반한 함수 f(x)의 기댓값을 q(x)에 기반해 계산할 수 있다는 것을 알 수 있다.
중요도(importance)라는 가중치를 통해서 샘플링하여 원래 목표한 p(x)에 가까울 경우 더 큰 값을 계산하고, 쉽게 샘플링할 수 있는 q(x)가 크다면 중요도를 낮게 판단하여 계산하는 방식이다.
함수 f(x)의 분산은 정의에 의해 다음과 같다.
Varp(x)[f(x)]=Ex∼p(x)[(f(x))2]−(Ex∼p(x)[f(x)])2
중요 샘플링의 분산도 정의에 의해 아래와 같이 된다.
Varq(x)[q(x)p(x)f(x)]=Ex∼q(x)[(q(x)p(x)f(x))2]−(Ex∼q(x)[q(x)p(x)f(x)])2=∫x(q(x)p(x)f(x))2q(x)dx−(Ex∼p(x)[f(x)])2=Ex∼p(x)[q(x)p(x)(f(x))2]−(Ex∼p(x)[f(x)])2
📌 중요 샘플링의 분산과 원래 분산을 비교해보면 중요 샘플링의 분산 값이 q(x)p(x)값에 따라서 원래 분산보다 매우 커질 수도 있음을 알 수 있다.
예시
예를 들어, 1500만 명의 한국 성인 남성의 평균 키를 구하고 싶다고 생각할 때 1500만 명의 키에 대한 확률분포를 p(x), 1500명의 한국 성인 남성에 대한 키의 확률분포를 q(x)라고 하면
위 식을 통해 1500명의 샘플만을 가지고도 1500만명의 키의 기댓값을 알 수 있다.
- 1500명의 샘플에서 뽑았더니 키가 170cm(+/-0.5cm 내외)인 사람이 나왔다. q(x)에서는 0.5이라는 확률로 존재하지만, 반면에 p(x)에서는 0.6라는 확률로 존재한다.
- 따라서 중요도 샘플링비인 0.50.6을 곱해주면 1.2*170 = 204가 나온다. ~ 즉 1500만 명의 키에 대한 확률분포에서 나온 높은 확률값이 더 중요하므로 더 큰 가중치를 곱해준다.
- 그리고 다음 샘플을 1500명의 샘플에서 뽑았는데 180cm인 사람이 나왔다. q(x)에서는 0.05인데 p(x)에서는 0.04이다. 따라서 중요도 샘플링비를 곱한 값은 0.8*180 = 144가 나온다. ~ 즉 1500만 명의 키에 대한 확률분포에서 나온 낮은 확률값이 더 중요하므로 더 작은 가중치를 곱해준다.
- 그리고 샘플의 갯수 2로 나눠주면 174라는 값이 나왔다.
- 이런 식으로, 샘플의 개수를 늘려가면서 계산한다면 중요도 샘플링을 통해 효율적으로 기댓값이나 분산을 구할 수 있다.
References
[1] 박성수. (2020). 수학으로 풀어보는 강화학습 원리와 알고리즘. 위키북스