隐马尔科夫模型c#语言算法实现,HMM学习最佳范例四:隐马尔科夫模型
四、隱馬爾科夫模型(Hidden Markov Models)
1、定義(Definition of a hidden Markov model)
一個(gè)隱馬爾科夫模型是一個(gè)三元組(pi, A, B)。
:初始化概率向量;
:狀態(tài)轉(zhuǎn)移矩陣;
:混淆矩陣;
在狀態(tài)轉(zhuǎn)移矩陣及混淆矩陣中的每一個(gè)概率都是時(shí)間無關(guān)的——也就是說,當(dāng)系統(tǒng)演化時(shí)這些矩陣并不隨時(shí)間改變。實(shí)際上,這是馬爾科夫模型關(guān)于真實(shí)世界最不現(xiàn)實(shí)的一個(gè)假設(shè)。
2、應(yīng)用(Uses associated with HMMs)
一旦一個(gè)系統(tǒng)可以作為HMM被描述,就可以用來解決三個(gè)基本問題。其中前兩個(gè)是模式識(shí)別的問題:給定HMM求一個(gè)觀察序列的概率(評(píng)估);搜索最有可能生成一個(gè)觀察序列的隱藏狀態(tài)序列(解碼)。第三個(gè)問題是給定觀察序列生成一個(gè)HMM(學(xué)習(xí))。
a) 評(píng)估(Evaluation)
考慮這樣的問題,我們有一些描述不同系統(tǒng)的隱馬爾科夫模型(也就是一些( pi,A,B)三元組的集合)及一個(gè)觀察序列。我們想知道哪一個(gè)HMM最有可能產(chǎn)生了這個(gè)給定的觀察序列。例如,對(duì)于海藻來說,我們也許會(huì)有一個(gè)“夏季”模型和一個(gè)“冬季”模型,因?yàn)椴煌竟?jié)之間的情況是不同的——我們也許想根據(jù)海藻濕度的觀察序列來確定當(dāng)前的季節(jié)。
我們使用前向算法(forward algorithm)來計(jì)算給定隱馬爾科夫模型(HMM)后的一個(gè)觀察序列的概率,并因此選擇最合適的隱馬爾科夫模型(HMM)。
在語音識(shí)別中這種類型的問題發(fā)生在當(dāng)一大堆數(shù)目的馬爾科夫模型被使用,并且每一個(gè)模型都對(duì)一個(gè)特殊的單詞進(jìn)行建模時(shí)。一個(gè)觀察序列從一個(gè)發(fā)音單詞中形成,并且通過尋找對(duì)于此觀察序列最有可能的隱馬爾科夫模型(HMM)識(shí)別這個(gè)單詞。
b) 解碼( Decoding)
給定觀察序列搜索最可能的隱藏狀態(tài)序列。
另一個(gè)相關(guān)問題,也是最感興趣的一個(gè),就是搜索生成輸出序列的隱藏狀態(tài)序列。在許多情況下我們對(duì)于模型中的隱藏狀態(tài)更感興趣,因?yàn)樗鼈兇砹艘恍└袃r(jià)值的東西,而這些東西通常不能直接觀察到。
考慮海藻和天氣這個(gè)例子,一個(gè)盲人隱士只能感覺到海藻的狀態(tài),但是他更想知道天氣的情況,天氣狀態(tài)在這里就是隱藏狀態(tài)。
我們使用Viterbi 算法(Viterbi algorithm)確定(搜索)已知觀察序列及HMM下最可能的隱藏狀態(tài)序列。
Viterbi算法(Viterbi algorithm)的另一廣泛應(yīng)用是自然語言處理中的詞性標(biāo)注。在詞性標(biāo)注中,句子中的單詞是觀察狀態(tài),詞性(語法類別)是隱藏狀態(tài)(注意對(duì)于許多單詞,如wind,fish擁有不止一個(gè)詞性)。對(duì)于每句話中的單詞,通過搜索其最可能的隱藏狀態(tài),我們就可以在給定的上下文中找到每個(gè)單詞最可能的詞性標(biāo)注。
C)學(xué)習(xí)(Learning)
根據(jù)觀察序列生成隱馬爾科夫模型。
第三個(gè)問題,也是與HMM相關(guān)的問題中最難的,根據(jù)一個(gè)觀察序列(來自于已知的集合),以及與其有關(guān)的一個(gè)隱藏狀態(tài)集,估計(jì)一個(gè)最合適的隱馬爾科夫模型(HMM),也就是確定對(duì)已知序列描述的最合適的(pi,A,B)三元組。
當(dāng)矩陣A和B不能夠直接被(估計(jì))測(cè)量時(shí),前向-后向算法(forward-backward algorithm)被用來進(jìn)行學(xué)習(xí)(參數(shù)估計(jì)),這也是實(shí)際應(yīng)用中常見的情況。
3、總結(jié)(Summary)
由一個(gè)向量和兩個(gè)矩陣(pi,A,B)描述的隱馬爾科夫模型對(duì)于實(shí)際系統(tǒng)有著巨大的價(jià)值,雖然經(jīng)常只是一種近似,但它們卻是經(jīng)得起分析的。隱馬爾科夫模型通常解決的問題包括:
1. 對(duì)于一個(gè)觀察序列匹配最可能的系統(tǒng)——評(píng)估,使用前向算法(forward algorithm)解決;
2. 對(duì)于已生成的一個(gè)觀察序列,確定最可能的隱藏狀態(tài)序列——解碼,使用Viterbi 算法(Viterbi algorithm)解決;
3. 對(duì)于已生成的觀察序列,決定最可能的模型參數(shù)——學(xué)習(xí),使用前向-后向算法(forward-backward algorithm)解決。
未完待續(xù):前向算法1
總結(jié)
以上是生活随笔為你收集整理的隐马尔科夫模型c#语言算法实现,HMM学习最佳范例四:隐马尔科夫模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hcnp笔记
- 下一篇: “ 食物链 “ 顶端的 《应用层》原理总