인공지능관련/MCMC, Gibbs Sampler

0706MCMC2

학위논문통계 2019. 7. 5. 13:58


먼저 간단한 용어부터 설명하죠.


1) 몬테카를로


몬테카를로는 모나코의 유명한 도박도시죠. 카지노로 유명하죠. 그래서 확률의 개념 때문에 이 이름을 쓰는 것 같습니다.



2) 시뮬레이션


시뮬레이션, 즉 모의실험입니다. 이건 현실에서 직접 실험하기 힘들 때나 아니면 수학적으로 계산하기 힘든 시스템을 분석할 때 쓰는 말입니다.

예를 들어 천안함 사건 경우 이걸 그대로 재현할 수 없잖아요. 그럼 실험실에서 이론적으로 간단하게 실험하거나 컴퓨터로 재현을 한다는 것이죠.


또 대표적인 것이 국민연금 계산이죠. 국민연금은 전형적인 댐 모형입니다. 댐에 지속적으로 물이 들어오고 물이 나가는 것이죠. 댐에 남아 있는 물이 국민연금의 잔고가 되는 것이죠.


그럼 10년 후, 20년 후, 30년 후 국민연금의 잔고가 어떻게 될까 이게 궁금하다는 것이죠. 이걸 수학적으로 풀어 계산하기는 매우 힘듭니다. 워낙 관련된 변수들이 많고 실제 수학적으로 풀 수 있는 문제는 매우 간단한 경우에 한정되어 있습니다.


흔히들 중고등학교때 배우는 수학을 푸는 것을 calculus라고 합니다. 대학교 들어가면 다시 배우죠. 이걸 이론적으로 접근하는 것을 analysis(해석학)이라고 합니다. 실수를 다루면 real analysis라고 하고 복소수를 다루면 complex analysis라고 하죠. 그래서 수학적으로 계산이 안되면 이걸 analytic하게 풀 수 없다고 이야기합니다. 이럴 경우 대부분 series로 변환하게 앞부분 2차나 3차항으로 간단이 해서 근사치로 풀거나 컴퓨터에서 근사치를 찾아 가야 합니다.



국민연금 같은 경우는 출산율, 사망률, 경제성장, 취업률 등 이런 변수들이 정확하게 추정되어야 계산이 가능하거든요. 그런데 이게 쉽지가 않다는 것이죠. 그래서 돈이 들어오고 나가는 모형을 간단히 한 다음 이런 변수들에 다양한 값을 넣어 컴퓨터에서 계산을 해 보는 것입니다.


이 경우는 deterministic하게 문제를 푸는 것이고 이런 변수들이 확률적이라 생각하면 이젠 확률분포를 가정하여 이 확률분포에서 난수를 생성하게 계산을 합니다. 1000번, 10000만번 정도 계산해서 평균을 구한다는 것이죠. 그래서 좁은 의미에서 확률분포에서 난수를 생성하는 것을 시뮬레이션이라고도 합니다.



철학에서 이런 수학의 개념을 가져와서 시뮬레이션이라는 말을 사용하는 것 같습니다. 사실 우리는 다 가상현실에서 살고 있죠. 자기가 접하는 정보 하에서 세상을 판단하는 것이죠. 한마디로 우물안 개구리죠. 자기가 맨날 보는 평평한 땅을 지구라 생각하는 것이죠. 자기 앞의 tangent 공간을 지구라고 생각하는 것이고, 자신이 위치하고 있는 지점에 따라 이 tangent 공간이 다 달라지는 것이죠. 




3) 이론으로서 MC(마코프 체인)


잡소리에서 류현진의 구종을 MC를 간단히 설명했습니다. 이 이론이 원래 통계물리에서 나온 것으로 압니다. MC는 다음 시점의 상태(확률분포)는 오로지 현재 상태에만 영향을 받는다라는 것이죠. 그 이전의 상태에 대한 정보는 아무런 도움이 안됩니다.


예를 들어 입자가 아주 짧은 일정시간에 무작위로 아주 짧은 거리를 운전한다고 생각해보죠. 아래 그림에서

 






