Machine Learning

Importance Sampling

Viator 2022. 12. 20. 09:33

Importance Sampling은 기댓값을 계산하는 확률분포함수는 알고 있지만 표본을 생성하기 어려울 때 해당 확분포함수 대신에 표본을 생성하기가 쉬운 다른 확률 분포함수를 이용해 기댓값을 추정하는 방법이다.

즉 표본 x의 확률분포함수를 p(x)라 할 때 해당 표본에 대한 어떤 함수 f(x)의 기댓값은 아래와 같이 전개할 수 있게 된다는 것이다.

Exp(x)[f(x)]=xp(x)f(x)dx=xp(x)q(x)q(x)f(x)dx=Exq(x)[p(x)q(x)f(x)]

여기서 pq의 다름 정도를 나타내는 p(x)q(x)importance weight이라 칭한다. 그래서 importance sampling은 importance weight으로 비율을 맞춰주면서 f(x)에 대한 기대값을 구하는 기법이라고도 할 수 있다. 그렇다면 p(x)로 샘플링을 하기 힘든 모든 상황에서 이 단순한 대체 기법을 적용할 수 있을까?
결론부터 얘기하면 p(x)q(x)가 비슷하지 않으면 분산이 달라지기 때문에 적용하기 어렵다.

본래의 확률분포함수 p(x)를 따른 f(x)의 분산식은 아래와 같고,

Varxp(x)[f(x)]=Exp(x)[f(x)2]Exp(x)[f(x)]2

대체 확률분포함수 q(x)를 따른 f(x)의 분산식은 아래와 같다.

Varxq(x)[f(x)]=Exq(x)[(p(x)q(x)f(x))2](Exq(x)[p(x)q(x)f(x)])2=x(p(x)q(x)f(x))2q(x)dx(Exp(x)[f(x)])2=xp(x)q(x)(f(x))2p(x)dx(Exp(x)[f(x)])2=Exp(x)[p(x)q(x)(f(x))2](Exp(x)[f(x)])2

여기서 두 분산식의 첫째항을 살펴보면 p(x)q(x)가 1이 될 때의 값은 같으나 p(x)q(x)의 값이 같지 않으면 본래의 분산식과는 차이가 생겨 p대신 q를 사용하는 결과에 대해 신뢰하기 어렵게 된다.

그러므로 이 importance sampling 사용에 있어서 "p(x)q(x)의 값이 거의 비슷할 때" 라는 제약조건이 붙는다.