After many months of studying both Hidden Markov Models and CUDA, I’ve created a collection of C and CUDA files that implement 3 HMM algorithms:
- Forward-Only Algorithm (FO)
- Viterbi Algorithm (VIT)
- Baum-Welch Algorithm (BWA)
Together, these solve the main problems surrounding HMMs:
- Evaluation – How well does a model fit to an observed sequence?
- Decoding – What is the most likely sequence of states from an observed sequence?
- Training – Given a sequence of observations, what model will fit the best?
Cesar Souza has a fantastic posting on HMMs and a sample implementation in C#: http://crsouza.blogspot.com/2010/03/hidden-markov-models-in-c.html
Note that you will need a recent NVIDIA graphics card that can run CUDA and Linux.