안녕하세요. HMM 에대해 최대한 핵심만 적을려고 했는데 설명이 부족했나 봅니다.
그래서 이번에는 내용을 조금더 정리하고 복습하는 시간을 가지고 알고리즘으로 넘어가겠습니다.
워낙 내용이 어려운지라 여기서 다 설명을 드릴 수 없으니 밑에 위키피디아와 블로그를 참고하시면 됩니다.
위키피디아 - HMM
HMM에 대해서 한글로 자세히 설명한 블로그도 있습니다. (Predictus_Blog)
구체적인 사례로 온라인 필기 인식에 대한 동영상을 첨부합니다.
Mouse Motion Recognizer from semix2 on Vimeo.
HMM이란?
시간성을 갖는 데이터의 패턴을 인식하기 위해서는 데이터에 내포되어 있는 시간성을 적절히 표현하고 그것으로 원하는
정보를 추론할 수 있는 모델이 필요하다. HMM은 이런 능력을 가진 가장 대표적이고 가장 널리 사용되는 모델이다[1].
HMM은 아래와 같은 세 가지 매개 변수를 갖는다. 이들의 값이 정해지면 HMM이 만들어진 셈이다.
훈련집합으로 λ를 추정하는 작입이 바로 HMM 학습니다.
λ=(A,B,π)
를 갖는다.
1. 상태 전이 확률 A
HMM이 작동하는 도중 다음 상태를 결정하는 데 쓰인다. 
2. 관측 확률 B
HMM이 어느 상태에 도달하였을 때 그 상태에서 관측될 기호를 결정하는데 쓰인다. 
3. 초기 상태 확률 벡터 π
HMM을 가동시킬 때 어느 상태에서 시작할 지를 결정하는데 쓰인다.
Reference
[1]패턴인식-오일석(7장 순차 데이터 인식) p209~p249 (http://ryan0802.tistory.com/100)

'프로그래밍 > 패턴인식' 카테고리의 다른 글

HMM((Hidden Markov model) (2)  (0) 2017.02.24
HMM((Hidden Markov model) (1)  (0) 2017.02.24
안녕하세요.
제가 이번에 알려드리는 알고리즘은 패턴인식에서 많이 사용하는 HMM입니다.
HMM이란 확률에 따른 패턴의 일련을 모델링한 수학적 모델이며, 구축된 모델을 기반으로 다양한 시스템을
구축하는 기반 알고리즘을 제공합니다.
보다 자세한 사항은 사이트에서 확인 가능합니다.
HMM은 여러분야에서 사용합니다.
- on-line handwriting recognition
- speech recognition
- gesture recognition
- language modeling
- motion video tracking
- gene sequence allignment
- stock price prediction
게임에서 HMM의 활용방법에는 어떤것이 있을까요?
가장먼저 생각나는 것은 블랙엔화이트에서 마법을 사용할 때 입니다.
사용자가 마우스를 움직이면 시스템에서 어떤마법인지 인식하고 해당 마법을 사용하게 됩니다.
또하나의 예로는 음성인식에서인데요. 현재까지도 HMM에서 가장 많이 사용되는 분야가 음성인식분야입니다.
눈길을 끄는 게임은 슈팅게임 '파!'입니다. '파!'하고 외치면 총알이 나가 장애물을 처리하게 됩니다. 
뭐 공공장소에서 사용하기에는 다소 민망하겠군요.
아직 이해가 안된다구요? 그렇다면 하나더! 
HMM을 이해하기 위해 하나의 시나리오를 보도록 하겠습니다.
여자 친구의 삶
옛날에 같은 도시에 살았던 여자 친구와 이제는 멀리 떨어져 살고 있다.
그녀는 날씨에 따라 그날 할 일을 결정한다. 날씨는 크게 해와 비로 나누고, 하는 일은 산책, 쇼핑, 청소중의 하나이다.
그녀와는 매일 통화하는데 그날 한 일에 대해 이야기를 나눈다. 그녀가 한 일은 관측이 가능한 것이다.
하지만 날씨에 대해서는 말하지 않아 한 일을 가지고 추측하는 수밖에 없다. 날씨는 감추어져 있는 것이다.
기상대 정보 사이트를 뒤져 그녀가 사는 도시의 날씨 변화가 다음과 같다는 것을 알아내었다.
또한 기상대 자료를 추가로 조사하여 아래 정보도 알게 되었다.
옛날 같은 도시에 살았을 때 그녀를 면밀히 관측한 결과 날씨에 따른 그녀의 행동이 아래와 같다는 것을 알고 있다.
내가 가진 이런 정보를 이용하여 다음과 같은 질문에 대한 답을 구하고 싶다. 어떻게 하면 될까?
- 그녀가 일주일 연속으로 쇼핑만 할 확률은?
- 그끄저께 산책, 그저께 산책, 어제 청소했다는데 3일간 그곳 날씨는?
- 그끄저께 산책, 그저께 산책, 어제 청소했다는데 오늘과 내일 무얼할까?
Hooray! HMM을 사용하면 답을 구할 수 있다. 다음은 여자 친구의 삶을 모델링 한 HMM이다.
앞의 시나리오는 HMM의 핵심 아이디어를 이해하는데 결정적인 도움을 주었다고 생각됩니다.
그렇다면 이제 HMM을 어떻게 사용해야 할까요?
HMM의 사용
HMM을 실제 응용에 적용하기 위해서는 세 가지 문제를 풀어야 합니다. 이들 문제에 대한 자세한 사항은 [5]를 참고하시면 됩니다.
a) Evaluation(평가)
주어진 관찰 상태의 변화(sequence)를 가져올 확률값을 구하는 것이다. 또는 구성된 여러 개의 HMM 모델 중에서 주어진 관찰 상태의 변화를 가장 잘 표현하는 HMM 모델들을 선택할 수 있는 문제이다. 이를 위해 사용되는 알고리즘이 Forward 알고리즘이다. 위의 여자 친구의 삶에서 아래와 같은 질문이 평가 문제에 해당된다.
"여자친구가 오늘 산책, 내일 산책, 모레 청소, 글피 쇼핑할 확률은 얼마인가?"
b) Decoding(디코딩)
주어진 관찰 상태들의 패턴(Sequence)이 주어질 때, 합당한(그에 대응한) Hidden Pattern의 Sequence를 찾는 문제이다. 가장 많이 활용되는 방안이며, 이 방법을 알고리즘화 한 것이 Viterbi 알고리즘이다. 대표적인 활용은 자연어처리에서 형태소분석할 때 이용된다. 위의 여자 친구의 삶에서 아래와 같은 질문이 디코딩 문제에 해당된다.
"여자친구가 나흘간 산책, 산책, 청소, 쇼핑하였는데 그 나흘의 날씨를 추정해 보면?"
c) Learning(학습)
주어진 데이터로부터 HMM을 구성하는 것이다. 가장 어려운 작업이며, Learning의 결과를 Evaluation을 해서 검증을 한다.
-----------------------------------------------------------------------------------------------------------------
고생하셨습니다. 이렇게 간략하게(?) HMM에 대해서 알아봤습니다.
다음에는 위에서 말한 Forward 알고리즘과 Viterbi 알고리즘에 대해 알아보겠습니다.
감사합니다.
Reference
[1]http://semix2.tistory.com/404
[2]http://isnl.kaist.ac.kr/predictus/blog/?p=74
[3]http://blog.daum.net/_blog/BlogTypeView.do?blogid=09dDw&articleno=15669927
[4]http://shineware.tistory.com/entry/HMM-Hidden-Markov-Model
[5]패턴인식-오일석(7장 순차 데이터 인식) p209~p249 (http://ryan0802.tistory.com/100)


'프로그래밍 > 패턴인식' 카테고리의 다른 글

HMM((Hidden Markov model) (2)  (0) 2017.02.24
HMM((Hidden Markov model) (1)  (0) 2017.02.24

+ Recent posts