Markov Chain (MC)

태그
Probabilistic Model
포스팅 날짜
2021/11/27
본 세션에서는, Artificial Neural Network 라고 부르기는 어렵지만, 다른 여러 Artifical Neural Netowrk 구조의 근간이 되는 확률 모델에 대해서 알아보려고 합니다.
Markov Chain 의 구조를 보시면 Input 과 Output Cell 이 존재하지 않습니다. Variational Auto Encoder (VAE) 에서 나왔던 Probabilistic Hidden Cell 여러 개와 이들 모두를 Deep Feed Forward Network (DFF) 마냥 이어준 형태를 가지고 있습니다.
그렇다면, 이러한 구조의 확률 모델은 왜 생겨나게 되었을까요?
눈치채신 분들도 계시겠지만, Markov Chain (MC) 는 Inference 를 위한 구조가 아닙니다. 정확히 말씀드리자면, inference 를 위해 사용할 수 없는 것은 아니지만 Output Cell 이 없는 구조이기 때문에 명확하게 Output 이 나오는 구조가 아닙니다. 단순히 확률적 계산과정을 모델로 시각화한 것에 그쳤다고 보시는 것이 좋습니다.
앞서, 확률적 계산과정 을 이야기 드렸습니다.
그렇다면, Markov Chain 이 확률적으로 계산하여 풀고 싶었던 문제는 무엇일까요?
답부터 말씀드리자면, Markov Property 를 가지는 확률변수가 미래에 가질 상태에 대한 확률입니다.
간단한 예시로 많이 나오는 것이 일기예보입니다.
일기예보의 간략한 버전으로, 날씨는 크게 두 가지 맑음, 그리고 흐림 만 존재한다고 가정해봅시다.
이렇게, 가능한 날씨의 경우의 수를 Markov Chain (MC) 에서는 State (상태) 라고 이야기합니다.
일기예보에서 중요한 것은 날씨를 예측하는 것이고, 이를 Markov Chain (MC) 에 적용하면, 미래의 상태를 예측하는 것이라고 볼 수 있습니다. 이 때 Markov Chain (MC) 에서 다루는 확률 변수인 날씨에 대해서 앞서 이야기한 Markov Property 를 가정합니다.
Markov Property 는 이전 상태만으로 다음 상태의 확률을 구해낼 수 있다는 가정입니다. 날씨로 이야기를 드리면, 오늘 날씨로 내일 날씨가 어떨지를 확률적으로 표현해낼 수 있다는 것입니다. 이는 연속적인 확률과정에서 과거의 데이터를 저장할 필요가 없기 때문에 memoryless 한 특성을 가지고 있다고 표현되기도 합니다.
Markov Property 때문에, 미래의 상태를 예측하기 위해 Markov Chain (MC) 에서 알아야 할 정보는 오로지 이전 상태에 따른 다음 상태의 확률 정보 뿐입니다. 이를 Trasition Matrix, TT 라고 부릅니다. 일기예보의 관점에서는 아래처럼 오늘의 날씨에 따른 내일의 날씨 확률 표 속의 데이터라고 볼 수 있습니다.
오늘/내일
맑음
흐림
맑음
0.2
0.8
흐림
0.4
0.6
위 데이터를 가지고 있으면, 오늘 흐렸는데 내일 흐릴 확률은 얼마일까? 에 대한 답을 구할 수 있게 됩니다.
P(내일 흐림)=P(오늘 흐림)P(내일 흐림오늘 흐림)+P(오늘 맑음)P(내일 흐림오늘 맑음)=1×P(내일 흐림오늘 흐림)+0×P(내일 흐림오늘 맑음)=0.6\begin{align*} \rm{P(\mathbb{내일\ 흐림})} &= \rm{P(\mathbb{오늘\ 흐림})}\rm{P(\mathbb{내일\ 흐림}|\mathbb{오늘\ 흐림})} + \rm{P(\mathbb{오늘\ 맑음})}\rm{P(\mathbb{내일\ 흐림}|\mathbb{오늘\ 맑음})} \\ &= 1\times \rm{P(\mathbb{내일\ 흐림}|\mathbb{오늘\ 흐림})} + 0\times \rm{P(\mathbb{내일\ 흐림}|\mathbb{오늘\ 맑음})}\\ &= 0.6 \end{align*}
마찬가지로, 오늘 흐렸는데 내일 맑을 확률은 얼마일까? 에 대한 답도 구할 수 있게 됩니다.
P(내일 맑음)=P(오늘 흐림)P(내일 맑음오늘 흐림)+P(오늘 맑음)P(내일 맑음오늘 맑음)=1×P(내일 맑음오늘 흐림)+0×P(내일 맑음오늘 맑음)=0.4\begin{align*} \rm{P(\mathbb{내일\ 맑음})} &= \rm{P(\mathbb{오늘\ 흐림})}\rm{P(\mathbb{내일\ 맑음}|\mathbb{오늘\ 흐림})} + \rm{P(\mathbb{오늘\ 맑음})}\rm{P(\mathbb{내일\ 맑음}|\mathbb{오늘\ 맑음})} \\ &= 1\times \rm{P(\mathbb{내일\ 맑음}|\mathbb{오늘\ 흐림})} + 0\times \rm{P(\mathbb{내일\ 맑음}|\mathbb{오늘\ 맑음})}\\ &= 0.4 \end{align*}
그리고, 오늘 흐렸는데 이틀 후에 흐릴 확률은 얼마일까? 에 대한 답도 구할 수 있게 됩니다.
P(이틀후 흐림)=P(내일 흐림)P(이틀  흐림내일 흐림)+P(내일 맑음)P(이틀  흐림내일 맑음)=P(내일 흐림)×0.6+P(내일 맑음)×0.8=0.6×0.6+0.4×0.8=0.68\begin{align*} \rm{P(\mathbb{이틀 후\ 흐림})} &= \rm{P(\mathbb{내일\ 흐림})}\rm{P(\mathbb{이틀\ 후\ 흐림}|\mathbb{내일\ 흐림})} + \rm{P(\mathbb{내일\ 맑음})}\rm{P(\mathbb{이틀\ 후\ 흐림}|\mathbb{내일\ 맑음})} \\ &= \rm{P(\mathbb{내일\ 흐림})}\times 0.6 + \rm{P(\mathbb{내일\ 맑음})}\times 0.8\\ &= 0.6\times0.6+0.4\times0.8 \\ &= 0.68 \end{align*}
이런 식으로 계산하게 되면, 미래의 어떤 특정한 날에 흐리거나 맑을 확률을 구하는데에 전혀 문제가 없습니다. 일반화하여 오늘 날씨가 흐릴 때 N 일 후의 날씨가 맑을 확률 및 흐린 확률은 다음과 같습니다.
[N 일후 맑을 확률N 일후 흐릴 확률]=[0.2 0.80.4 0.6]N[01]\begin{bmatrix} \rm{N}\ \mathbb{일 후\ 맑을\ 확률} \\ \rm{N}\ \mathbb{일 후\ 흐릴\ 확률} \end{bmatrix} = \begin{bmatrix} 0.2 \ 0.8\\ 0.4\ 0.6 \end{bmatrix}^N \begin{bmatrix} 0 \\ 1 \end{bmatrix}
즉, Markov Chain 으로 현재 상태와 Transition Matrix 만 알고 있다면 미래의 상태를 예측할 수 있습니다.
여기까지 오시면, 의문이 생기실 수 있습니다.
저조차도 제가 소개드린 내용이 기초 통계학적 내용으로도 충분히 가능한 내용인데, 거창하게 Markov Chain (MC) 라는 이름을 붙일 필요가 있는 내용인가? 혹은 그리고 해당 구조가 무슨 의미가 있느냐? 에 대한 궁금증이 많았습니다.
결론부터 말씀드리자면, 시스템을 모델링하는 방법 중 하나로 보시는 것이 좋을 것 같습니다. 어떤 데이터를 분석할 때 모델링으로 사용시도를 해볼 수 있는 방법 중 하나라고 보시면 됩니다. 확실하게 Markov Property 를 가지고 있는 데이터를 기반으로 계산을 해보는 것이 아닌, 현재 가지고 있는 데이터를 이런 형태로 모델링하면 잘 들어맞을까? 정도로 시도할 수 있는 방법론으로 보시면 됩니다.
더불어, 머신러닝 혹은 추론에 조금 더 의미를 둔다면 Hidden Markov Chain (HMC) 로 갈 때 그나마의 의미가 생긴다- 정도로 말씀드릴 수 있을 것 같습니다. 기존에 설명드린 예시는 Transition Matrix 가 주어졌었는데 이는 일반적으로 과거의 데이터로부터 생성할 수 있습니다. 날씨의 예시로 들자면, 과거에 날씨 정보를 들여다 봄으로써 Markov Chain (MC) 를 구성할 수 있는 것입니다.
하지만, 과거의 날씨 정보를 모른다면 어떻게 할까요?
Hidden Markov Chain (HMC) 에서는 이러한 상황에서 날씨에 따른 아이스크림 소비량 등의 데이터를 이용해서 역으로 날씨 변화의 Transition Matrix 를 생성해낼 수 있습니다. 물론, 이 Hidden Markov Chain (HMC) 에서 사용하는 알고리즘도 gradient + back propagation 이 포함되지 않은 고전 머신러닝 알고리즘이기는 합니다.
이렇게 이번 세션에서는 Markov Chain (MC) 에 대해서 알아보는 시간을 가졌습니다. Markov Chain (MC) 는 Neural Network 가 아니며, 앞으로 소개드릴 네트워크의 기본이 되는 구조 정도로 알아두시면 좋을 것 같습니다.