隱馬爾科夫模型HMM

隱馬爾可夫模型 是統(tǒng)計(jì)模型,它用來描述一個(gè)含有隱含未知參數(shù)的馬爾可夫過程。其難點(diǎn)是從可觀察的參數(shù)中確定該過程的隱含參數(shù)。然后利用這些參數(shù)來作進(jìn)一步的分析,例如模式識(shí)別。 更多見 iii.run

HMM模型

馬爾科夫性質(zhì)

  • 公式
    s和t 是兩個(gè)時(shí)刻,不同時(shí)間下發(fā)生的條件概率是相同的。


    08880-j2evkrjnnxd.png
  • 或者說:
    已知當(dāng)前狀態(tài)情況下,過去事件與未來相互獨(dú)立。

  • 簡言之:
    隨機(jī)過程中某時(shí)間的發(fā)生只取決于它的上一時(shí)間,是無記憶的過程。

馬爾可夫過程

具有了馬爾科夫性質(zhì)的隨機(jī)過程,具有不可記憶性

隱馬爾科夫模型

隱馬爾可夫模型(Hidden Markov Model,HMM)是關(guān)于時(shí)序的概率模型,描述由一個(gè)隱藏的馬爾可夫鏈隨機(jī)生成不可觀測的狀態(tài)隨機(jī)序列,再由各個(gè)狀態(tài)生成一個(gè)觀測而產(chǎn)生觀測隨機(jī)序列的過程。

隱藏的馬爾可夫鏈隨機(jī)生成的狀態(tài)的序列,稱為狀態(tài)序列(state sequence);每個(gè)狀態(tài)生成一個(gè)觀測,而由此產(chǎn)生的觀測的隨機(jī)序列,稱為觀測序列(observation sequence)。

序列的每一個(gè)位置又可以看作是一個(gè)時(shí)刻。

使用場景

使用HMM模型時(shí)我們的問題一般有這兩個(gè)特征:
1)我們的問題是基于序列的,比如時(shí)間序列,或者狀態(tài)序列。
2)我們的問題中有兩類數(shù)據(jù),一類序列數(shù)據(jù)是可以觀測到的,即觀測序列;而另一類數(shù)據(jù)是不能觀察到的,即隱藏狀態(tài)序列,簡稱狀態(tài)序列。

舉個(gè)兩個(gè)例子:
1、NLP問題
2、視頻識(shí)別

定義

首先我們假設(shè)Q是所有可能的隱藏狀態(tài)的集合,V是所有可能的觀測狀態(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ù)。

對于一個(gè)長度為T的序列,I對應(yīng)的狀態(tài)序列, O是對應(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)確的。但是這樣做比較簡單,也許分詞模型進(jìn)一步的優(yōu)化方向可以考慮修改模型中的這個(gè)假設(shè)。

這里順便說一下狀態(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一般來說會(huì)有連續(xù)的多個(gè)時(shí)間點(diǎn),將對應(yīng)的{s_{ij}}組合起來,就可以獲得馬爾科夫鏈的狀態(tài)轉(zhuǎn)移矩陣A
A=\Big [a_{ij}\Big ]_{N \times N}

觀察獨(dú)立性假設(shè)

即任意時(shí)刻的觀察狀態(tài)只僅僅依賴于當(dāng)前時(shí)刻的隱藏狀態(tài),換句話說,當(dāng)前時(shí)刻的觀察狀態(tài)僅依賴于當(dāng)前的隱藏狀態(tài)。

如果在時(shí)刻t的隱藏狀態(tài)是i_t=q_j, 而對應(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)可以組成觀測狀態(tài)生成的概率矩陣B:
B = \Big [b_j(k) \Big ]_{N \times M}

即:隱藏狀態(tài) -> 觀測狀態(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

找了一張圖來幫助理解

53455-r5a0wcy2ni.png

不過到了現(xiàn)實(shí)情況時(shí)就會(huì)發(fā)現(xiàn),人生吶。。。

HMM模型例子

維特比算法 里邊的例子就是一個(gè)HMM模型,本質(zhì)上是一個(gè)動(dòng)態(tài)規(guī)劃BP問題。

狀態(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},
}

觀測概率矩陣?yán)?/h2>

通俗的講,就是村民身體內(nèi)部的情況,醫(yī)生其實(shí)是不清楚的。

但是醫(yī)生知道,如果用戶身體健康的情況下,感到發(fā)暈的概率可是很低哦。

emission_probability = { # 狀態(tài)->觀測的發(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)概率

看完維特比算法,再來看這張圖,應(yīng)該就有點(diǎn)感覺了


96525-eelw9ogd9ug.png

HMM模型的三個(gè)基本問題

評估觀察序列概率

即給定模型λ=(A,B,\Pi)和觀測序列O={o_1,o_2,...o_T},計(jì)算在模型λ下觀測序列O#出現(xiàn)的概率P(O|λ)$。

這個(gè)問題的求解需要用到前向后向算法。

模型參數(shù)學(xué)習(xí)問題

即給定觀測序列O={o_1,o_2,...o_T},估計(jì)模型λ=(A,B,\Pi)的參數(shù),使該模型下觀測序列的條件概率P(O|λ)最大。

這個(gè)問題的求解需要用到基于EM算法的鮑姆-韋爾奇算法。

預(yù)測問題,也稱為解碼問題

即給定模型λ=(A,B,\Pi)和觀測序列O={o_1,o_2,...o_T},求給定觀測序列條件下,最可能出現(xiàn)的對應(yīng)的狀態(tài)序列。

這個(gè)問題的求解需要用到基于動(dòng)態(tài)規(guī)劃的維特比算法,最常見的一個(gè)用途了,請參考維特比算法部分。

總結(jié)

模型總體來說還是比較簡單的,只是一開始看到一大堆公式有點(diǎn)懵逼,不過可以先看維特比算法部分,看懂了之后再回過頭看這里。

參考鏈接:

隱馬爾可夫模型wiki
隱馬爾科夫模型HMM

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容