天天看点

HMM的介绍及实现

hmm基本原理

hmm的定义:

HMM的介绍及实现

hmm实际上是分为两个部分的,一是马尔可夫链,由参数,a描述,它利用一组与概率分布相联系的状态转移的统计对应关系,来描述每个短时平稳段是如何转变到下一个短时平稳段的,这个过程产生的输出为状态序列;二是一个随机过程,描述状态与观察值之间的统计关系,用观察到的序列来描述隐含的状态,由b描述,其产生的输出为观察值序列。

hmm根据其结构的不同可以分为多种类型。根据状态转移概率矩阵的不同,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++版:

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。