읽기일기

Computer Vision : models, learning and inference (6) Learning and inference in vision

http://www.computervisionmodels.com/

Part II: Machine learning for machine vision

이 파트에서는 머신 러닝을 이용한 컴퓨터 비전 알고리즘을 살펴볼 것입니다. 하지만 이미지가 생성되는 과정은 전혀 고려하지 않을 것인데, 이는 곧 perspective projection 등을 고려하지 않을 것이란 뜻입니다. 대신 패턴 인식으로 비전 문제를 다루고자 합니다. 즉 기존의 이미지에 대한 경험을 prior로 하여 새로운 이미지를 해석하고자 합니다. 이러한 과정은 두 부분으로 나뉘는데, learning과 inference입니다. Learning 과정에서는 이미지 데이터와 그 내용 간의 관계를 모델링합니다. Inference 과정에서는 새로운 이미지가 가지고 있는 내용을 예측합니다.

6.1 Computer vision problems

비전 문제는 화상 데이터 $\mathbf{x}$와 그것을 이용하여 실제 상태 $\mathbf{w}$를 유추하는 문제입니다. 실제 상태 $\mathbf{w}$는 continuous한 값일 수도 있고 discrete한 값일 수도 있습니다. 우리가 continuous한 문제를 푼다면 inference 관계를 regression, discrete한 문제라면 classification이라고 분리하여 부릅니다.

하지만 관측값 $\mathbf{x}$는 여러 상태 $\mathbf{w}$와 관련되어 있으며 관측 과정 또한 노이즈가 많으며, 기본적으로 화상 데이터는 ambiguity를 가지고 있습니다.

이 abmbiguity에를 처리하기 위하여 가장 좋은 방법은 posterior probability distribution인 가능한 상태 $\mathbf{w}$에 대한 $ Pr(\mathbf{w}|\mathbf{x})$를 계산하는 것입니다. 결국 이를 계산하는 것은 얻은 화상 데이터에 대하여 우리가 아는 모든 상태에 대하여 설명을 해보는 것과 같습니다.

하지만 posterior를 계산하는 것은 항상 가능한 것이 아니며, 때로는 posterior의 피크 부분을 $\mathbf{\hat{w}}$만을 계산하여 사용하기도 합니다. 혹은 posterior로부터 샘플을 추출하여 전체 분포를 추정해보기도 합니다.

6.1.1 Components of the solution

비전 문제를 풀기 위해서 다음의 3가지가 필요합니다.

  • 화상 데이터 $\mathbf{x}$와 상태 $\mathbf{w}$간의 관계를 설명하는 모델. 어떤 모델은 파라미터로 그 관계가 결정이 됩니다.
  • 학습 예제 $ \{ \mathbf{x}_i, \mathbf{w}_i \}$에 잘 맞는 파라미터를 찾기 위한 learning 알고리즘
  • 새로운 값 $\mathbf{x}$에 대해서 학스보딘 모델을 통하여 posterior $ Pr(\mathbf{w} | \mathbf{x}, \mathbf{\theta}) $를 계산하기 위한 inference 알고리즘. 혹은 posterior 샘플로부터 MAP를 계산하는 알고리즘.

6.2 Types of model

문제를 풀기 위한 요소의 첫번째이자 가장 중요한 것이 모델입니다. 모델은 데이터 $\mathbf{x}$와 상태 $\mathbf{w}$간의 관계에 따라 두가지로 나뉘게 됩니다.

  1. 데이터 $Pr(\mathbf{w} | \mathbf{x})$에 따른 상태가 발생하는 모델
  2. 상태 $Pr(\mathbf{x} | \mathbf{w})$에 따른 데이터가 발생하는 모델

첫번째 모델을 discriminative, 두번째를 generative라고 합니다.

6.2.1 Model contingency of world on data (discriminative)

$Pr(\mathbf{w}| \mathbf{x})$를 모델링하려면 상태에 대한 분포로 사용될 $Pr(\mathbf{w})$를 골라야 합니다. 그런 다음 그 분포의 파라미터를 데이터 $\mathbf{x}$에 대한 함수로 나타냅니다.

