2014년 2월 13일 목요일

Markov Chain Monte Carlo

Monte Carlo
컴퓨터의 연산능력을 이용하여 수식만으로 계산하기 어려운 문제가 있을 때, 데이터의 무작위 샘플을 얻고 이를 이용하여 해답을 구하는 방법이다.
예를 들면, 원의 원주율 $\pi$를 구한다고 하자. 샘플링만으로 이 값을 구하기 위하여, 정사각형 내에 반지름이 1인 내접하는 원을 그린 후, 무작위 샘플을 발생시킨다. 그리고 이 샘플이 원 내부에 있는지, 외부인지 판단 만으로 값을 구할 수 있다. 즉, $2^2 - \pi \cdot 1^2 = $ samples between two areas 로 구할 수 있다.
이때 고성능 컴퓨터를 이용하여 샘플을 많이 발생 시킬수록 더 정확한 값을 구할 수 있다.

Markov Chain
연속으로 이어지는 일련의 값이 주어질 때, 다음에 나오는 값은 바로 직전(이전) 값에만 영향을 받는 연속 값의 체인이다.  이 때 값은 상태(state)를 말하고 체인은 상태 값의 연속 시퀀스이다.
값들은 상호 독립적이지 않고 서로 상관성이 존재하는데 연속된 값 사이에서만 그 상관성이 존재하고 멀리 떨어진 값들 사이의 상관성은 무시된다.

MCMC
어떤 수식의 값을 샘플링 만으로 근사하여 구하며, 이때 샘플을 발생시키는 방법을 상호 독립적이지 않고 어떤 관계를 가지도록 발생 시킨다는 의미로 사용된다.  따라서 이름이 MCMC 근사로 붙여졌다.
고차공간에서 확률분포 추정에 사용하며 왜 MCMC인지는 아래 그림 하단부(MH 알고리즘)에서 다시 설명한다.



MCMC(Markov Chain Monte Carlo)는 고차원 공간에서 수행해야 하는 적분이나 최적화 문제를 풀기 위해 사용된다. 주요 적용 분야는 기계학습, 물리, 통계학, 경제학, 결정이론 등이다.
고차공간에서 확률분포 $p(z)$의 추정은 매우 어렵다.  확률분포(probability density function: pdf)는

$p(z)={\tilde{p}(z) \over Z_p}$, where $Z_p = \int_Z {\tilde{p}(z) dz}$

와 같이 계산한다.  여기서 $\tilde{p}(z)$는 정규화가 안된 함수 값이고, $Z_p$는 정규화 상수(normalization constant)이다.  보통 $\tilde{p}(z)$는 쉽게 구할 수 있지만, $Z_p$의 경우는 $Z$ 공간 내의 가능한 모든 영역의 $z$에 대해 적분을 필요로 하며, 적분할 수식의 형태도 주어지지 않는 경우가 많아 어렵다.  이 때 sampling기법을 이용하는 MCMC는 $p(z)$의 추정에 유용한 도구이다.

MCMC가 사용되는 몇 가지 분야를 살펴 보자.

(1) Bayesian inference and learning: 미지의 변수 $x \in X$와 데이터 $y \in Y$가 주어질 때, 다루기 힘든(intractable) 적분의 존재는 Bayesian 통계학에서 자주 나타난다.

$\bullet$ 정규화: Bayes' 이론에서 분포의 정규화 항은 고차원 공간 $X$에 대한 적분을 필요로 한다.

