[최적화이론] 최대 사후확률 추정 Maximum A Posteriori (MAP)

Ethan·2023년 3월 29일
0

최적화이론

목록 보기
3/5

본 블로그의 모든 글은 직접 공부하고 남기는 기록입니다.
잘못된 내용이나 오류가 있다면 언제든지 댓글 남겨주세요.


Maximum Likelihood Estimation (MLE)에 대한 글을 먼저 읽으면 이해에 도움이 됩니다.

Posteriori?

Poseteriori는 사후확률이라는 뜻입니다. 가능도를 최대화하는 것이 목적이었던 MLE와 달리, MAP는 사후확률을 최대화함으로써 최빈값(mode)을 찾습니다. 이렇게 구한 최빈값이 곧 우리가 찾는 파라미터 θ^\hat \theta가 됩니다.

MAP를 수식으로 표현하면 다음과 같습니다.

θ^=arg maxθ(P(θ)P(θX))\hat \theta=\argmax_\theta (P(\theta)P(\theta|X))

사후확률을 어떻게 구할까?

우리는 데이터의 분포 P(X)P(X)를 알고 있습니다. 따라서 사전확률(prior) P(θ)P(\theta)를 가정하면 베이즈 정리를 이용하여 사후확률 P(θX)P(\theta|X)를 구할 수 있습니다.

P(θX)=P(Xθ)P(θ)P(X)(1)P(\theta|X) = {P(X|\theta)P(\theta)\over P(X)}\qquad (1)

식 (1)을 보면 우변의 분모는 별도의 파라미터를 가지지 않습니다. 즉, 데이터를 따라 고정된 상수 취급을 할 수 있습니다. 결과적으로 식 (1)은 다음과 같이 바꿔 쓸 수 있습니다.

P(θX)P(θ)P(Xθ)(2)P(\theta|X)\propto P(\theta)P(X|\theta)\qquad (2)

이제 식 (2)를 최대화하는 파라미터 θ\theta를 찾으면 됩니다.

θ^=arg maxθk=1NP(θ)P(xkθ)(3)\hat \theta=\argmax_\theta \prod_{k=1}^N P(\theta)P(x_k|\theta)\qquad (3)

그런데 식 (3)은 prior를 필수적으로 요구합니다. 그렇다면 prior는 어떻게 알 수 있을까요?

사전확률은 설계자가 정한다

정해진 방법은 없습니다. 사실상 모델을 설계하는 사람에 달려 있다고 봐도 됩니다. prior를 정하는 한 방법으로는 데이터 수집 과정을 참고하는 것이 있습니다. 예를 들어, 동전을 던지는 실험은 그 자체로 베르누이 시행입니다. 그러면 동전을 수백, 수천 번 던져 결과를 모은 데이터는 이항분포를 따르겠죠? 따라서 prior를 이항분포로 설정하는 것은 타당합니다.

문제는 연구/실험이나 현실 데이터의 실 분포를 정확히 알 수 없다는 데 있습니다. 즉, 주어진 데이터가 어떤 과정으로 얻어진 것인지, 그것이 타당한 방법인지 알 수 있는 방법이 없습니다. 따라서 다양한 논리와 근거를 기반으로 설계자가 직접 prior를 설정하거나, 통계적 방법론 등을 활용하여 prior를 보정해야 합니다.

활용 예시

MLE 때와 마찬가지로 정규분포를 사용하여 파라미터를 추정해 보겠습니다. 정규분포의 분산과 평균은 다음과 같습니다.

μ=1Nk=1Nxk,σ2=1Nk=1N(xkμ)2\mu={1\over N}\sum_{k=1}^Nx_k,\quad \sigma^2={1\over N}\sum_{k=1}^N(x_k-\mu)^2

X={x1,,xn}X=\{x_1,\cdots,x_n\}에 대해

P(θ)P(Xθ)=1σ2πexp((θμ)22σ2)k=1N1σ2πexp((xkμ)22σ2)P(\theta)P(X|\theta)={1\over\sigma\sqrt{2\pi}}\exp\left(-{(\theta-\mu)^2\over2\sigma^2}\right)\cdot\prod_{k=1}^N{1\over\sigma\sqrt{2\pi}}\exp\left(-{(x_k-\mu)^2\over2\sigma^2}\right)

이고, 여기에 로그를 씌우면

log(P(θ)P(Xθ))=logP(θ)+logP(Xθ)=log(1σ2πexp((θμ)22σ2))+k=1Nlog(1σ2πexp((xkμ)22σ2))={(θμ)22σ2log(σ)log(2π)}+k=1N{(xkμ)22σ2log(σ)log(2π)}(4)\log(P(\theta)P(X|\theta))= \log P(\theta)+\log P(X|\theta)\\ \quad\\ =\log \left({1\over\sigma\sqrt{2\pi}}\exp\left(-{(\theta-\mu)^2\over2\sigma^2}\right)\right)+\sum_{k=1}^N\log\left({1\over\sigma\sqrt{2\pi}}\exp\left(-{(x_k-\mu)^2\over2\sigma^2}\right)\right)\\ \quad\\ =\left\{-{(\theta-\mu)^2\over 2\sigma^2}-\mathrm{log}(\sigma)-\mathrm{log}(\sqrt{2\pi})\right\}+\sum_{k=1}^N\left\{-{(x_k-\mu)^2\over 2\sigma^2}-\mathrm{log}(\sigma)-\mathrm{log}(\sqrt{2\pi})\right\}\qquad (4)

이제 식 (4)를 μ\mu로 미분하면 평균을, σ\sigma로 미분하면 분산을 얻을 수 있습니다. MLE에서 했던 방법과 동일합니다. 먼저 μ\mu로 미분하면 다음과 같습니다.

μ(logP(θ)+logP(Xθ))=θμσ2+k=1Nxkμσ2=1σ2(θ(N+1)μ+k=1Nxk)(5){\partial\over\partial\mu}(\log P(\theta)+\log P(X|\theta))={\theta-\mu\over\sigma^2}+\sum_{k=1}^N{x_k-\mu\over\sigma^2}\\ \quad\\ ={1\over\sigma^2}\left(\theta-(N+1)\mu+\sum_{k=1}^Nx_k\right)\qquad(5)

식 (5)가 0이 되어야 하므로,

μ^=θ+xkN+1\hat\mu={\theta+\sum x_k\over N+1}

마찬가지 과정을 통해서 σ^2\hat\sigma^2도 구할 수 있습니다.

σ^2=1N(k=1N(xkμ)2(θμ)2)\hat\sigma^2={1\over N}{\left(\sum_{k=1}^N(x_k-\mu)^2-(\theta-\mu)^2\right)}

참고문헌

  1. Variational Inference 알아보기 – MLE, MAP부터 ELBO까지
  2. 위키백과 - 최대사후확률 추정
  3. 최대 우도 추정 & 최대 사후 확률 추정 (MLE & MAE)
  4. Bayes theorem(베이즈정리)와 MLE/MAP
profile
재미있게 살고 싶은 대학원생

0개의 댓글