상태에 대한 분포는 데이터 뿐만 아니라 파라미터에 대해 종속적이므로, 이를 $Pr(\mathbf{w} | \mathbf{x}, \mathbf{\theta})$ 로 표시하고 이를 posterior distribution이라고 합시다.

Learning 알고리즘의 목표는 트레이닝 데이터 $ \{ \mathbf{x}_i, \mathbf{w}_i \}^I_{i=1}$를 이용하여 그에 잘 맞는 파라미터 $\theta$를 구하는 것입니다. 이는 앞에서 본 ML, MAP, Bayesian을 통해서 구할 수 있습니다.

Inference 알고리즘은 새로운 관측값 $\mathbf{x}$에 대하여 가능한 상태 $\mathbf{w}$의 분포를 구하는 것입니다. 이 경우에는 posterior 함수를 그대로 사용하면 되므로 계산이 간단합니다.

6.2.2 Model contingency of data on world (generative)

$Pr(\mathbf{x}| \mathbf{w})$를 모델링하려면, 먼저 데이터의 분포 $pr(\mathbf{x})$를 결정한 다음 이 분포의 파라미터를 $\mathbf{w}$에 대한 함수로 나타냅니다.

분포 $Pr(\mathbf{x})$는 상태와 파라미터에 대해 모두 종속적이므로 이를 $Pr(\mathbf{x} | \mathbf{w}, \mathbf{\theta})$라고 쓰고 likelihood라고 부릅시다.

Learning 알고리즘의 목표는 $ \{ \mathbf{x}_i, \mathbf{w}_i \}^I_{i=1}$를 이용하여 그에 잘 맞는 파라미터 $\theta$를 구하는 것입니다. 이는 앞에서 본 ML, MAP, Bayesian을 통해서 구할 수 있습니다.

Inference는 posterior distribution $Pr(\mathbf{w} | \mathbf{x})$를 구하는 것으로 상태에 대한 prior $Pr(\mathbf{w})$와 Baye’s rule을 이용하여 계산할 것입니다.

$$Pr(\mathbf{w}|\mathbf{x}) = \frac{Pr(\mathbf{x}|\mathbf{w})Pr(\mathbf{w})}{\int Pr(\mathbf{x}|\mathbf{w})Pr(\mathbf{w})d\mathbf{w}}$$

실제로는 $Pr(\mathbf{x}, \mathbf{w}) = Pr(\mathbf{x}|\mathbf{w})Pr(\mathbf{w}) $인 점을 이용하여 따로 likelihood와 prior를 구하지 않고, 곧바로 joint distribution을 계산할 수 있습니다.

Summary

inference에는 2가지 종류가 있는데, discriminative model에서는 posterior $Pr(\mathbf{w}|\mathbf{x})$를 바로 계산하고 끝나는 반면, generative model에서는 Bayes’ rule을 이용하여 posterior를 계산하여야 합니다.

6.3 Example 1: regression

Univariate continuous 관측값 x와 이것을 통하여 상태 w를 예측하는 상황을 생각해봅시다.

6.3.1 Model contingency of world on data (discriminative)

먼저 데이터 x에 의해 결정되는 파라미터를 정의하고 이 것에 의한 상태 w에 대한 확률 분포를 정의하여야 합니다. 상태는 univariate, continuos하므로 univariate normal을 선택하였습니다. 분포는 $\sigma^2$로 고정하고 평균은 $\phi_0 + \phi_1 x $로 하였습니다.

따라서 확률 분포는 다음과 같습니다.

$$Pr(w|x, \mathbf{\theta}) = \text{Norm}_w [ \phi_0 + \phi_1 x, \sigma^2], \mathbf{\theta} = \{ \phi_0, \phi_1, \sigma^2 \}$$

Learning 알고리즘은 트레이닝 데이터 $\{ x_i, w_i \}_{i=1}^I$으로부터 모델의 파라미터 $\mathbf{\theta}$를 추정할 것입니다. 예를 들어 MAP를 사용할 경우 다음의 파라미터를 선택하면 됩니다.

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

