2010年5月19日 星期三

Hidden Markov Models with matlab



PSTATES = hmmdecode( o_seq, TRANS, EMIS):給定observed sequence, 用來計算conditional probabilities在state k at step i .

TRANS( i, j )
:由 state i 至 state j 的轉換機率 .

EMIS( k, sym_seq ):symbol sequence 在 state k 發生的機率.

PSTATES:是個矩陣跟 seq 的大小一樣, 第 ( i, j )th element 代表在model中 state i at jth step 的機率 .

[ PSTATES, logpseq ] = hmmdecode(...):回傳對數的 probability sequence, logseq .

[ PSTATES, logpseq, FORWARD, BACKWARD,S ] = hmmdecode(...):給定 scaled s, 回傳 forward 和 backward 的 sequence 機率 .

hmmdecode( o_seq, TRANS, EMIS ,'Symbols', SYMBOLS):定義有哪些 SYMBOLS , SYMBOLS可為陣列 .

=========================================



[seq,states] = hmmgenerate(len,TRANS,EMIS):用已知的transition probability TRANS, 與 symbol probability EMIS 並指定欲產生 sequence 的長度, 來造出一個 observed sequence with states .

hmmgenerate(...,'Symbols',SYMBOLS):定義有哪些 SYMBOLS , SYMBOLS可為陣列 .

hmmgenerate(...,'Statenames',STATENAMES):定義 states 的名稱 .

=========================================



[TRANS,EMIS] = hmmestimate( seq, states ):給定 sequence 和 states 算出 TRANS, EMIS 的maximum likelihood estimate .

hmmestimate(...,'Symbols',SYMBOLS):定義有哪些 SYMBOLS , SYMBOLS可為陣列 .

hmmestimate(...,'Statenames',STATENAMES):定義 states 的名稱 .

hmmestimate(...,'Pseudoemissions',PSEUDOE):用此參數來避免state內無symbol的機率, PSEUDOE 是個矩陣 size m-by-n , m為states數目, n為該state可能產生的symbol數.
如果在sequence中state i at k step的機率為0, 可設 PSEUDOE( i, k ) 指定在 state i at k step的機率 .

hmmestimate(...,'Pseudotransitions',PSEUDOTR):用此參數來避免state與state間的0轉換機率, PSEUDOTR 是個矩陣 size m-by-m , m為states數目 .
如果在sequence中從state i 至 state k 的機率為0, 可設 PSEUDOTR( i, j ) 指定從state i 至 state k 的機率 .

=========================================



STATES = hmmviterbi(seq,TRANS,EMIS):給定model參數TRANS, EMIS 和 observed sequence, 計算 most likely path.

=========================================



[ESTTR,ESTEMIT] = hmmtrain(seq,TRGUESS,EMITGUESS):用Baum-Welch algorithm估計transition和state emission probabilities. TRGUESS, EMITGUESS為我們猜測的transition 和 symbol probabilities matrix.
註: state emission probability為一個state可能產生的output狀態, 即為一個state所擁有的symbol數.

hmmtrain(...,'Algorithm',algorithm):定義要用哪種演算法來training data. 有 BaumWelch 和 Viterbi 兩種, 預設是 BaumWelch .

hmmtrain(...,'Tolerance',tol):定義容忍度,預設值為0.0001, 用來在估計過程中測試收斂.

hmmtrain(...,'Maxiterations',maxiter):定義在estimation過程中最大可以 iterate 的數目, 預設為 100.

hmmtrain(...,'Verbose',true):回傳status of algorithm at each iteration.

如果已知states與sequences的關係, 就用hmmestimate去估計 model 的參數.

沒有留言:

張貼留言