Transcript Document
Accelerating Viterbi Algorithm 20120814 Pei-Ching Li Outline • Introduction of Viterbi Algorithm – Example • Architecture – Parallel on CUDA • MIDI – hmmtrain • Future Works Introduction of Viterbi Algorithm • a dynamic programming algorithm for finding the most likely sequence of hidden states called the Viterbi path. • Hidden Markov Model Example O = Walk->Walk->Shop->Clean Example O = Walk->Walk->Shop->Clean Example O = Walk->Walk->Shop->Clean Example O = Walk->Walk->Shop->Clean Example O = Walk->Walk->Shop->Clean S = Sunny->Sunny->Rainy->Rainy Parallel Part • CSE551 Final Project: Parallel Viterbi on a GPU – Authors: Seong Jae Lee, Miro Enev – Provenance: Autumm 2009, University of Washington Architecture • Input – transition probability – emission probability • Algorithm – hmmgenerate – hmmviterbi – accuracy of hmmviterbi Matlab 2011 • [SEQ, STATES] = HMMGENERATE(LEN,TRANSITIONS,EMISSIONS) • STATES = HMMVITERBI(SEQ,TRANSITIONS,EMISSIONS) • Use MATLAB Coder to generate C/C++ code Parallel on CUDA • Focus on hmmviterbi() to accelerate – Calculate the values – Choose the maximum • reduction Parallel on CUDA (2nd version) Parallel on CUDA MIDI • Score : • Length : 1 second • Hmmtrain : – unknown states – initial guesses for TRANS and EMIS – hmmtrain (seq, TRANS_GUESS, EMIS_GUESS) hmmtrain (seq, TRANS_GUESS, EMIS_GUESS) • TRANS_GUESS : 12x12 – C → D, D → E, E → F, F → G – Others • EMIS_GUESS : played or not – 0.9 vs. 0.1 – Not accepted 0.8 random hmmtrain (seq, TRANS_GUESS, EMIS_GUESS) • seq – Source – Output of band-pass filter • Hmmtrain will use algo. – BaumWelch : hmmdecode • Calculates the posterior state probabilities of a sequence of emissions – Viterbi : hmmviterbi hmmtrain • The results of models have big difference than the guess! • Can’t use the results to get the great states when running Viterbi algorithm. Future Works • Finish the 3rd version. • Modify the guess models to get the better result! THANK YOU Appendix 1 : O(nm2) • n stands for the number of observations • m is the number of possible states of an observation Appendix 2 : Reference • CSE551 Final Project: Parallel Viterbi on a GPU – Authors: Seong Jae Lee, Miro Enev – Provenance: Autumm 2009, University of Washington Appendix 2 : CSE551 Final Project : Parallel Viterbi on a GPU Appendix 2 : CSE551 Final Project : Parallel Viterbi on a GPU Appendix 3 : Auto-generated Probability Models • Random + constraint – tmp = (float)rand() / (float)RAND_MAX; – prob = (tmp <= constraint) ? 0 : tmp; • Guarantee probability of each row equals 1. • Verify the sequence conformed to the models. – hmmestimate(seq, states) Appendix 3 : Auto-generated Probability Models • Viterbi algorithm – when back tracing the likely states, avoid to save the 0 state • (rand() % N) + 1