hmm基本原理
hmm的定义:

hmm实际上是分为两个部分的,一是马尔可夫链,由参数,a描述,它利用一组与概率分布相联系的状态转移的统计对应关系,来描述每个短时平稳段是如何转变到下一个短时平稳段的,这个过程产生的输出为状态序列;二是一个随机过程,描述状态与观察值之间的统计关系,用观察到的序列来描述隐含的状态,由b描述,其产生的输出为观察值序列。
hmm根据其结构的不同可以分为多种类型。根据状态转移概率矩阵的不同,hmm可分为各态遍历模型、从左到右模型、并行路径从左到右模型和无跳转从左到右模型等。根据观察值概率不同,hmm可分为离散hmm、半连续hmm、连续hmm等。
下图是一个典型的hmm:
hmm有三个典型的问题:
hmm的实现
c语言版:
1、 htk(hidden markov model toolkit):
htk是英国剑桥大学开发的一套基于c语言的隐马尔科夫模型工具箱,主要应用于语音识别、语音合成的研究,也被用在其他领域,如字符识别和dna排序等。htk是重量级的hmm版本。
2、 ghmm library:
the general hidden markov model library (ghmm) is a freely available lgpl-ed c library implementing efficient data structures and algorithms for basic and extended hmms.
3、 umdhmm(hidden markov model toolkit):
hidden markov model (hmm) software: implementation of forward-backward, viterbi, and baum-welch algorithms.
这款属于轻量级的c语言hmm版本。
c++版:
以上两个是c++版本的,但是实现的是离散型的hmm。
java版:
jahmm java library (general-purpose java library):
jahmm (pronounced “jam”), is a java implementation of hidden markov model (hmm) related algorithms. it’s been designed to be easy to use (e.g. simple things are simple to program) and general purpose.
python版:
malab版:
hidden markov model (hmm) toolbox for matlab:this toolbox supports inference and learning for hmms with discrete outputs (dhmm’s),
gaussian outputs (ghmm’s), or mixtures of gaussians output (mhmm’s).
common lisp版:
cl-hmm library (hmm library for common lisp):
simple hidden markov model library for ansi common lisp. main structures and basic algorithms implemented. performance speed comparable to c code. it’s licensed under lgpl.
haskell版:
the hmm package (a haskell library for working with hidden markov models):a simple library for working with hidden markov models. should be usable even by people who are not familiar with hmms. includes implementations of viterbi’s algorithm and the forward algorithm.
cdhmm c++版:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。