그럼 (t+1) 시점에서 입자의 위치는 오로지 t 시점에서 입자의 위치에 의해 결정되지 (t-1) 시점에서 입자가 어디에 있었는지 정보는 (t+1) 시점에서의 입자의 위치을 아는데는 아무런 도움이 안됩니다. 이게 전형적인 first order MC입니다. 통상 이런 운동을 임의행보(random walk)이라고 합니다. 그래서 이렇게 수 많은 입자의 운동을 모형화하는데 이 MC가 유용합니다.



류현진의 경우는 지난번 잡소리에 쓴 글을 다시 가져오겠습니다. 


최근 류현진 선수가 매우 잘하고 있죠. 그 이유로 볼컨트롤이 매우 좋아졌다고 하고 더 좋게 이야기하면 command가 좋아졌다고 하죠. 그리고 그 전부터 이야기 나온 게 다음 공을 예측하기 힘들다는 이야기가 있죠.


류현진 선수가 주로 던지는 공 종류가 10가지가 있다고 가정을 하면 지금 낮은 커브공을 던져서니까 다음 공은 높은 직구를 던질 확률이 0.8 정도된다 이러면 공을 예측하기 쉬운 것이죠. 이 경우 마크프 체인이 잘 먹혀 들어가고 있는 것입니다. 그런데 다음 공이 10가지 유형 중 하나를  던질 확률이 서로 비슷비슷하다. 즉, 0.1 정도된다 이러면 타자가 예측하기 힘듭니다.

다음 공으로 어떤 종류의 공을 던질 확률이 현재 던진 공에만 영향을 받을 경우 이때 마코프 체인이라 합니다. 정확하게는 first order MC라고 합니다. 다음 공을 예측하는데 현재 던진 공의 정보만 알고 있으면 되지 그 이전에 무슨 공을 던졌는지에 대한 정보는 쓸데없다는 것이죠. 즉 현재 이전에 던진 공의 종류에 관한 정보는 쓰레기 정보라는 이야기입니다.

그러나 현재 던진 공의 종류를 알 다음 다음에 올 공의 종류의 확률이 서로 비슷하다 그러면 이 first oder MC는 별 도움이 안되고 그 이전에 던진 공의 종류, 또는 이것도 잘 안되면 그 이전 이전에 던진 공의 종류의 정보도 알아야 합니다.  


통상 우리는 타자들의 감에 맞깁니다. 그러나 일본이나 미국 같이 데이터 분석을 좋아하는 곳에서는 벌써 이런 MC 분석 정도는 아마 했을겁니다.




주식시장에서도 MC를 적용할 수 있을까요. 할 수는 있죠. 문제는 이렇게 MC를 적용해서 이용할 때 이익이 되는가 하는 문제이죠.


내일 주식 변화는 오로지 오늘 주식 변화에 영향을 받는다고 가정하죠. 그럼 내일 주식 변화를 현 주가의 +-0.5% 인 경우 보합, +1%인 경우 상승, -1% 이내인 경우는 하락, +2% 인 경우 강세, +2% 이상인 경우 폭등 등 다양하게 범주화를 합니다.


그럼 이전 주식 시장의 변화를 데이터해서 Pr(내일 보합| 오늘 보함), Pr(내일 폭등|오늘 상승) 이런 조건부 확률을 구해 낼 수 있습니다. 이걸 행렬로 표시한 것이 전이행렬 T가 됩니다.


주식데이타만 깔끔하게 정리가 되어 있으면 이런 프로그램은 우리나라 상장된 모든 기업에 대해 한 나절에 다 만들 수 있습니다. 주식데이타가 깔끔해야 하는 이유는 중간에 상장폐지 되는 기업도 있고, 또 증자나 배당금 때문에 증자락이나 배당락이 생겨 이런 것을 고려해서 데이터를 깨끗하게 만들어야 합니다.