Inference 알고리즘 또한 필요합니다. 이는 데이터 x와 그에 대한 posterior 분포 $Pr(w|x, \mathbf{\theta})$를 계산해낼 것입니다. 이는 매우 간단하여, 동일한 식에 학습된 파라미터와, 원하는 데이터를 넣어 계산하기만 하면 됩니다.

6.3.2 Model the contingency of data on world (generataive)

이 경우에는, 데이터 x에 대한 확률 분포를 정의하여야 합니다. 이는 상태 w에 의하여 결정됩니다. 마찬가지의 이유로 normal 분포를 선택하였으며, 분산은 $\sigma^2$, 평균은 $\phi_0 + \phi_1 w $으로 설정하였습니다.

$$Pr(x|w, \mathbf{\theta}) = \text{Norm}_w [ \phi_0 + \phi_1 w, \sigma^2], \mathbf{\theta} = \{ \phi_0, \phi_1, \sigma^2 \}$$

또한 prior로 사용될 $Pr(w)$도 필요합니다.

$$Pr(w) = \text{Norm}_w [\mu_p, \sigma^2_p]$$

Learning 알고리즘은 트레이닝 데이터로부터 파라미터를 추정하고, 이를 상태 w에 피팅해볼 것입니다.

Inference 알고리즘은 새로 들어온 데이터 x에 대하여 posterior $Pr(w|x)$를 Bayes’ rule을 이용하여 꺼낼 것입니다.

6.4 Example 2: binary classification

두번째 예제로 univariate, continuous한 관측값 x와 discrete한 상태 w를 생각해보겠습니다.

6.4.1 Model contingency of world on data (discriminative)

먼저 상태 $ w \in \{ 0, 1 \} $에 대한 확률분포와 데이터 $x$를 대표하도록 하는 그 파라미터를 설정합니다. 상태가 discrete하므로 Bernoulli 분포를 사용하겠습니다. 이것은 한개의 파라미터 $\lambda$를 가지며, 이는 성공 확률을 $Pr(w=1)$과 같습니다.

$\lambda$$x$에 의한 함수인데, $0 \lt \lambda \lt 1$을 만족해야 합니다. 따라서 $x$를 여기에 맞게 변형하기 위해 $\phi_0 + \phi_1 x$를 계산한 뒤 이를 $\text{sig}[\cdot]$ 함수에 넣어 $[-\infty, \infty ]$의 범위를 $[0, 1]$로 변환할 수 있게 되었습니다.

$$Pr(w|x) = \text{Bern}_w[ \text{sig}[\phi_0 + \phi_1 x] ]$$

Learning 단계에서는 트레이닝 샘플 $\{ x_i, w_i \}^I_{i=1}$으로부터 파라미터 $\theta = \{ \phi_0, \phi_1 \}$를 맞춥니다. Inference 단계에서는 새로운 데이터 $x$를 위의 식에 대입하여 각 상태에 대한 posterior를 직접 계산합니다.

6.4.2 Model contingency of data on world (generative)

여기서는 x에 대한 확률 분포와 상태 w를 대표하도록 하는 파라미터를 사용합니다. 데이터가 univariate, continuous하므로 univariate normal 분포를 사용하도록 합니다. 분산 $\sigma^2$와 평균 $\mu$은 상태 w에 대한 함수가 되며, likelihood는 다음과 같이 됩니다.

$$Pr(x|w, \mathbf{\theta})= \text{Norm}_x [\mu_w, \sigma^2_w]$$

여기서 각 상태 w에 따라 각기 다른 평균과 분산이 존재할 것입니다. 이는 결국 w의 값에 따라 각기 다른 클래스에 속할 조건부 확률입니다.

Prior 분포 $Pr(w)$는 다음과 같이 정의합니다.

$$Pr(w) = \text{Bern}_w [\lambda_p]$$

