1 簡(jiǎn)介
隱馬爾可夫模型(Hidden Markov Model)惋鸥,簡(jiǎn)稱HMM, 是一種基于概率統(tǒng)計(jì)的模型鸟废,是一種結(jié)構(gòu)最簡(jiǎn)單的動(dòng)態(tài)貝葉斯網(wǎng)猜敢,是一種重要的有向圖模型。它用來描述一個(gè)含有隱含未知參數(shù)的馬爾可夫過程(Markov Process)盒延。其難點(diǎn)是從可觀察參數(shù)中確定該過程的隱參數(shù)锣枝,然后利用這些參數(shù)來作進(jìn)一步的分析。
自上世紀(jì)80年代發(fā)展起來兰英,隱馬爾科夫模型是比較經(jīng)典的機(jī)器學(xué)習(xí)模型了撇叁,它在語(yǔ)音識(shí)別、文字識(shí)別畦贸、自然語(yǔ)言處理陨闹、模式識(shí)別等領(lǐng)域得到廣泛的應(yīng)用。當(dāng)然薄坏,隨著深度學(xué)習(xí)的崛起(RNN趋厉,LSTM等神經(jīng)網(wǎng)絡(luò)序列模型),HMM的地位有所下降胶坠。但是作為一個(gè)經(jīng)典的模型君账,學(xué)習(xí)HMM的模型和對(duì)應(yīng)算法,對(duì)我們解決問題建模的能力提高以及算法思路的拓展還是很好的沈善。
1.1 馬爾可夫過程(Markov Process)
馬爾可夫過程 (Markov Process)乡数,它因俄羅斯數(shù)學(xué)家安德烈·馬爾可夫而得名椭蹄,代表數(shù)學(xué)中具有馬爾可夫性質(zhì)的離散隨機(jī)過程。它的原始模型馬爾可夫鏈净赴,由安德烈·馬爾可夫于1907年提出绳矩。
隨機(jī)過程中,每個(gè)狀態(tài)的轉(zhuǎn)移只依賴于之前的 n 個(gè)狀態(tài)玖翅,這個(gè)過程被稱為1個(gè) n 階的模型翼馆,其中 n 是影響轉(zhuǎn)移狀態(tài)的數(shù)目。最簡(jiǎn)單的馬爾科夫過程就是一階過程金度,每一個(gè)狀態(tài)的轉(zhuǎn)移只依賴于其之前的那一個(gè)狀態(tài)应媚。注意這和確定性系統(tǒng)不一樣,因?yàn)檫@種轉(zhuǎn)移是有概率的猜极,而不是確定性的中姜。
X1, … , Xn,每個(gè)狀態(tài)值取決于前面有限個(gè)狀態(tài)魔吐。如果 Xn+1 對(duì)于過去狀態(tài)的條件概率分布僅是 Xn 的一個(gè)函數(shù)扎筒,則
通俗的說就是酬姆,隨機(jī)過程中某一時(shí)刻的狀態(tài),只與它前一時(shí)刻的狀態(tài)有關(guān)奥溺,以上就是馬爾科夫性質(zhì)辞色。我們知道自然世界中的很多現(xiàn)象都不符合這一性質(zhì),但是我們可以假設(shè)其具有馬爾科夫性質(zhì)浮定,這為原來很多無章可循的問題提供了一種解法相满。?
如果某一隨機(jī)過程滿足馬爾科夫性質(zhì),則稱這一過程為馬爾科夫過程桦卒,或稱馬爾科夫鏈立美。
馬爾可夫鏈(Markov Chain),描述了一種狀態(tài)序列方灾,其每個(gè)狀態(tài)值取決于前面有限個(gè)狀態(tài)建蹄。馬爾可夫鏈?zhǔn)蔷哂旭R爾可夫性質(zhì)的隨機(jī)變量的一個(gè)數(shù)列。這些變量的范圍裕偿,即它們所有可能取值的集合洞慎,被稱為“狀態(tài)空間”,而?Xn 的值則是在時(shí)間 n 的狀態(tài)嘿棘。
在馬爾科夫鏈中劲腿,每一個(gè)圓圈代表相應(yīng)時(shí)刻的狀態(tài),有向邊代表了可能的狀態(tài)轉(zhuǎn)移鸟妙,權(quán)值表示狀態(tài)轉(zhuǎn)移概率焦人。?
1.2 HMM中的隱
這里“隱”指的是馬爾科夫鏈中任意時(shí)刻的狀態(tài)變量是不可見的挥吵,也就是說狀態(tài)序列S0,S1,...,St無法直接觀測(cè)到。但是HMM中每時(shí)刻有一個(gè)可見的觀測(cè)值Ot與之對(duì)應(yīng)垃瞧,而且Ot有且僅于當(dāng)前時(shí)刻隱狀態(tài)St有關(guān)蔫劣,St外化表現(xiàn)為Ot的概率稱為輸出概率,因此隱馬爾科夫模型的結(jié)構(gòu)圖如下所示个从。
因此,隱馬爾科夫模型中馬爾科夫鏈指的是隱狀態(tài)S0,S1,...,St序列脉幢。
2 HMM模型五元組
HMM模型可以用五元組(O,S,A,B,π)表示。其中
O:{o0,o1,...,0n}表示觀測(cè)序列嗦锐,是系統(tǒng)的外在可觀測(cè)變量嫌松。
S:{s0,s1,...,sn}表示隱狀態(tài)序列,是導(dǎo)致系統(tǒng)外在表現(xiàn)變化的內(nèi)因奕污。
A:{aij=p(sj|si)}表示狀態(tài)轉(zhuǎn)移概率萎羔。 ?這個(gè)概率 表明了隱狀態(tài)從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的概率。
B:{bij=p(oj|si)}表示輸出概率碳默。 這個(gè)概率表明了從某種隱變量到可觀測(cè)值的概率贾陷。
π :{ π 0,π1,...,πm},表示初始狀態(tài)概率分布嘱根。
3 HMM
模型的三個(gè)基本問題
根據(jù)以上HMM模型五元組表示髓废,我們可以歸納出HMM模型解決的三個(gè)經(jīng)典的問題。?
1)?評(píng)估觀察序列概率该抒。即給定模型λ=(A,B,π)和O={o1,o2,...on}(狀態(tài)轉(zhuǎn)移矩陣A慌洪,輸出矩陣B,和觀測(cè)序列O這些已知)凑保,計(jì)算在模型λ下觀測(cè)序列O出現(xiàn)的概率P(O|λ)冈爹。這個(gè)問題的求解需要用到前向后向(forward/Backward?)算法,這個(gè)問題是HMM模型三個(gè)問題中最簡(jiǎn)單的欧引。
這就是評(píng)估問題频伤,最顯而易見的一個(gè)應(yīng)用就是異常檢測(cè),如果一個(gè)多次HMM模型實(shí)驗(yàn)的結(jié)果都顯示觀測(cè)序列出現(xiàn)的概率較小芝此,說明觀測(cè)序列和模型不太吻合憋肖,則可以斷定系統(tǒng)可能出現(xiàn)了異常。該問題最簡(jiǎn)單粗暴的解法就是直接組合出所有的可能隱藏狀態(tài)序列癌蓖,然后求出每個(gè)隱藏狀態(tài)序列導(dǎo)致觀測(cè)序列發(fā)生的概率瞬哼,最后將概率求和即是最終結(jié)果。但是列舉出所有可能的狀態(tài)序列是一個(gè)指數(shù)爆炸增長(zhǎng)的問題租副,在實(shí)際系統(tǒng)中不太可能實(shí)現(xiàn)坐慰。因此有人提出了forward/Backward 算法。?
2)預(yù)測(cè)問題,也稱為解碼問題结胀。即給定模型λ=(A,B, π )和O={o1,o2,...on} (狀態(tài)轉(zhuǎn)移矩陣A赞咙,輸出矩陣B,和觀測(cè)序列O這些已知) 糟港,求最有可能產(chǎn)生該觀測(cè)序列的隱藏狀態(tài)序列攀操,這個(gè)問題的求解需要用到基于動(dòng)態(tài)規(guī)劃的維特比算法。這個(gè)問題是HMM模型三個(gè)問題中復(fù)雜度居中的算法秸抚。
這個(gè)問題通常被稱作解碼問題速和,該問題通常也被稱作“由果溯因”。隱狀態(tài)通常是導(dǎo)致系統(tǒng)外在表現(xiàn)變化的“內(nèi)因”剥汤,觀測(cè)序列只是隱狀態(tài)變化帶來的“結(jié)果”颠放。最常見的應(yīng)用就是語(yǔ)音識(shí)別,即將某一段語(yǔ)音轉(zhuǎn)化成對(duì)應(yīng)的文字序列吭敢。解決該問題也可以采用同問題一類似的枚舉法碰凶,只需要將所有可能序列的概率求和改為找最大概率對(duì)應(yīng)序列即可,但同樣效率不高鹿驼。因此解決此類問題常用Viterbi算法欲低。
3)模型參數(shù)學(xué)習(xí)問題。即給定觀測(cè)序列O={o1,o2,...on}畜晰,估計(jì)模型λ=(A,B, π )的參數(shù)砾莱,使該模型下觀測(cè)序列的條件概率P(O|λ)最大。這個(gè)問題的求解需要用到基于EM算法的鮑姆-韋爾奇算法舷蟀。這個(gè)問題是HMM模型三個(gè)問題中最復(fù)雜的恤磷。
已知僅僅是很多觀測(cè)序列面哼,估計(jì)HMM模型的參數(shù)的可能取值野宜。這個(gè)問題被稱作學(xué)習(xí)問題,通過大量的樣本數(shù)據(jù)去學(xué)習(xí)最優(yōu)的模型參數(shù)魔策,該問題的求解比較復(fù)雜匈子,常采用Baum-Welch算法。
4 參考
如何用簡(jiǎn)單易懂的例子解釋隱馬爾可夫模型闯袒? https://www.zhihu.com/question/20962240