그래서 이걸 만든 다음 오늘 주식의 변화를 보고 내일 주식이 어떻게 변할지 어느 정도 확률적으로 추측이 가능하다는 것이죠.



그러나 사실 생각 할 거도 없이 이런 모형은 잘 적용이 안됩니다. 사람들이 돈을 잃는 경우는 IMF나 아니면 미국 금융위기 등 대형 사건이 터졌을 경우, 또는 경기 변동으로 경제가 하락세로 변할 경우 이런 경우인데 이건 이런 MC 모형으로서는 알 수가 없거든요.


자신이 주식할 때 매일 궁금해서 주식 게시판만 보고 있으면 주식 포기하세요. 돈을 안전한 곳에 저축했다가 IMF나 미국 금융위기 같은 사건이 다시 터져서 주식도, 부동산도 박살이 날 때 그때 주식이 사세요. 그리고 5년 이상 묵혔다가 사람들이 주식시장으로 몰릴 때 욕심부리지 말고 빠져 나오는 것이 주식시장에서 돈 버는 확실한 방법입니다.


인공지능이 뭐 다 할 것 같이 떠드는데 인공지능해서 주식시장에서 돈 벌었다는 사람들이 있습니까. 그리고 모든 사람들이 다 인공지능을 이용해서 주식을 하면 누가 돈을 벌죠. 기후 예측은 왜 인공지능을 이용해서 정확하게 예측을 못하는 것이죠.




4. 수치해석상의 MCMC


앞에서 통계 물리에서 이론적으로 발달한 MC 이론을 미국의 LA 무슨 연구소인가 유명한 연구소에서 시뮬레이션 하는 방법을 생각하기 시작했습니다. 그래서 Metropolis라는 알고리즘이 나옵니다.


앞에서도 한번 이야기를 했지만 이게 유명해진 것이 1984년 Geman & Geman의 이미지 복원 논문입니다. 여기서 Gibbs Sampling 하는 방법이 처음 나옵니다. 이 논문은 읽기가 쉽지 않습니다. MRF, image processing 용어도 나오고, 또 graph 용어도 나오고 그리고 앞에서 이야기한 metropolis와 annealing 용어도 나오고 해서 쉽지가 않습니다. 책이면 중요한 용어들을 정확하게 정의하고 설명하는데 저널 논문이라 자세한 설명들이 안 나옵니다.


혹시 참고로 좀 더 정확한 개념들을 알고 싶으면 Barber의 Bayesian Reasoning and Machine Learning 이라는 책을 찾아 보시기 바랍니다. 여기서 소개하는 것은 대부분 구글 검색하면 거의 다 구할 수 있습니다. Metropolis와 Annealing 알고리즘은 앞에서 설명한 볼쯔만 머신 책을 보시고 앞의 여행하는 세일즈 문 알고리즘을 이해하시면 됩니다.



하여간 그 당시에는 통계학 분야에서는 이 논문이 거의 알려져 있지 않았습니다. 그러다가 1984년  Tanner & Wong이라는 학자가 사후확률 데이터를 sampling 하는 방법으로 data augmentation이라는 방법을 제시합니다. 이 방법은 Dempster et  al. 의 유명한 EM 알고리즘에서 아이디어를 얻었다고 합니다.


그러다가 1990년 Gelfand & Smith라는 학자가 이 Gemman & German의 방법과 Tanner & Wong 방법이 사실상 같은 것임을 밝히고 여기서 우리가 흔히 책에서 보는 Gibbs Sampler 방식을 소개합니다. 이때부터 통계학쪽에 많이 알려집니다. 이 당시만해도 MCMC라는 용어 자체도 없었든 것으로 압니다.



제가 공부할 때가 1995년 정도이니까 저도 그 당시에는 이 MCMC라는 용어를 들어 본적이 없었습니다. 한국에 와서 사람들이 자꾸 MCMC하길래 이게 뭐지 하고 궁금해 한 적이 있었습니다. 뭐 그 당시에는 더 이상 공부할 생각이 없어서 더 이상 찾아보지를 안했는데 최근에 다시 이야기가 많이 나와서 그때서야 제가 옛날에 공부한 게 MCMC이구나 하고 알았습니다.