Learning 단계에서는 주어진 트레이닝 데이터 $\{ x_i, w_i \}_{i=1}^I $에 맞게 파라미터 $\mathbf{\theta} = \{ \mu_0, \sigma^2_0, \mu_1, \sigma^2_1, \lambda_p \}$를 학습합니다. 이 때에는 각각의 w에 대하여 다르게 학습을 시켜야 할 것입니다. Prior는 w의 값들을 참조하여 학습합니다.

Inference 단계에서는 새로운 데이터 $x$에 대하여 posterior 분포를 Bayes’ rule을 이용하여 계산합니다.

$$Pr(w|x) = \frac{Pr(x|w) Pr(w)}{ \sum_{w=0}^1 Pr(x|w) Pr(w) }$$

6.5 Which type of model should we use?

이러한 질문에 대해 딱부러지게 말할 수는 없지만 몇가지 고려할 점을 살펴보면 다음과 같습니다.

  • Discriminative 모델이 Inference가 비교적 쉽습니다.
  • 데이터는 보통 상태보다 훨씬 높은 차원을 가지기 때문에 데이터 x에 대한 확률을 모델링하는 것은 비용이 많이 발생합니다.
  • Likelihood $Pr(\mathbf{x}|\mathbf{w})$은 실제로 데이터가 생성되는 방식을 반영합니다.
  • 트레이닝, 혹은 데이터 벡터의 일부가 누락 되었을 수도 있는데, 이때에는 generative 모델을 사용합니다.
  • Generative 방식의 기본은 도메인에 관한 전문 지식을 prior에 반영하는 것입니다.

6.6 Applications

6.6.1 Skin

피부 검출 알고리즘은 픽셀의 피부 여부를 $w\in\{0, 1\}$로 표시하는 방법입니다. 픽셀 값은 RGB $\mathbf{x} = [x^R, x^G, x^B]$로 표현됩니다.

Generative 방법을 사용하여 likelihood와 prior는 각기 다음과 같이 정의하였습니다.

$$Pr(\mathbf{x}|w = k) = \text{Norm}_\mathbf{x} [\mathbf{\mu}_k, \mathbf{\Sigma}_k ]$$

$$Pr(w) = \text{Bern}_w [\lambda]$$

Learning 알고리즘은 각 클래스에 대한 각각의 파라미터를 학습하는 것입니다.

새로운 데이터를 분류할 때에는 앞에서와 마찬가지 방법으로 Bayes’ rule을 사용하여 $Pr(w=1|\mathbf{x})$를 계산하여 0.5가 넘으면 해당 케이스를 선택합니다.

또 다른 방법은 RGB가 discrete하다는 점에에서 출발할 수 있습니다. 0부터 255 사이의 정수를 가지기 때문에 다음의 확률 모델을 사용할 수도 있습니다.

$$Pr(\mathbf{x}|w=k) = \text{Cat}_{x^R}[\lambda_k^R] \text{Cat}_{x^G}[\lambda_k^G] \text{Cat}_{x^B}[\lambda_k^B]$$

6.6.2 Background subtraction

앞의 Skin과 비슷한 방법을 사용할 수 있습니다. 하지만 한가지 차이가 있는데, 배경이 아닌 물체 부분의 픽셀 값은 변화가 크기 때문에 모델에 잘 들어맞지 않는 문제가 있습니다. 때문에 먼저 배경에 대하여 조건부 확률을 작성합니다.

$$Pr(\mathbf{x}_n | w=0) = \text{Norm}_{\mathbf{x}_n} [ \mathbf{\mu}_{n_0}, \mathbf{\Sigma}_{n_0}]$$

물체 대한 부분은 아래와 같이 uniform 분포를 사용합니다.

$$Pr(\mathbf{x}_n | w=1) = 1/255^3$$

마찬가지로 inference에는 Bayes’ rule을 사용하여 처리합니다.

때때로 실외 환경과 같이 복잡한 씬의 경우에는 unimodal 모델로는 잘 처리하지 못할 경우가 있습니다. 다음에서 이러한 처리를 위하 복잡한 확률 분포에 대해 알아볼 것입니다.


Add a Comment Trackback