티스토리 뷰


Using hidden Markov models

- 3가지 대표적인 문제들은 아래와 같다.

  • 주어진 파라미터들로 특정한 출력 순서의 확률 값을 구하는 것.(forward-backward algorithm)
  • 주어진 출력 순서들을 통해서 hidden 상태에 대한 문제를 푸는 것(Viterbi algorithm)
  • 주어진 출력 순서 또는 순서의 집합들을 통해서 가장 적합한 상태 변환와 출력 확률을 구하는 것, 즉, HMM의 파라미터들을 추론하는 것. (Baum-Welch algorithm)

A concrete example

- 멀리 살고 있는 친구와 매일 전화로 그날 무엇을 했는지 대화하고 있다고 하자. 그 친구는 3가지 행동만 좋아한다. "공원 산책", "쇼핑", "아파트청소". 무엇을 할 것인지는 날씨에 따라 정해지게 된다. 친구가 살고 있는 곳의 정확한 날씨 정보는 없지만 경향에 대해서는 알고 있다. 그가 무엇을 말했는지를 통해서 오늘 날씨에 대해서 추측을 하는 것이다.
- 날씨는 discrete Markov chain을 통해서 작동하고 "비", "맑음"의 두가지 상태가 있지만 바로 관측을 할 수는 없다. 친구가 행동에 대해서 말을 하게 되는 경우가 발생 하게 되므로, 날씨는 hidden 변수들이고 행동은 obervable 변수이고, 전체적으로 HMM의 구조를 가지게 된다. 아래는 파이썬 문법이다.

states = ('Rainy', 'Sunny')
observations = ('walk', 'shop', 'clean')
start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
transition_probability = {
   'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},
   'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},
   }
emission_probability = {
   'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
   'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
   }

start_probability는 처음 친구가 전화를 걸었을 때의 상태에 대한 추론 값이다. transition_probability는 Markov chain에 따른 확률 값이다. 이 예에서는 오늘 비가 온다면 내일 맑을 확률은 30%이다. emission_probability는 친구가 각 날씨에 대하여 어떠한 행동을 취했는지에 대한 확률이다. 비가 온다면 친구는 '청소'를 할 확률이 50%이고 맑다면 '산책'할 확률은 60%이다. 이 예는 Viterbi algorithm에서도 다룬다.

Applications of hidden Markov models

  • 비문 해독
  • 음성 인식, 제스쳐 행동 인식, 신호언어 인식, 문자 인식
  • 기계 번역
  • Partial discharge(?)
  • 음악 악보 following
  • 생체정보, 유전공학
  • 기타등등

History

- HMM은 처음 paper로 Leonard E. Baum등에 의해서 1960후반에 발표 되었다. 첫 어플리케이션은 1970년 중반부터 시작한 음성 인식이다. 1980년 후반에는 HMM이 생체학적 DNA 순서를 분석하는데 쓰였고 생체정보학에서 많이 쓰이고 있다.


 /////////////

추가로 조사할 것 : forward-backward algorithm, Viterbi algorithm, Baum-Welch algorithm, discrete Markov chain

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함