天天看點

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++版:

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。