본문 바로가기
Machine Learning

Bayesian Inference

by 두우우우움 2022. 11. 1.

 이번 글에서는 널리 사용되고 있는 Bayesian Inference에 대해 설명하고자 한다. 여러 분포 중에서 Normal Distribution의 Bayesian Inference에 대해 설명할 것이며 이후 어떻게 사용할 수 있는지 예제를 통해 이야기해볼 것이다.


 

 

Bayesian Inference: 베이즈 추론

 Bayesian Inference(베이즈 추론)는 prior(사전 확률)과 likelihood(가능도)를 통해 posterior(사후 확률)을 구하는 과정이다.

$$ p(\theta|X) = \frac{p(X|\theta)p(\theta)}{p(X)} $$

 

 위 식이 각각 나타내는 것은 \(posterior = \frac{likelihood \times prior}{evidence} \)이다.

 

 베이즈 추론은 베이즈 확률론을 기반으로 한다. 베이즈 확률론이란 모든 경우의 수를 알아 특정 사건이 일어날 확률을 하나의 값으로 표현하는 것이 아닌 불확실한 사건들을 일어날 확률로 나타내는 것이다. 예를 들어 동전 던지기나 주사위 던지기 같이 모든 경우의 수를 알고 있는 경우 특정 값이 나올 확률을 하나의 값으로 나타낼 수 있지만, 한 국가에서 사고가 일어날 확률 같이 모집단이 불분명한 경우에는 이미 일어난 사건을 기반으로 사후 확률을 추정해야 한다.

 

 이 글에서 알아보고자 하는 것은 모집단의 분포가 Normal Distribution을 따를 때, likelihood와 prior를 기반으로 분포를 추정하는 방법이다.

$$ p(\mu| X) = \frac{p(X|\mu)p(\mu)}{p(X)} $$

 

 위 식과 같이 Bayesian Inference로 Normal Distribution의 \(\mu\)를  추정할 수 있다. 기존에 추정한 \(\mu\)를 통해 Prior Distribution를 알 수 있고 이후 추출된 sample을 통해 likelihood를 구할 수 있다. 이 둘을 통해 Posterior Distribution의 \(\mu\)를 추정하고 이는 다음 추정에서 prior가 된다. 


 

 

Conjugate Prior Distribution: 켤레 사전 분포 

 Bayesian Inference를 통해 Normal Distribution을 추정하기 위해선 Prior Distribution(사전 분포)이 Normal Distribution일 때, Posterior Distribution(사후 분포)도 동일한 분포를 따르는지 확인해야 한다. 이렇게 Prior Distribution과 Posterior Distribution이 동일한 분포를 따르면 Prior Distribution을 Conjugate Prior Distribution(켤레 사전 분포)이라고 한다. 

 

 해당 글에서는 Normal Distribution의 분산은 알고 있고 평균만 추정하는 과정을 증명할 것이며 분산을 추정하는 방법은 아래 Reference를 참고해주길 바란다.

 

 $$ f(\mu|X)\propto l(X|\mu)f(\mu) $$

 증명을 위해 Bayesian Inference 식을 위처럼 변환하였다. Evidence를 나타내는 \(P(X)\)는 상수화하였다. 해당 증명은 "모두 독립인 Sample \(X=x_{1},...,x_{n}\)가 Known Variance \(\sigma\)와 Unknown Mean \(\mu\)을 가진 Normal Distribution을 따를 때, Prior Distribution은 \(\mu \sim N(\mu_{0}, \sigma_{0})\)을 따르고 Posterior Distribution은 \(\mu|X \sim N(\mu_{1}, \sigma_{1})\)을 따른다."부터 시작한다.

 

 그럼 Prior Distribution의 \(\mu_{0}\), \(\sigma_{0}\)와 Likelihood를 통해 어떻게 Posterior Distribution의 \(\mu_{1}\), \(\sigma_{1}\)을 구하는지 알아본다.

 

Prior Distribution

$$ f(\mu) = \frac{1}{\sqrt{2\pi\sigma_{0}}}e^{-\frac{1}{2\sigma_{0}}(\mu-\mu_{0})} $$

$$ \qquad \quad \, \propto exp[-\frac{1}{2\sigma_{0}}(\mu-\mu_{0})^{2}] $$

$$ \qquad \qquad \qquad \; = exp[-\frac{1}{2\sigma_{0}}(\mu^{2}-2\mu\mu_{0}+\mu^{2}_{0}) $$

$$ \qquad \qquad \; \propto exp[-\frac{1}{2\sigma_{0}}(\mu^{2}-2\mu\mu_{0})] $$

 

Likelihood Function

$$ l(X|\mu) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi\sigma}}e^{-\frac{1}{2\sigma}(x_{i}-\mu)^{2}} $$

$$ \qquad \qquad \, \propto exp[-\frac{1}{2\sigma}\sum_{i=1}^{n}(x_{i}-\mu)^{2}] $$

