읽기일기

Computer Vision : models, learning and inference (4) Fitting probability models

http://www.computervisionmodels.com/

이 장에서는 모델을 데이터에 맞추는 Fitting에 관하여 이야기를 하고자 합니다. 이 작업은 모델의 파라미터 $\theta$에 대해 배우는(learn) 과정이기에 학습(learning)이라고 부르기도 합니다. 또한 그 결과 모델에서 관측되지 않은 새로운 데이터의 확률을 계산하는 방법도 볼 것입니다. 이것을 예측 분포(predictive distribution)이라고 합니다.

4.1 Maximum likelihood

이름에서와 같이 maximum likelihood (ML)은 데이터 $\{ \mathbf{x}_i \}^I_{i=1}$가 가장 그럴듯하게(likely) 나올 파라미터 $\hat{\theta} $를 찾고자 합니다. 각 데이터들이 서로 종속적이지 않는다면, 데이터들의 likelihood 함수 $Pr(x_{1, \cdots, I} | \theta)$는 각 데이터의 개별적인 likelihood의 곱으로 나타낼 수 있습니다.

$$\hat{\theta} = \arg \max_{\theta} [ Pr(\mathbf{x}_{i=1, \cdots, I})] = \arg \max_{\theta} [ \prod_{i=1}^I Pr(\mathbf{x}_i | \theta )]$$

새로운 데이터 $\mathbf{x}^*$에 대한 예측 분포의 계산은 간단합니다. ML로 찾아진 파라미터 $\hat{\theta}$를 확률 밀도 함수에 적용한 뒤, 데이터를 넣어보면 됩니다.

4.2 Maximum a posteriori

Maximum a posteriori (MAP)에서는 사전 지식, prior를 활용합니다. 예를 들어 시간에 따라 관측되는 데이터를 생각해봅시다. 직전 시각 t에서 관측된 데이터는 다음 시각 t+1에서 관측되는 데이터에 대하여 많은 정보를 가지고 있을 수 있습니다. 이러한 경우 모델의 파라미터에 시간 성분 t를 사용할 수 있을 것입니다.

