-
Notifications
You must be signed in to change notification settings - Fork 19
[HMM] forward and backward variable
Myungchul Shin edited this page May 15, 2020
·
12 revisions
Hidden Markov Model
에서 관측열의 확률 P(O)를 계산할때 사용하는 forward variable
, backward variable
에 대해서 수식 전개를 하면 아래와 같다. (더 자세한 사항은 Linguist's Guide to Statistics 참고)
P(O)를 계산할때는 굳이 beta값은 필요가 없을것이다. 그렇다면, 모델을 학습시킬 때는 beta값이 어떤 역할을 하는지 수식을 전개시켜서 확인해보자. 우선 transition probability를 추정하기 위해서 "어떤 특정 관측열 O가 주어졌을 때, 시간 t의 상태가 si이고 시간 t+1의 상태가 sj일 확율"을 계산할 필요가 있다. 그래야 전체 관측열 데이터를 가지고 통계적으로 추정할 수 있을 것이니...
이 확률값을 epsilon(t, i, j)이라고 전개하면 아래와 같다.
epsilon 값은 alpha, beta 값을 포함하기 때문에 forward-backward variable
이라고 부르며 beta 값이 없으면 이것을 계산할수가 없을 것이다.
구체적인 예시를 들어 설명한 이 글과 이 글을 읽어보면 많은 도움이 될 것 같다.
sequence labeling에서 개별 label의 score를 얻어내는 decoding 기법. wapiti crf tool 참고.
-p | --post
Use posterior decoding instead of the classical Viterbi decoding. This generally produce better results at the cost of slower decoding. This also allow to output normalized score for sequences and labels.
- alpha, beta variable 계산하고 time=t에서 state=j일 확률을 alpha, beta를 이용해서 계산
- tag_viterbi()에서 viterbi decoding한 결과로 most likely state sequence
- 개별 time=t에서 prediction한 결과 state=j에 대한 확률은 위에서 계산해둔 결과를 참조