Accelerating Viterbi Algorithm

Preview:

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Accelerating Viterbi Algorithm

20120814Pei-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.

• HiddenMarkovModel

Example O = Walk->Walk->Shop->Clean

Example O = Walk->Walk->Shop->Clean

Example O = Walk->Walk->Shop->Clean

Example O = Walk->Walk->Shop->Clean

ExampleO = Walk->Walk->Shop->CleanS = 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 0.8– Others random

• EMIS_GUESS : played or not– 0.9 vs. 0.1– Not accepted

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

Recommended