$$ \qquad \qquad \qquad \qquad \qquad = exp[-\frac{1}{2\sigma}(\sum_{i=1}^{n}x_{i}^{2}-2\mu\sum_{i=1}^{n}x_{i}+n\mu^{2})]  $$

$$ \qquad \qquad \quad \; \, \propto exp[-\frac{1}{2\sigma}(-2\mu n \bar{x} + n\mu^{2})]  $$

 

Posterior Distribution

$$ f(\mu|X) \propto l(X|\mu)f(\mu) \propto exp[-\frac{1}{2\sigma_{0}}(\mu^{2}-2\mu\mu_{0})] \cdot exp[-\frac{1}{2\sigma}(-2\mu n\bar{x}+n\mu^{2})] $$

$$ \qquad \qquad \qquad \quad = exp[-\frac{1}{2\sigma_{0}}(\mu^{2}-2\mu\mu_{0})-\frac{1}{2\sigma}(-2\mu n\bar{x}+n\mu^{2})] $$

$$ \qquad \qquad = exp[-\frac{1}{2}(\frac{1}{\sigma_{0}}+\frac{n}{\sigma})\mu^{2}+(\frac{\mu_{0}}{\sigma_{0}}+\frac{n\bar{x}}{\sigma})\mu] $$

 

$$ \text{if } \sigma_{1}=\frac{\sigma\sigma_{0}}{\sigma+n\sigma_{0}}, \; \mu_{1}=(\frac{\mu_{0}}{\sigma_{0}}+\frac{n\bar{x}}{\sigma})\sigma_{1} $$

 

$$ = exp[-\frac{1}{2\sigma_{1}}\mu^{2}+\frac{\mu_{1}}{\sigma_{1}}\mu] $$

$$ \; \; \; = exp[-\frac{1}{2\sigma_{1}}(\mu^{2}-2\mu_{1}\mu)] $$

$$ \qquad \quad \propto exp[-\frac{1}{2\sigma_{1}}(\mu^{2}-2\mu_{1}\mu+\mu_{1}^{2})] $$

$$ \qquad \qquad \quad \; = exp[-\frac{1}{2\sigma_{1}}(\mu-\mu_{1})^{2}] \sim N(\mu_{1}, \sigma_{1}) $$

 

 위에서 증명한 것과 같이 아래의 식을 이용하면 Prior Distribution(\(\mu_{0}, \sigma_{0}\))와 Likelihood(\(x\))를 통해 Posterior Distribution(\(\mu_{1},\sigma_{1}\))을 추정할 수 있다.

$$ \sigma_{1}=\frac{\sigma\sigma_{0}}{\sigma+n\sigma_{0}}, \; \mu_{1}=(\frac{\mu_{0}}{\sigma_{0}}+\frac{n\bar{x}}{\sigma})\sigma_{1} $$


 

 

Implementation

 가상의 게임에서 유저 A의 실력 점수 분포가 \(N(300, 30)\)인 분포를 따를 때, 100판 동안 유저 A의 점수 Sequence는 아래 Plot과 같을 것이다.

 해당 점수 Sequence를 통해 유저의 실력 분포의 평균을 알아보고자 한다. (분산을 알고있다고 가정)

 

 최초의 Prior Distribution의 \(\mu_{0}\)와 \(\sigma_{0}\)는 특정 값으로 초기화를 시켜줘야하며 이는 100과 30으로 설정하였고 한 게임의 결과가 나오자마자 추론을 진행할 것(Single Batch)이므로 \(x\)는 294.79, \(n\)은 1이다.

 

$$ \sigma_{1}=\frac{\sigma\sigma_{0}}{\sigma+n\sigma_{0}}, \; \mu_{1}=(\frac{\mu_{0}}{\sigma_{0}}+\frac{n\bar{x}}{\sigma})\sigma_{1} $$

 위에서 얻은 파라미터를 그대로 아래 식에 대입하면 \(\sigma_{1}=15, \mu_{1}=197.39\)가 된다. 이렇게 얻은 \(\mu_{1}\)와 \(\sigma_{1}\)는 다음 게임 결과에서 Prior Distribution(\(\mu_{0}, \sigma_{0}\))이 되어 다음 Posterior Distribution을 추정한다.

 

 이렇게 게임 판수가 늘어날수록 Bayesian Inference를 통해 추정한 \(\mu\)(green line)이 실제 \(\mu\)(orange line)에 수렴하는 것을 확인할 수 있다.


 

 

Reference

 Conjugate Prior Distribution을 통해 평균 뿐만 아니라 분산도 추정하는 방법과 증명을 알고 싶다면 해당 링크를 참고해주세요.

 

 위처럼 Bayesian Inference를 통해 구한 \(\mu\)가 Precision에서 어떤 의의를 가지고 있는지 궁금하거나 Normal Distribution 외 다른 Gaussian Distribution의 Bayesian Inference를 증명하고 싶다면 해당 논문을 참고해주세요.

 

'Machine Learning' 카테고리의 다른 글

Factor Graph: 인자 그래프  (0) 2022.10.24

댓글