하여간 그 당시 Gibbs Sampler라는 말만 들어가면 웬만한 외국 저널에서 논문을 실어 줬습니다. 한마디로 매우 홧했죠. 그러지만 앞에서 이야기했듯이 1990년대에 들어서야 사람들이 어느 정도 이 이론에 대해서 조금씩 이해를 하기 시작한 것이죠.



하여간 앞에서 설명한 논문들은 이론 전개상 매우 중요한 논문이기 때문에 한번은 읽어 보세여 할 겁니다. 또 Tanner & Wong은 EM 알고리즘과 관계가 있기 때문에 Dempster 논문도 같이 보시면 좋을 것이라 생각합니다. 


Tanner와 Wong 의 아이디어는 이렇습니다. 다음과 같은 모양을 만드는 것입니다.






 즉 사후확률분포 g()에다 어떤 작동 T를 시키니까 다시 g()가 된다는 모양을 도출한 것입니다.


만약 T가 행렬이고 안에 들어가는 것이 벡타이면 위 식은


T*x=1*x


가 되어 행렬 T의 고유값이 1이라는 이야기가 됩니다. 어떤 행렬의 고유값이 2이면 어떤 벡터를 같은 방향으로 2배 늘리는 것이 되고, 고유값이 0.5이면 어떤 벡터를 반으로 수축시키는 것이 됩니다. 고유값이 음수이면 반대 방향으로 그런 작용을 한다는 것이죠. 고유값을 이렇게 이해하면 어떤 행렬이 정의역인 벡터 공간에 어떤 작용을 하는지 기하학적으로 약간 감을 잡을 수가 있습니다.



앞에서 MC가 어떤 성질을 만족하면 다음과 같은 균형분포, 또는 정상분포로 간다고 했습니다. 그래서 균형분포 s(a)에 도달했다고 하면 여기에 다시 전이행렬 T를 작동시키면 어떻게 될까요. 이미 균형분포 S(a)에 도달했으니까 또 T를 작동해봐야 다시 S(a)로 나옵니다. 즉



 T(s(a))=s(a)


위의 모양은 매우 중요합니다. 수학에서 Fixed point라고 하는데 이게 수치해석에서 매우 중요합니다. 예를 들어


T(a)=a


라는 모양이 있다고 하죠. 이때 T는 여러분이 만든 알고리즘이라 생각하시면 됩니다. 그럼 a의 초기값 a0을 알고리즘 T에 대입합니다. 그럼


a1=T(a0)


이 나옵니다. 그럼 나온 a1을 다시 알고리즘 T에 대입을 합니다. 그럼


a2=T(a1)


이 됩니다. 그럼 T(a)=a라는 조건에서 이 방식으로 계속 진행하면 언젠가는 a(k)값 a(k+1) 값이 거의 비슷하게 됩니다. 이렇게 계속 진행해도 값이 거의 변함이 없을 때까지 진행하고 어떤 수준에서 이 작업을 멈추고 최종 나온 값을 근사치로 받아 드립니다.


그럼 Tanner & Wong에 나온 T는 어떤 모양일까요.





  그리고 이쪽에서 트릭으로 많이 사용하는 공식은






이런 식으로 조건부 확률분포를 만들어 다시 적분하는 공식을 많이 사용합니다. 기억해두시면 좋습니다.


다음은 이항분포를 중심으로 베이지안이 실제로 어떻게 적용되는지 한번 살펴 보겠습니다.


'인공지능관련 > MCMC, Gibbs Sampler' 카테고리의 다른 글

MCMC 암호 뽀개기  (0) 2019.08.04
0715MCMC Gibbs Sampler1  (0) 2019.07.15
0711MCMC2 베이지안 이해하기  (0) 2019.07.11
mcmc1  (0) 2019.07.01
MC sample, MCMC, Gibbs Sampler, Metropolis   (0) 2013.03.10