隱馬爾可夫模型 是統(tǒng)計(jì)模型承桥,它用來(lái)描述一個(gè)含有隱含未知參數(shù)的馬爾可夫過(guò)程。其難點(diǎn)是從可觀察的參數(shù)中確定該過(guò)程的隱含參數(shù)。然后利用這些參數(shù)來(lái)作進(jìn)一步的分析部宿,例如模式識(shí)別。 更多見(jiàn) iii.run
HMM模型
馬爾科夫性質(zhì)
-
公式
s和t 是兩個(gè)時(shí)刻瓢湃,不同時(shí)間下發(fā)生的條件概率是相同的理张。
或者說(shuō):
已知當(dāng)前狀態(tài)情況下,過(guò)去事件與未來(lái)相互獨(dú)立箱季。簡(jiǎn)言之:
隨機(jī)過(guò)程中某時(shí)間的發(fā)生只取決于它的上一時(shí)間涯穷,是無(wú)記憶的過(guò)程。
馬爾可夫過(guò)程
具有了馬爾科夫性質(zhì)的隨機(jī)過(guò)程藏雏,具有不可記憶性拷况。
隱馬爾科夫模型
隱馬爾可夫模型(Hidden Markov Model作煌,HMM)是關(guān)于時(shí)序的概率模型,描述由一個(gè)隱藏的馬爾可夫鏈隨機(jī)生成不可觀測(cè)的狀態(tài)隨機(jī)序列赚瘦,再由各個(gè)狀態(tài)生成一個(gè)觀測(cè)而產(chǎn)生觀測(cè)隨機(jī)序列的過(guò)程粟誓。
隱藏的馬爾可夫鏈隨機(jī)生成的狀態(tài)的序列,稱為狀態(tài)序列(state sequence);每個(gè)狀態(tài)生成一個(gè)觀測(cè)起意,而由此產(chǎn)生的觀測(cè)的隨機(jī)序列鹰服,稱為觀測(cè)序列(observation sequence)。
序列的每一個(gè)位置又可以看作是一個(gè)時(shí)刻揽咕。
使用場(chǎng)景
使用HMM模型時(shí)我們的問(wèn)題一般有這兩個(gè)特征:
1)我們的問(wèn)題是基于序列的悲酷,比如時(shí)間序列,或者狀態(tài)序列亲善。
2)我們的問(wèn)題中有兩類數(shù)據(jù)设易,一類序列數(shù)據(jù)是可以觀測(cè)到的,即觀測(cè)序列蛹头;而另一類數(shù)據(jù)是不能觀察到的顿肺,即隱藏狀態(tài)序列,簡(jiǎn)稱狀態(tài)序列渣蜗。
舉個(gè)兩個(gè)例子:
1屠尊、NLP問(wèn)題
2、視頻識(shí)別
定義
首先我們假設(shè)Q是所有可能的隱藏狀態(tài)的集合耕拷,V是所有可能的觀測(cè)狀態(tài)的集合(類型讼昆,比如分詞的時(shí)候,就有BIES這四個(gè))斑胜,即:
Q = \{q_1,q_2,...,q_N\}, \; V =\{v_1,v_2,...v_M\}
其中控淡,N是可能的隱藏狀態(tài)數(shù),M是所有的可能的觀察狀態(tài)數(shù)止潘。
對(duì)于一個(gè)長(zhǎng)度為T(mén)的序列掺炭,I對(duì)應(yīng)的狀態(tài)序列, O是對(duì)應(yīng)的觀察序列,即:
I = \{i_1,i_2,...,i_T\}, \; O =\{o_1,o_2,...o_T\}
其中凭戴,任意一個(gè)隱藏狀態(tài) i_t \in Q ,任意一個(gè)觀察狀態(tài) o_t \in V
HMM模型做了兩個(gè)很重要的假設(shè)如下:
齊次馬爾科夫鏈假設(shè)
即任意時(shí)刻的隱藏狀態(tài)只依賴于它前一個(gè)隱藏狀態(tài)涧狮,也就是狀態(tài)轉(zhuǎn)移的時(shí)候只考慮前邊一個(gè)時(shí)刻的隱藏狀態(tài)。
pint:大多數(shù)情況下么夫,這樣做都是不那么準(zhǔn)確的者冤。但是這樣做比較簡(jiǎn)單,也許分詞模型進(jìn)一步的優(yōu)化方向可以考慮修改模型中的這個(gè)假設(shè)档痪。
這里順便說(shuō)一下狀態(tài)轉(zhuǎn)移矩陣涉枫,假定時(shí)刻t的隱藏狀態(tài)是 i_t= q_i,在時(shí)刻t+1的隱藏狀態(tài)是 i_{t+1}= q_j腐螟,那么從t時(shí)刻到t+1時(shí)刻的狀態(tài)轉(zhuǎn)移概率可以表示為:
a_{ij} = P(i_{t+1} = q_j | i_t= q_i)
t一般來(lái)說(shuō)會(huì)有連續(xù)的多個(gè)時(shí)間點(diǎn)愿汰,將對(duì)應(yīng)的{s_{ij}}組合起來(lái)困后,就可以獲得馬爾科夫鏈的狀態(tài)轉(zhuǎn)移矩陣A
A=\Big [a_{ij}\Big ]_{N \times N}
觀察獨(dú)立性假設(shè)
即任意時(shí)刻的觀察狀態(tài)只僅僅依賴于當(dāng)前時(shí)刻的隱藏狀態(tài),換句話說(shuō)衬廷,當(dāng)前時(shí)刻的觀察狀態(tài)僅依賴于當(dāng)前的隱藏狀態(tài)摇予。
如果在時(shí)刻t的隱藏狀態(tài)是i_t=q_j, 而對(duì)應(yīng)的觀察狀態(tài)為o_t=v_k, 則該時(shí)刻觀察狀態(tài)v_k在隱藏狀態(tài)q_j下生成的概率為b_j(k),滿足:
b_j(k) = P(o_t = v_k | i_t= q_j)
這樣b_j(k)可以組成觀測(cè)狀態(tài)生成的概率矩陣B:
B = \Big [b_j(k) \Big ]_{N \times M}
即:隱藏狀態(tài) -> 觀測(cè)狀態(tài)的概率矩陣
隱藏狀態(tài)初始概率
即在 t = 1時(shí)刻,隱藏狀態(tài)概率分布
\Pi = \Big [ \pi(i)\Big ]_N \; 其中 \;\pi(i) = P(i_1 = q_i)
小結(jié)
一個(gè)完整HMM模型吗跋,由三部分組成侧戴。
- 狀態(tài)轉(zhuǎn)移方程 A
- 觀察概率矩陣
- 初始狀態(tài)\Pi
找了一張圖來(lái)幫助理解
不過(guò)到了現(xiàn)實(shí)情況時(shí)就會(huì)發(fā)現(xiàn),人生吶跌宛。酗宋。。
HMM模型例子
維特比算法 里邊的例子就是一個(gè)HMM模型疆拘,本質(zhì)上是一個(gè)動(dòng)態(tài)規(guī)劃BP問(wèn)題本缠。
狀態(tài)轉(zhuǎn)移矩陣?yán)?/h2>
維特比算法 里的 transition_probability
,就是這里的狀態(tài)轉(zhuǎn)移矩陣入问。
transition_probability = { # 狀態(tài)轉(zhuǎn)移概率
'健康': {'健康': 0.7, '發(fā)熱': 0.3},
'發(fā)熱': {'健康': 0.4, '發(fā)熱': 0.6},
}
觀測(cè)概率矩陣?yán)?/h2>
通俗的講,就是村民身體內(nèi)部的情況稀颁,醫(yī)生其實(shí)是不清楚的芬失。
但是醫(yī)生知道,如果用戶身體健康的情況下匾灶,感到發(fā)暈的概率可是很低哦棱烂。
emission_probability = { # 狀態(tài)->觀測(cè)的發(fā)散概率
'健康': {'正常': 0.5, '發(fā)冷': 0.4, '發(fā)暈': 0.1},
'發(fā)熱': {'正常': 0.1, '發(fā)冷': 0.3, '發(fā)暈': 0.6},
}
初始矩陣
start_probability = {'健康': 0.6, '發(fā)熱': 0.4} # 起始個(gè)狀態(tài)概率
看完維特比算法,再來(lái)看這張圖阶女,應(yīng)該就有點(diǎn)感覺(jué)了
HMM模型的三個(gè)基本問(wèn)題
評(píng)估觀察序列概率
即給定模型λ=(A,B,\Pi)和觀測(cè)序列O={o_1,o_2,...o_T}颊糜,計(jì)算在模型λ下觀測(cè)序列O#出現(xiàn)的概率P(O|λ)$。
這個(gè)問(wèn)題的求解需要用到前向后向算法秃踩。
模型參數(shù)學(xué)習(xí)問(wèn)題
即給定觀測(cè)序列O={o_1,o_2,...o_T}衬鱼,估計(jì)模型λ=(A,B,\Pi)的參數(shù),使該模型下觀測(cè)序列的條件概率P(O|λ)最大憔杨。
這個(gè)問(wèn)題的求解需要用到基于EM算法的鮑姆-韋爾奇算法鸟赫。
預(yù)測(cè)問(wèn)題,也稱為解碼問(wèn)題
即給定模型λ=(A,B,\Pi)和觀測(cè)序列O={o_1,o_2,...o_T}消别,求給定觀測(cè)序列條件下抛蚤,最可能出現(xiàn)的對(duì)應(yīng)的狀態(tài)序列。
這個(gè)問(wèn)題的求解需要用到基于動(dòng)態(tài)規(guī)劃的維特比算法寻狂,最常見(jiàn)的一個(gè)用途了岁经,請(qǐng)參考維特比算法部分。
總結(jié)
模型總體來(lái)說(shuō)還是比較簡(jiǎn)單的蛇券,只是一開(kāi)始看到一大堆公式有點(diǎn)懵逼缀壤,不過(guò)可以先看維特比算法部分樊拓,看懂了之后再回過(guò)頭看這里。