HMM이란 말을 많이 들어보셨을 겁니다. 머신러닝 분야에서 많이 사용되고 있는 모델로, 한국말로 하면 히든 마르코프 모델이고 영어로는 Hidden Markov Model 입니다.
HMM에 대한 설명은 다른 공대생, 개발자 분들의 블로그에서 자세하게 설명되어 있지만 비전공자가 보기에는 그렇게 친절한 편은 아니더라구요. 글을 읽어도 이 모델이 왜 필요한 것인지, 무엇에 효과적인 것인지를 파악하기 힘들었습니다. 그래서 전 수식은 아예 배제를 하고 이쪽 분야에 관심을 가지고 있는 모두가 쉽게 이해를 할 수 있도록 돕기 위한 차원에서 HMM을 소개하려고 합니다.
우리가 하는 "말"은 단어의 연속이죠. 사람은 이런 연속된 단어를 전체 구조로 파악이 가능하지만, 컴퓨터는 불가능합니다. 예를 들어, "I love you" 라는 말도 사람은 단번에 이해를 하지만, 컴퓨터는 "I", "love", "you" 와 같이 한 단위씩 끊어 의미를 파악하고 연결합니다. 따라서 연속된 단어들이 등장할 때, 컴퓨터를 위해 각 단어에 전체 문장의 의미를 파악할 수 있게 하는 라벨(=클래스)을 붙여주는 것이 필요합니다. 쉽게 말해 "I", "love", "you" 각각에 특정 라벨을 붙이면 전체 문장 "I love you" 의 의미를 파악할 수 있는 것이죠. 단, 특정 라벨을 그냥 마음에 드는 것을 선택하는 것이 아니라 모든 가능한 라벨을 고려하고 가장 적절한 라벨을 선택하는 것으로 확률이 사용됩니다. 라벨을 잘못 붙이는 경우, "I love you"를 "I you love" 식으로 파악하여 제대로된 의미 파악이 어렵습니다.
HMM을 이해하기 위해선 Markov Chain을 먼저 알아야 합니다. 아래 그림을 보면 쉽게 이해할 수 있습니다. 왼쪽은 날씨, 오른쪽은 단어들입니다. 즉 오늘 날씨를 알면, 내일 날씨, 내일 모레 날씨는 어떤지 혹은 특정 단어 뒤에 나올 단어들은 무엇인지 알고 싶은 것입니다. 아마도 "snow is white" 순서가 가장 적절하겠죠. 위의 설명을 이용하자면, 가장 적절한 라벨을 선택하여 순서를 맞춘 것이 "snow is white" 가 되어야 한다는 의미입니다.
파란색 원은 state(=node, 상태)라고 부르고, 화살표는 transition(=edge, 전이)이라고 부릅니다. 각 state는 확률값(라벨, 클래스)이며, transition인 $a_{01}, a_{02}, a_{03}$은 state 중 하나인 $Start_0$에서 $HOT_1$으로 전이될 확률값(=weight)이며 합한 값은 당연히 1이 됩니다.
여기서 필요한 가정은 left-to-right order(Bakis라고도 부름)와 first-order입니다. left-right order이란, 순서가 왼쪽에서 오른쪽으로만 향한다는 것입니다(자기 자신으로 향해도 됩니다. ex: $a_{11}, a_{22}, a_{33}$) first-order이란, 특정 state의 확률은 이전 state 1개의 영향만 받는다는 것입니다. $WARM_3$ 는 $HOT_1$ 아니면 $COLD_2$ 의 영향을 받지, 두 state의 영향을 모두 받지 않습니다. 이는 마르코프 추정(Markov assumption)이라 볼 수 있겠죠.
하나 더 알아야 할 확률은 전에 state가 없던, 즉 처음 시작하는 state의 확률인데요. $\pi$라고 표현하며 아래 그림에서 보듯이 $\pi_1$ 는 $HOT_1$ 이 처음에 나올 확률을 의미합니다. 이 역시 모든 $\pi$ 값을 합하면 1이 되겠죠.
아주 쉬운 예로 4일 동안의 날씨를 다음과 같이 표현한다고 합시다.
cold hot cold hot
이 연속 구조의 확률을 구해보면 처음에 cold가 나온 확률인 $\pi_2$=0.3, cold 다음 hot이 나올 확률인 $a_{21}$=0.2, hot 다음 cold가 나올 확률인 $a_{12}$=0.2, cold 다음 hot이 나올 확률인 $a_{21}$=0.2 을 곱해주면 됩니다. 즉 0.3 x 0.2 x 0.2 x 0.2가 되겠네요.(여기 예시에선 마지막 hot 뒤에 state "End"가 나올 확률은 나오지 않았으므로 계산하지 않았습니다.)
자 이제 히든 마르코프 모델을 살펴볼 차례입니다. 히든 마르코프는 이전까지 살펴본 마르코프 모델과 특별히 다르지 않습니다. 단, 위에선 우리가 state를 직접 눈으로 보고 있는 반면, 히든 마르코프에선 날씨가 HOT인지, COLD인지, WARM인지 확인하지 못합니다. 대신 state를 알려주는 힌트만 제공받는데 예를 들어, 제가 하루에 먹은 아이스크림 개수로 날씨를 "추정(reasoning)"하는 것입니다. 오늘 아이스크림 3개를 먹고, 내일 1개를 먹었다면 아마도 오늘은 날씨가 덥고, 내일은 추웠다는 것을 짐작할 수 있다는 뜻입니다. 이때 아이스크림을 observation, 날씨를 hidden states라고 칭합니다.(음성인식에선 observation이 sound waveform(=MFCC vector)이 되겠고, hidden states가 단어가 되겠죠.)
아래 그림은 히든 마르코프 모델을 나타낸 것입니다. 위의 기본 마르코프 모델과 비교해서 추가된 변수는 O($o_1, o_2, ...o_T$), B($b_i$$(o_t)$) 입니다. O는 방금 말한 observation 연속(아이스트림 3개, 1개, 2개...)이 되겠고, B는 observation likelihoods라고 하며 또 다른 말로 emission probabilities(방출 확률)라고 합니다. B($b_i$$(o_t)$)는 특정 hidden state i(날씨 HOT)에서 특정 observation $o_t$(아이스트림 3개)가 나타날 확률입니다.
히든 마르코프 모델에서 또 하나 가정해야 할 사항은 하나의 observation은 하나의 state의 영향만 받는다는 것입니다. 다시 말해, 오늘 먹은 아이스크림 3개는 오늘 날씨의 영향을 받는 것이지, 어제 혹은 내일 날씨의 영향을 받지 않습니다.
참고로 위 그림과 같이 각 state마다 transition, 즉 화살표가 다 연결되어 있는 HMM을 fully-connected 또는 ergodic HMM이라고 부릅니다.
여기까지가 기본적인 HMM에 대한 소개였습니다. HMM은 다음의 3가지 특징으로 정리해볼 수 있는데요. 각 부분에 대해선 이어서 설명드리겠습니다.
1. Likelihood: HMM의 파라미터 $\lambda$=(A, B)와 observation O가 주어졌을 때, P(O|$\lambda$)을 결정하는 것
2. Decoding: HMM의 파라미터 $\lambda$=(A, B)와 observation O가 주어졌을 때, 가장 최적의 hidden squence Q를 찾는 것
3. Learning: observation O와 HMM의 state 집합이 주어졌을 때, 파라미터 A와 B를 학습해나가는 것
'문돌이 존버 > Speech&Language Processing' 카테고리의 다른 글
비전공자 문돌이가 설명해주는 MFCC 벡터(vector) 2탄 (0) | 2020.12.28 |
---|---|
비전공자 문돌이가 설명해주는 MFCC 벡터(vector) 1탄 (0) | 2020.11.21 |