$p(x|y)={p(y|x) \cdot p(x) \over p(y)}={p(y|x) \cdot p(x) \over \int_{X}p(y|x')p(x')dx'}$

$p(y)$를 직접 추정하든지, 주변확률을 이용하여 추정해야 한다.  어느 경우나, 정규화 상수 $p(y)$의 추정은 쉽지 않다.  
분모 $p(y)$ 값 계산을 주변 확률을 이용하려 하려면 적분 인자인 변수 $x'$가 무엇이고 어떤이 있는지 알아야 하는데 불가능하다.

$\bullet$ 주변화(Marginalization): 합이나 적분을 통해 어떤 변수를 제거할 수 있다. 이 때, 공간 $Z$가 크다면 적분이 어려워 진다.

$p(x|y)=\int_{Z} p(x,z|y)dz$

$\bullet$ 기대값(Expectation): 기대값(또는 가중 평균)이 필요할 때 적분을 사용할 수 있다.  공간이 크면 적분이 어렵다.

$E_{p(x|y)}(f(x))=\int_{X}f(x)p(x|y)dx$

  
(2) Statistical mechanics(주1): 상태 $s$와 Hamiltonian $E(s)$를 가진 어떤 시스템의 partition 함수 $Z$를 계산할 때 필요하다.

$Z=\sum_{S} exp[-{E(s) \over kT}]$,

여기서

$k$는 Boltzmann상수, $T$는 시스템의 Temperature를 나타낸다. 상태 $S$의 공간이 아주 크다면 합의 계산은 풀기 어려운 문제가 된다.

(3) 최적화(optimization): 최적화는 무수히 많은 해답 공간 내에서 목적함수를 최소화하는 후보를 하나 골라 내는 것이다. 그런데 이 공간은 연속이고 경계가 없다.  답을 찾기 위해 모든 공간을 뒤지는 것은 어렵다.

(4) 우도(likelihood) 모델의 선정: 두 단계로 구성된다. 먼저, 가능한 각각의 모델에 대해 ML(maximum likelihood) 추정치를 찾는다. 다음, 그 중 하나를 선정하기 위해 비용(penalization) 항(MDL, BIC, or AIC)을 사용한다.  이 방법의 문제점은 모델 집합이 아주 클 경우이다.



Monte Carlo의 예
MC의 아이디어는 어떤 고차 공간에서 정의된 확률 분포 $p(x)$로부터 상호 독립적인 샘플들의 집합 $\{ x^{(i)} \}_{i=1}^N$을 추출하는 것이다. 고차 공간은 시스템의 다양한 구성을 나타내는 공간이거나, 사후확률(posterior)이 정의된 공간, 가능한 해답의 결합 공간이 될 수 있다.
샘플들은 공간의 확률 분포를 근사적으로 표현하기위해 사용된다.

$p_{N}(x)={1 \over N} \sum_{i=1}^N {\delta_{x^{(i)}}(x)}$

여기서 $\delta_{x^{(i)}}(x)$는 Dirac-delta함수로 $x$가 $x^{(i)}$에 위치할 때 1이 되고, 그렇지 않으면 0이 된다.  따라서 $x$가 공간의 확률 분포에 따라 샘플링된다면 $p_{N}(x)$는 공간의 $pdf$에 대한 히스토그램(histogram)이 된다.


(예제) $x \in \{1,2,3 \}, N=100, pdf=Uniform$일 때  $p_{N}(2)$를 구하시오.

$p_{N}(2)={1 \over 100} \sum_{i=1}^N {\delta_{x^{(i)}}(2)}$

이고 이것은  $x^{(i)}=2$인 샘플의 비율이다. 즉, $x=2$인 확률이고, $p_{N}(2) \approx {33 \over 100}$이다.
만일 $pdf=N(2,3^2)$라면 $P_N(2)$는 ${1 \over 3}$보다 휠씬 클 것이다. $x^{(i)}$는 $pdf$에 따라 샘플링되므로 $p_{N}(x)$가 근사적으로 그 $pdf$이다.


Monte Carlo를 이용하면 다루기 힘든(intractable) 함수의 적분도 $I_{N}(f)$로 근사할 수 있다.

$x$의 $pdf$에 따른 $f(x)$의 근사 적분을 이산 합을 통해 구성해 보면

$I_{N}(f)={1 \over N} \sum_{i=1}^N { f(x^{(i)})}$

가 된다.
이 때 $x$의 공간을 이산에서 연속으로 확장하면 $N$은 $\infty$가 되고 이 식은

$I(f)=\int_{X}f(x)p(x)dx$

이다.


Metropolis Hasting 알고리즘
MH는 대표적인 MCMC 알고리즘이다. 샘플링을 임으로 하지 않고 Markov 성질을 가지는 연속 값의 체인을 통해 수행한다.



위 그림을 이해하기 위해 그림의 내부에 표시된 1->2->3 순으로 읽어본다.  MH을 사용하면 최소한의 sampling으로 분포를 근사화 할 수 있다.


그래프와 코드를 보고 간략히 설명한다. 그림에서 2개의 봉우리를 가진 어떤 분포가 있다. 이 분포를 데이터 샘플링을 통해 근사하고자 한다.

분포 $q$는 proposal 확률이라 부르며, 현재 위치 $x$에서 다음 위치 $x^*$을 샘플링하는 것에 관여한다. 연속 샘플링인 마코프 체인의 이동은 acceptance 확률 $A$에 따라 $x$에서 $x^*$로 움직이는데, reject되면 $x$에 그냥 머문다.
$q$가 Gaussian proposal이라면 $q(x^*|x^{(i)})=N(x^{(i)},\sigma)$이므로 이동은 대칭형 random walk이고 $q(x^*|x^{(i)})=q(x^{(i)}|x^*)$이다.

알고리즘을 보면 먼저, $u$를 하나 샘플링하는데 이 값은 0~1사이의 uniform분포에서 얻는다. 다음 $x^*$를 $q$분포에서 하나 샘플링한다.
분포 $q$는 여러가지 형태가 될 수 있으나 여기서는 Gaussian과 같은 대칭형 분포로 $q(x^*|x^{(i)})=q(x^{(i)}|x^*)$ 관계가 성립하므로 수식의 분자, 분모에 있는 $q$는 소거되어 샘플링의 기준치는 $A=min( 1, {p({x^*}) \over {p(x^{(i)})}} )$가 된다.
$x^*$가 $q(x^*|x^{(i)})$에 따라 샘플링된다는 말은 이전 샘플링 값인 $x^{(i)}$근처에서 샘플링된다고 볼 수 있다.  Gaussian 분포의 분산 크기에 따라 샘플링 점과 현재 점 사이의 거리가 결정된다. 타겟 분포 $p$는 모르지만 위치 $x$에서 확률 값 $p(x)$는 측정 가능하다고 가정한다.

어쨌던 현재의 $u$는 이렇게 계산된 $A$보다 작을 수도 있고 클 수도 있다.
만일 $x^*$에서의 확률 값 $p(x^*)$가 $p(x^{(i)})$보다 크다면 $A$는 1이되고 $u<A$이므로 $x^*$는 무조건 accept된다.  즉, 이전 샘플 $x^{(i)}$근처에서 샘플링된 $x^*$의 확률값이 $x^{(i)}$보다 크다면 이 샘플은 분포가 커지는 방향에 있고 accept되어야 좋다. 이는 확률값이 높은 곳에서 더 많은 샘플이 얻어질 수 있다는 것을 표현하게 된다.
 
만일 $x^*$에서의 확률 값 $p(x^*)$가 $p(x^{(i)})$보다 작다면 $A$는 1보다 작아진다. 이 때는 $u$의 값에 따라 $u<A$가 되거나 $u>A$가 될 수도 있다. $u$의 값에 따라 $x^*$가 받아질 수도 있고 아닐 수도 있다.

이러한 방식으로 아주 많은 샘플을 취하면 이 샘플들의 빈도는 확률값의 크기에 따라 얻어지게 되고 높은 확률 값에서 많은 샘플이 얻어지므로 확률분포를 잘 근사하게 된다.

여기서 Monte Carlo는 샘플링으로 어떤 값을 근사한다는 의미로 사용되었고, Markov Chain은 샘플링 시, 현재 샘플링 값은 이전 샘플링 값과 독립적이지 않고 어떤 관계를 가지면서 얻어진다는 의미로 사용된다. 따라서 MCMC 근사가 된다.



위 그림은 분포 $q$의 분산 크기가 미치는 영향을 보여 준다. 분산 값에 따라 MCMC근사의 정밀도가 달라진다.





(주1) Statistical mechanics is a branch of mathematical physics that studies, using probability theory, the average behavior of a mechanical system where the state of the system is uncertain. 


References
[1] http://arongdari.tistory.com/m/post/view/id/62
[2] C. Andrieu, An Introduction to MCMC for Machine Learning, Machine Learning, 2003.




2014년 2월 12일 수요일

Digital Image Correlation

인장이나 압축력을 받는 시편의 변형 전후의 영상을 DIC로 비교한다. 변형전 영상을 $f$, 변형 후의 영상을 $g$라 했을 때, 영상 계측을 통해 변형을 측정한다. 픽셀 좌표의 변형 전후 관계를 표현하기 위해 좌표의 선형 변환을 나타내는 6개의 변수와 함께 픽셀에서의 영상 밝기 값이 전체적으로 밝아지거나 어두워지는 global offset을 나타내기 위해서 dc값 $w$를 사용한다.   어떤 화소 위치 $x_1$가 선형 변환 $T$에 의해 새로운 위치 $x_2$로 바뀐다면 그 변환 관계는 다음과 같다.

$x_2=T(x_1)$ 이고 $T$가 Affine 변환이라면 가장 일반적으로 사용하는 변형 식은

$\begin{pmatrix} x_2 \\ y_2 \end{pmatrix}=\begin{pmatrix}a & b \\ c & d \end{pmatrix} \begin{pmatrix}x_1 \\ y_1 \end{pmatrix}+\begin{pmatrix} e \\ f \end{pmatrix}$이고 변환에 관계하는 파라메터의 수는 6개이다.


(a)
(b)
Figure: Local part of image for deformation calculation. (a) Dotted box shows local part of image for deformation test. We assume that the small window undergoes linear deformation that is described by six parameters; (b) From left side, four small images show deformation surfaces at same location on 1st, 100th, 200th, 300th sequential frame of specimen under tensile strength, respectively. Image views show that rightward deformation is strong.

기계요소의 표면 변형 계산은 먼저 변형 전 표면에 ROI를 설정하고 이 영역 내의 화소들이 변형 후 위치가 어떻게 변환 되었는지를 따지는 것이다.
이때 변형 전후의 두 window patch 영상을 비교하기 위한 기준 치가 필요하며 식 (1)을 사용한다. global offset 변수 $w$는 scalar 값이다.

$C=\sum_{G_s \in S} {[f(G_s)-\tilde{g}(G_s, P)]^2 \over \sum_{G_s\in S}{f(G_s)^2} }$                  (1)

where

$\tilde{g}(G_s, P)=g(T(G_s))-w$

이다. $P$를 파라메터 벡터, $G_s$를 변형전 영상의 픽셀 좌표라 하자. $S$는 window patch(ROI) 내의 픽셀 집합이다. 위 그림에서 노란 점선 박스로 표시되어 있다.
$T(G_s)$에 의한 화소 위치 $G_s$의 선형 변환은 변형 후 sub-pixel이 되므로 보간이 필요하다.  즉 , 변형 후 영상 $g$를 사용하여 $T(G_s)$ 위치에서의 화소 값을 구해야한다.
Bilinear 보간은 직선과 직선이 만나는 위치에서 불연속이 있으므로 $P$를 구하기 위한 최적화식의 수렴 특성에 문제점이 있어 bicubic 보간을 주로 사용한다.

$P$내의 최적화 변수는 7개(6개+$w$)가 되며, 최적화 방법으로는 Newton법을 사용한다.

Newton법은 Taylor series 전개를 통해 유도되며 2차 편미분이 사용된다. 1차 편미분만 사용하는 gradient descent법보다 효율적이다[2]. 그러나 2차 편미분의 연산은 복잡하고 계산량이 과도한 문제가 있다.  Newton 식을 얻기 위해 식 (1)을 $P_0$ 근방에서 Taylor 전개하자.

$C(P)=C(P_0)+\triangledown C(P_0)^T \delta P+\left. 1 \over 2 \right. \delta P^T\triangledown\triangledown C(P_0)\delta P$.                             (2)

where

$\delta P = P-P_0$

이다. 여기서 $P$는 $P_0$ 근방에서 $C(P)$의 최적값(최소값)을 주는 파라메터 벡터이다.  식 (2)의 양변을 $\delta P$에 대해 미분하면

$\triangledown \triangledown C(P_0) \delta P=-\triangledown C(P_0)$

이고

$\delta P=-{\triangledown \triangledown C(P_0)}^{-1} \cdot \triangledown C(P_0)$

가 되고,

$P=P_0-{\triangledown \triangledown C(P_0)}^{-1} \cdot \triangledown C(P_0)$                      (3)

가 된다.  식 (3)이 최적화를 위한 Newton 반복식이다.


위에서 $\delta P$에 대한 식 (2)의 미분의 의미를 생각해 보기 위해 식(2)를 다시 쓰면,

$C(P_0+\delta P)-C(P_0) = f(\delta P)=\triangledown C(P_0)^T \delta P+...$

이므로 $f'(\delta P)$는

$\lim_{\delta P \to 0}{C(P+\delta P)-C(P) \over \delta P} = C'(P)=\triangledown C(P) +\triangledown \triangledown C(P) \delta P$

이다.  따라서 $C'(P)=0$을 구하면 $C(P)$가 최소가 되는 $P$를 구하는 것이 된다. 즉, 두 영상의 유사도가 높도록 $P$를 구해 내는 것이 된다.



지금 풀어야 하는 식 (3)의 문제는 내부에 2차 편미분이 들어 있는 것이다.  이차 미분식을 다시 쓰면,

$\triangledown \triangledown C(P)=\left( {\partial^2 C \over \partial P_i \partial P_j} \right )_{i=1..7, j=1..7}$

이 값을 구해보기 위해 식 (1)을 $P_i$에 대해 2차 미분을 계산하면

${\partial^2 C \over \partial P_i \partial P_j}$
$=-{2 \over \sum_{G_i \in S}{f^2(G_s)}}$  $\sum_{G_s \in S}{[f(G_s)-\tilde{g}(G_s,P)]}$
$\cdot {\partial^2 \tilde{g}(G_s,P) \over \partial P_i \partial P_j}$
$+{2 \over \sum_{G_i \in S}{f^2(G_s)}} {\partial \tilde{g}(G_s,P) \over \partial P_i}{\partial \tilde{g}(G_s,P) \over \partial P_j}$

이다. 만일 $P$가 exact solution에 충분히 가깝다면

$\tilde{g}(G_s, P) \approx f(G_s)$

이므로(즉, 변형 전후의 영상은 근본적으로 같은 부분을 찍은 것이므로 서로 같다.)

${\partial^2 C \over \partial P_i \partial P_j}$
$ \approx {2 \over \sum_{G_i \in S}{f^2(G_s)}} {\partial \tilde{g}(G_s,P) \over \partial P_i}{\partial \tilde{g}(G_s,P) \over \partial P_j}$

이고 Hessian 행렬은 계산하기 쉬운 두 1차 미분의 곱으로 근사된다. 



Bicubic 스플라인 보간을 사용하므로

$\tilde{g}(G_s, P)=g(\tilde{x}, \tilde{y})-w=\alpha_{mn} \tilde{x}^n \tilde{y}^m-w$            (4)

where $m,n=0,1,2,3$

이다. DIC에서 사용하는 선형 변환 관계식(Affine 변형식)의 일반적 형태는

$\tilde{x}=x+P_1+P_3(x-x_0)+P_5(y-y_0)$
$\tilde{y}=x+P_2+P_4(x-x_0)+P_6(y-y_0)$
 
이다. 여기서 $P=(u_0,v_0,u_x,u_y,v_x,v_y,w)^T$로 표기하여 사용한다.
Newton식의 계산에는 식 (4)와 이 식에 대한 7개 변수의 도함수가 필요하다.  1차 도함수들의 예는

${\partial \tilde{g}(G_s, P) \over \partial P_1}={\partial \tilde{g}(G_s, P) \over \partial \tilde{x}} {\partial \tilde{x} \over \partial P_1}
+{\partial \tilde{g}(G_s, P) \over \partial \tilde{y}} {\partial \tilde{y} \over \partial P_1}={\partial \tilde{g}(G_s, P) \over \partial \tilde{x}}$

${\partial \tilde{g}(G_s, P) \over \partial P_2}={\partial \tilde{g}(G_s, P) \over \partial \tilde{y}}$

${\partial \tilde{g}(G_s, P) \over \partial P_7}=1$

${\partial \tilde{g}(G_s, P) \over \partial P_3}=(x-x_0){\partial \tilde{g}(G_s, P) \over \partial \tilde{x}}$

${\partial \tilde{g}(G_s, P) \over \partial P_4}=(y-y_0){\partial \tilde{g}(G_s, P) \over \partial \tilde{y}}$

${\partial \tilde{g}(G_s, P) \over \partial P_6}=(x-x_0){\partial \tilde{g}(G_s, P) \over \partial \tilde{y}}$

${\partial \tilde{g}(G_s, P) \over \partial P_5}=(y-y_0){\partial \tilde{g}(G_s, P) \over \partial \tilde{x}}$

이다.

Newton법의 유도가 해의 초기 추측치 $P_0$ 근방에서 Taylor전개로 유도 되었으므로 초기치 $P_0$를 구해야 한다.  일단 변위의 도함수들인 $u_x, u_y, v_x, v_y$와 global offset변수인 $w$를 0으로 놓고 탐색 영역 내의 모든 가능한 픽셀 위치에 대해 $u_0, v_0$를 탐색으로 찾아 낸다.  이 때, 가장 작은 계수치 $C$를 주는 위치에서 파라메터를

$(u_0,v_0,0,0,0,0,0)$

로 두고 Newton식을 이용한 최적화를 수행한다.


(추가 작성 예정) DIC의 C++ 구현


References
[1] 위키백과: TeX 문법, Wikipedia: TeX grammar (English)
[2] G. Vendroux and W. G. Knauss, Submicron deformation field measurements: Part 2. Improved digital image correlation, Experimental Mechanics, 38(2), 1998.
[3] Wikipedia Newton's method in optimization page,
      http://en.wikipedia.org/wiki/Newton's_method_in_optimization