이름에서도 알 수 있듯, MAP는 posterior 확률 $Pr(\theta | \mathbf{x}_{1, \cdots, I} $를 최대화하고자 하는 방법입니다.

$$\hat{\theta} = \arg \max_\theta [ Pr(\theta | \mathbf{x}_{1, \cdots, I})] = \arg \max_\theta [ \frac{Pr(\mathbf{x}_{1, \cdots, I}|\theta)Pr(\theta)}{Pr(\mathbf{x}_{1,\cdots,I})} ] \\ = \arg \max_\theta [ \frac{\prod_{i=1}^I Pr(\mathbf{x}_{i}|\theta)Pr(\theta)}{Pr(\mathbf{x}_{1,\cdots,I})} ]$$

여기서 분모 부분은 상수이며, 최대 값을 찾는데 영향을 주지 않기 때문에 제거해버리면 다음과 같은 식을 얻게 됩니다.

$$\hat{\theta} = \arg \max_\theta [ \prod_{i=1}^I Pr(\mathbf{x}_{i}|\theta)Pr(\theta) ]$$

앞의 ML과 비교해보면 prior 부분만 빼고는 같다는 것을 볼 수 있을 것입니다. 따라서 ML은 prior가 일정하다는 상황을 가지는 MAP의 특수한 경우입니다.

예측 확률은 역시 찾아진 파라미터를 사용하여 확률 밀도 함수를 평가해 보면 됩니다.

4.3 The Bayesian approach

이제 베이지안 방법으로 넘어오면 단 하나의 값을 찾는 것이 아니라, 주어진 데이터에 대한 파라미터의 확률 분포 $Pr(\theta | \mathbf{x}_{1, \cdots, I} $를 계산합니다.

$$Pr(\theta | \mathbf{x}_{1, \cdots, I}) = \frac{\prod_{i=1}^I Pr(\mathbf{x}_i | \theta) Pr(\theta)}{Pr(\mathbf{x}_{1, \cdots, I})}$$

예측 분포를 계산하는 것은 약간 복잡한데, 하나의 파라미터로 고정한 것이 아니므로, 모든 파라미터에 대하여 조사를 하여야 합니다.

$$Pr(\mathbf{x}^* | \mathbf{x}_{1, \cdots, I}) = \int Pr(\mathbf{x}^* | \theta) Pr(\theta | \mathbf{x}_{1, \cdots, I}) d \theta$$

이것은 일종의 가중치 합인데, 여기서 가중치는 각기 다른 파라미터에 대한 posterior 확률이 될 것입니다.

MAP나 ML은 모두 베이지안으로 설명할 수 있습니다. 그 식은 $\delta[z]$를 사용하면 쉽게 유도될 수 있습니다.

4.4 Worked example 1: univariate model

이제 univariate normal 모델에서 나온 데이터 $\{x_i\}_{i=1}^I$를 이용하여 모델의 파라미터를 찾아보겠습니다. 앞에서도 보았듯, 이 모델은 $\mu, \sigma^2$의 두 파라미터를 갖습니다.

4.4.1 Maximum likelihood estimation

앞에서 보았듯 likelihood $Pr(x_{1, \cdots, I} | \mu, \sigma^2)$는 개별 데이터의 확률 분포의 곱으로 표현할 수 있습니다.

$$Pr(x_{1, \cdots, I} | \mu, \sigma^2) = \prod_{i=1}^I \text{Norm}_{x_i}[\mu, \sigma^2]$$

그리고, 이 식으로 표현되는 $\{ \mu, \sigma^2 \}$에 대한 분포에서 가장 높은 피크를 찾아 $\hat{mu}, \hat{\sigma^2}$로 삼으면 됩니다.

$$\hat{\mu}, \hat{\sigma}^2 = \arg \max_{\mu, \sigma^2} [ Pr(x_{1, \cdots, I} | \mu, \sigma^2 )]$$

이를 구하는 방법은 위의 식을 각 파라미터에 대하여 미분한 뒤 식을 0으로 만드는 값을 찾으면 됩니다. 하지만 식을 풀어내기에 매우 복잡해지기 때문에 일반적으로 이 식에 로그를 사용하여 log likelihood를 만든 뒤에 식을 풀게 됩니다. 로그는 곱으로 되어있던 식을 덧셈으로 분리해주는 장점이 있습니다.

$$\hat{\mu}, \hat{\sigma}^2 = \arg \max_{\mu, \sigma^2} [ Pr(x_{1, \cdots, I} | \mu, \sigma^2 )] = \arg \max_{\mu, \sigma^2} \sum_{i=1}^I \log \text{Norm}_{x_i}[\mu, \sigma^2]$$

미분된 식을 정리하면 결국 다음의 결과를 얻습니다.

$$\hat{\mu} = \frac{\sum_{i=1}^I x_i}{I}$$

$$\hat{\sigma}^2 = \frac{(x_i-\hat{\mu})^2}{I}$$

Least squares fitting

곁다리로 많은 곳에서 사용되는 least squares도 사용해보도록 하겠습니다. 앞의 예에서 ML을 이용하여 평균을 추정할 경우의 cost 함수는 다음과 같습니다.

$$\hat{\mu} = \arg \max_\mu [ - \sum_{i=1}^I (x_i - \mu)^2] = \arg \min_\mu [ \sum_{i=1}^I (x_i - \mu)^2]$$

ML에서는 두번째 식을 최대로 하는 값을 선택하였지만, 부호만 바꾸면 최소로 하는 식으로 변환할 수 있으며, 이것이 곧 least square fitting의 그것이 됩니다.

4.4.2 Maximum a posteriori estimation

이제 MAP를 살펴볼 차례입니다. 풀어야 할 Cost 함수는 다음과 같습니다.

$$\hat{\mu}, \hat{\sigma}^2 = \arg \max_{\mu, \sigma^2} [\prod_{i=1}^I Pr(x_i | \mu, \sigma^2)Pr(\mu, \sigma^2)] \\ = \arg \max_{\mu, \sigma^2}[ \prod_{i=1}^I \text{Norm}_{x_i} [\mu, \sigma^2 ] \text{NormInvGam}_{\mu, \sigma^2}[ \alpha, \beta, \gamma, \delta ]]$$

여기서 normal 분포의 파라미터는 $\alpha, \beta, \gamma, \delta $에 의해 결정되는 normal inverse gamma 분포에 의해 결정되며 이는 normal 분포를 conjugate합니다.

이렇게 계산된 posterior는 likelihood와 prior의 곱에 비례하며, 데이터와 데이터가 관측되기 이전의 prior를 모두 반영합니다.

ML의 경우와 마찬가지로 log를 사용하면 풀이가 쉬워집니다.

$$\hat{\mu}, \hat{\sigma}^2 = \arg \max_{\mu, \sigma^2}[ \sum_{i=1}^I \log \text{Norm}_{x_i} [\mu, \sigma^2 ] + \log \text{NormInvGam}_{\mu, \sigma^2}[ \alpha, \beta, \gamma, \delta ]]$$

역시 파라미터를 찾기 위해서 $\mu$$\sigma$에 대해 미분을 하면 됩니다. 평균에 대해서만 살펴보면 다음과 같습니다.

$$\mu = \frac{\sum_{i=1}^I x_i + \gamma \delta}{I + \gamma} = \frac{I \bar{x} + \gamma \delta}{I + \gamma}$$

이것은 두가지 항의 가중치 합입니다. 첫번째는 데이터를 반영하며 사용된 데이터의 수를 가중치로 합니다. 두번째 항은 $\delta$이며, prior에 의해 나올만한 $\mu$에 대한 값을 반영하며, $\gamma$에 의한 가중치를 갖습니다.

결국 MAP에서는 데이터가 많을 경우엔 데이터의 평균에 가까운 값이, 데이터가 적게 되면 prior에 가까운 값이 선택될 것입니다.

4.4.3 The Bayesian approach

베이즈 규칙에 의해 가능한 파라미터에 대하여 식을 풀어보면 다음과 같습니다.

$$Pr(\theta | \mathbf{x}_{1, \cdots, I}) = \frac{\prod_{i=1}^I Pr(\mathbf{x}_i | \theta) Pr(\theta)}{Pr(\mathbf{x}_{1, \cdots, I})} \\ = \frac{\prod_{i=1}^I \text{Norm}_{x_i}[\mu, \sigma^2] \text{NormInvGam}_{\mu, \sigma^2}[\alpha, \beta, \gamma, \delta]}{Pr(x_{1, \cdots, I})} \\ = \frac{\kappa \text{NormInvGam}_{\mu, \sigma^2}[\tilde{\alpha}, \tilde{\beta}, \tilde{\gamma}, \tilde{\delta}]}{Pr(x_{1, \cdots, I})}$$

앞에서 알아보았듯, conjugate 관계의 likelihood와 prior가 곱해졌으므로, 새로운 파라미터들과 상수 $\kappa$로 식을 바꾸어 주었습니다. 새로운 파라미터들은 아래와 같습니다.

$$\tilde{\alpha} = \alpha + I/2, \tilde{gamma} = \gamma + I, \tilde{\delta} = \frac{(\gamma \delta + \sum_i x_i)}{\gamma + I}, \\ \tilde{\beta} = \frac{\sum_i x_i^2}{2} + \beta + \frac{\gamma \delta^2}{2} - \frac{(gamma \delta + \sum_i x_i)^2}{2(\gamma + I)}$$

이렇게 계산되는 위의 식 또한 제대로된 확률이며 그 합은 1이어야 하므로 $\kappa$와 분모는 제거될 수 있습니다. 따라서 정리된 식은 다음과 같습니다.

$$Pr(\theta | \mathbf{x}_{1, \cdots, I}) = \text{NormInvGam}_{\mu, \sigma^2}[\tilde{\alpha}, \tilde{\beta}, \tilde{\gamma}, \tilde{\delta}]$$

이는 관측된 데이터를 만들어낼 수 있는 여러 파라미터들의 적절함을 표현하고 있습니다. 그 피크를 고르면 MAP와 같은 값을 나타내지면 그 외에도 많은 괜찮은 조합을 제공합니다. 데이터가 많은 경우에는 MAP나 베이지안 모두 좋을 결과를 보여주지만 만약 데이터가 적은 환경이라면 MAP는 데이터와 posterior를 넓게 잡을 것이고 추정은 잘 이루어지지 않을 것입니다.

Predictive density

ML이나 MAP에서는 만들어진 pdf에 새로운 데이터인 $ x^*$를 넣어 확률을 평가할 수 있었습니다. 하지만 베이지안에서는 모든 가능한 파라미터들에 대하여 가중치 평균을 게계산하여야 합니다. 가중치는 파라미터에 대한 posterior를 사용합니다.

$$Pr(x^* | x_{1, \cdots, I}) = \int \int Pr(x^* | \mu, \sigma^2) Pr(\mu, \sigma^2 | x_{1, \cdots, I}) d\mu d\sigma$$

$$= \int \int \text{Norm}_{x^*}[\mu, \sigma^2] \text{NormInvGam}_{\mu, \sigma^2} [\tilde{\alpha}, \tilde{\beta}, \tilde{\gamma}, \tilde{\delta}] d\mu d\sigma$$

$$= \int \int \kappa(x^*, \tilde{\alpha}, \tilde{\beta}, \tilde{\gamma}, \tilde{\delta}) \text{NormInvGam}_{\mu, \sigma^2} [\breve{\alpha}, \breve{\beta}, \breve{\gamma}, \breve{\delta}] d\mu d\sigma$$

역시 여기서도 conjugate 관계를 사용합니다. 두번의 conjugate를 통하여 상수항을 이끌어 내고, 이를 밖으로 빼낼 수 있습니다.

$$Pr(x^* | x_{1, \cdots, I}) = \kappa(x^*, \tilde{\alpha}, \tilde{\beta}, \tilde{\gamma}, \tilde{\delta}) \int \int \text{NormInvGam}_{\mu, \sigma^2} [\breve{\alpha}, \breve{\beta}, \breve{\gamma}, \breve{\delta}] d\mu d\sigma$$

$$= \kappa(x^*, \tilde{\alpha}, \tilde{\beta}, \tilde{\gamma}, \tilde{\delta})$$

그리고 남은 항은 pdf이기 때문에 그 적분은 1이 되어야 하므로 제거할 수 있고 결국 상수항만 남게 됩니다. 그리고 남은 상수항은 다음과 같이 계산됩니다.

$$\kappa(x^*, \tilde{\alpha}, \tilde{\beta}, \tilde{\gamma}, \tilde{\delta}) = \frac{1}{\sqrt{2 \pi}} \frac{\sqrt(\tilde{\gamma})\tilde{\beta}^{\tilde{\alpha}}}{\sqrt(\breve{\gamma})\breve{\beta}^{\breve{\alpha}}} \frac{\Gamma [\breve{\alpha}]}{\Gamma [\tilde{\alpha}]}$$

$$\breve{\alpha} = \tilde{\alpha }+ 1/2, \breve{\gamma} = \tilde{\gamma} + 1$$

$$\breve{\beta} = \frac{x^{*2}}{2} + \tilde{\beta} + \frac{\tilde{\gamma}\tilde{\delta}^2}{2}-\frac{(\tilde{\gamma} \tilde{\delta} + x^*)^2}{2(\tilde{\gamma} + 1)}$$

여기서 conjugate prior의 장점을 알 수 있습니다. 복잡한 적분 수식들을 간단한 식으로 변환할 수 있었습니다.

4.5 Worked example 2: categorical distribution

여기서는 주사위를 예로 들고자 합니다. 데이터 $ \{ x_i \}_{i=1}^I$$x_i \in \{ 1, 2, \cdots, 6 \} $로 구성되어있습니다. 또한 주사위를 던질 때에는 알지 못하는 편향(bias)이 작용하고 있습니다.

이 때의 데이터를 categorical 분포로 나타내면 다음과 같습니다.

$$Pr(x=k | \lambda_{1, \cdots, K}) = \lambda_k$$

4.5.1 Maximum Likelihood

ML을 이용하여 풀려면 각 데이터에 대한 likelihood의 곱을 최대화하는 $\lambda_k$들을 찾아야 합니다.

$$\hat{\lambda}_{1, \cdots, 6} = \arg \max_{\lambda_{1, \cdots, 6}} [ \prod_{i=1}^I \text{Cat}_{x_i}[\lambda_{1, \cdots, 6}]]$$

$$= \arg \max_{\lambda_{1, \cdots, 6}}[ \prod_{k=1}^6 \lambda_k^{N_k}]$$

여기서 $N_k$는 트레이닝 데이터에서의 k 가 나온 횟수 입니다. 앞에서 했던 것과 같이 log-likelihood를 사용할 수 있습니다.

$$L = \sum_{k=1}^6 N_k \log [\lambda_k] + \nu ( \sum_{k=1}^6 \lambda_k - 1)$$

여기서는 특별히 Lagrange mltiplier $\nu$를 사용하여 $\sum_{k=1}^6 \lambda_k = 1$의 제한 조건을 강제해주었습니다. 이 식을 $\lambda_k$$\nu$에 대하여 각각 미분하여 0인 지점을 찾으면 다음을 얻을 수 있습니다.

$$\hat{\lambda_k} = \frac{N_k}{\sum_{m=1}^6 N_m}$$

4.5.2 Maximum a posteriori

MAP로 문제를 풀려면, categorical likelihood를 conjugate하는 Dirichlet 분포를 사용합니다.

$$\hat{\lambda}_{1, \cdots, 6} = \arg \max_{\lambda_{1, \cdots, 6}} [ \prod_{i=1}^I Pr(x_i | \lambda_{1, \cdots, 6}) Pr(\lambda_{1, \cdots, 6} )]$$

$$= \arg \max_{\lambda_{1, \cdots, 6}} [ \prod_{i=1}^I \text{Cat}_{x_i}[\lambda_{1, \cdots, 6}] \text{Dir}_{\lambda_{1, \cdots, 6}}[\alpha_{1, \cdots, 6}]]$$

$$= \arg \max_{\lambda_{1, \cdots, 6}} [ \prod_{k=1}^6 \lambda_{k}^{N_k + \alpha_k -1}]$$

마찬가지로 여기에 Lagrange multiplier를 적용한 뒤 MAP를 통해 문제를 풀면 다음을 얻습니다.

$$\hat{\lambda}_k = \frac{N_k + \alpha_k - 1}{\sum_{m=1}^6 (N_m + \alpha_m -1)}$$

4.6.2 Bayesian Approach

베이지안 방법을 사용하면 앞에서 살펴본 예와 마찬가지로 conjugate를 이용하여 식이 단순화 됩니다.

$$Pr(\lambda_1, \cdots, \lambda_6 | x_{1, \cdots, I}) = \text{Dir}_{\lambda_{1, \cdots, 6}} [\tilde{\alpha}_{1, \cdots, 6}]$$

여기서 $\tilde{\alpha}_k = N_k + \alpha_k $입니다.

Predictive Density

역시 ML와 MAP에서는 구해진 파라미터를 이용한 pdf에다가 새로운 데이터를 적용하면 바로 확률을 구할 수 있습니다. 베이지안의 경우에는 각 파라미터에 대한 가능성을 가중치로, 가중치 평균을 구하게 됩니다. 이는 마찬가지로 conjugate를 이용하여 단순화됩니다.

$$Pr(x^* = k|x_{1, \cdots, I}) = \kappa(x^*, \tilde{\alpha}_{1, \cdots, 6}) = \frac{N_k + \alpha_k}{\sum_{k=1}^6 (N_j + \alpha_j)}$$


Add a Comment Trackback