隐马尔可夫模型:HMM
隱馬爾可夫模型求解三大問(wèn)題實(shí)例剖析
HMM 模型如圖所示:
?
一、隱馬爾可夫模型定義
隱馬爾可夫模型由初始概率分布、狀態(tài)轉(zhuǎn)移概率分布以及觀(guān)測(cè)概率分布確定。
設(shè)?Q(圖中的q)是所有可能的狀態(tài)的集合,V(圖中的O) 是所有可能的觀(guān)測(cè)的集合。
?
其中,N為可能狀態(tài)數(shù),M為可能的觀(guān)測(cè)數(shù)。
I是長(zhǎng)度為T(mén)的隱藏狀態(tài)序列,O是對(duì)應(yīng)的觀(guān)測(cè)序列。
?
以下三個(gè)參數(shù)(A、B、π):
A是狀態(tài)轉(zhuǎn)移概率矩陣:
?
其中,
?
表示在時(shí)刻t處于狀態(tài)qi的條件下在時(shí)刻t+1轉(zhuǎn)移到狀態(tài)qj的概率。
B是觀(guān)測(cè)概率矩陣:
?
其中,
?
表示在時(shí)刻t處于狀態(tài)qj 的條件下生成觀(guān)測(cè)vk的概率。
π是初始狀態(tài)概率向量:就是由空狀態(tài)轉(zhuǎn)換為有狀態(tài)的一個(gè)概率
?
其中,
?
表示時(shí)刻t=1處于狀態(tài)qi的概率。
隱馬爾可夫模型由π、A、B決定。π和A決定狀態(tài)序列,B決定觀(guān)測(cè)序列。
隱馬爾可夫模型?λ=( A, B,π),A、B、π稱(chēng)為隱馬爾科夫模型的三要素。
隱馬爾可夫模型的兩個(gè)基本假設(shè):
(1)齊次馬爾可夫性假設(shè)
?
(2)觀(guān)測(cè)獨(dú)立性假設(shè)
?
?
二、隱馬爾可夫模型的三個(gè)基本問(wèn)題
問(wèn)題一:概率計(jì)算問(wèn)題:觀(guān)察序列的概率
給定模型λ=( A, B,π)和觀(guān)測(cè)序列
?
?。計(jì)算在模型λ下觀(guān)測(cè)序列O出現(xiàn)的概率P(O|λ)。
解決此問(wèn)題的方法為前向、后向算法。
?
問(wèn)題二:預(yù)測(cè)問(wèn)題:由觀(guān)察序列求隱藏序列
比如:HMM 寫(xiě)的拼音輸入法
也稱(chēng)為解碼問(wèn)題。已知模型λ=( A, B,π)和觀(guān)測(cè)序列
?
,求對(duì)給定觀(guān)測(cè)序列條件概率P(I|O)最大的狀態(tài)序列?。即給定觀(guān)測(cè)序列、
?
,求最有可能的對(duì)應(yīng)隱藏狀態(tài)序列
?
解決此問(wèn)題的方法為維特比算法。
?
問(wèn)題三:學(xué)習(xí)問(wèn)題:HMM參數(shù)估計(jì)
已知觀(guān)測(cè)序列
?
?,估計(jì)模型λ=( A, B,π)參數(shù),使得在該模型下觀(guān)測(cè)序列概率P(O|λ)最大。
當(dāng)同時(shí)給定觀(guān)測(cè)序列和對(duì)應(yīng)狀態(tài)序列時(shí),使用極大似然估計(jì)方法估計(jì)參數(shù)。
當(dāng)只給定觀(guān)測(cè)序列,沒(méi)有對(duì)應(yīng)狀態(tài)序列時(shí),基于EM算法進(jìn)行參數(shù)估計(jì)。(Baum-Welch算法)
?
三、隱馬爾可夫模型的實(shí)例
模型實(shí)例
假設(shè) S 是天氣狀況的集合,分別是“晴天”、"多云"、“下雨”,?
其初始概率分布為,
| 晴天 | 多云 | 下雨 |
| 0.63 | 0.17 | 0.20 |
其狀態(tài)轉(zhuǎn)移概率矩陣為:
| - | 晴 | 陰 | 雨 |
| 晴 | 0.500 | 0.375 | 0.125 |
| 陰 | 0.250 | 0.125 | 0.625 |
| 雨 | 0.250 | 0.375 | 0.325 |
假設(shè)有一位盲人住在海邊,他不能通過(guò)直接觀(guān)察天氣的狀態(tài)來(lái)預(yù)報(bào)天氣。但他有一些水藻,因此可以利用水藻的干濕來(lái)預(yù)報(bào)天氣。水藻的干濕與天氣狀況之間的關(guān)系如下表:
| - | 干燥 | 稍干 | 潮濕 | 濕透 |
| 晴 | 0.60 | 0.20 | 0.15 | 0.05 |
| 陰 | 0.25 | 0.25 | 0.25 | 0.25 |
| 雨 | 0.05 | 0.10 | 0.35 | 0.50 |
問(wèn)題1:求解觀(guān)察序列的概率
針對(duì)上述模型,我們求p(干燥,潮濕,濕透)。思路很簡(jiǎn)單:
?
?
這個(gè)時(shí)候再往下計(jì)算,方法就和第一步一樣了,不再羅嗦了。
?
問(wèn)題2:由觀(guān)察序列確定隱狀態(tài)序列
例如用HMM 算法來(lái)寫(xiě)中文輸入法
我們觀(guān)察到了“干燥、潮濕、濕透”,那么實(shí)際天氣變化的序列應(yīng)該是什么呢?會(huì)是憑直覺(jué)猜測(cè)的“晴、陰、雨”這個(gè)序列嗎??
解決這個(gè)問(wèn)題的關(guān)鍵是,如何計(jì)算p(晴陰雨|干燥 潮濕 濕透)?我畫(huà)了一張圖,只要把黑色路徑上標(biāo)注的初始概率、轉(zhuǎn)移概率、發(fā)射概率連乘起來(lái),就得到這條路經(jīng)的概率。?
?
ok,現(xiàn)在問(wèn)題變成了如何從開(kāi)始到結(jié)束找到一條概率最大的路徑。問(wèn)題轉(zhuǎn)化成了路徑最優(yōu)化問(wèn)題,可以用動(dòng)態(tài)規(guī)劃方法解決,我不想再啰嗦了,剩下的任務(wù)大家自行解決吧。
?
問(wèn)題3:HMM參數(shù)估計(jì)
假設(shè)隱馬爾可夫模型的觀(guān)測(cè)序列是“干燥,潮濕,濕透,…”,那么,隱馬爾可夫模型的參數(shù)A,B,π 如何設(shè)置,才能使這個(gè)觀(guān)測(cè)序列出現(xiàn)的概率最大?這就是所謂的隱馬爾可夫模型參數(shù)估計(jì)問(wèn)題。?
參照上圖,從起點(diǎn)到終點(diǎn)共計(jì)27條路徑,把這些路徑的概率全部加起來(lái),就是“干燥,潮濕,濕透”發(fā)生的概率。如果圖中箭頭隨對(duì)應(yīng)的概率全部為未知,可以想想,最終的結(jié)果就可以用這些參數(shù)表示。因此問(wèn)題可描述為,這些參數(shù)取何值時(shí),所求概率最大。?
上圖中的實(shí)例, 計(jì)算觀(guān)察序列的概率應(yīng)該不需要遍歷27條路徑,這樣復(fù)雜度太高了。這個(gè)問(wèn)題大家自行考慮吧。
轉(zhuǎn)移概率矩陣和發(fā)射概率矩陣在多個(gè)環(huán)節(jié)重復(fù)出現(xiàn),讓我聯(lián)想起卷積神經(jīng)網(wǎng)絡(luò)的卷積層設(shè)計(jì),扯得有點(diǎn)遠(yuǎn)。但是,這個(gè)概率網(wǎng)絡(luò)求解整體過(guò)程的確與神經(jīng)網(wǎng)絡(luò)類(lèi)似。?
一個(gè)不好的消息是,沒(méi)辦法用公式求解此最優(yōu)化問(wèn)題。一個(gè)稍好一點(diǎn)的消息是,可以用梯度下降法,求局部極小解,這簡(jiǎn)直是廢話(huà)。還有一個(gè)稍好點(diǎn)的消息,Baum-Welch算法可以解決此問(wèn)題,思路類(lèi)似EM算法,思路也很簡(jiǎn)單,
Baum-Welch算法
比如,先假設(shè)狀態(tài)序列為已知,參見(jiàn)下表。和EM算法套路一樣,可以看看《簡(jiǎn)析EM算法(最大期望算法)》。
| t | 觀(guān)察值 | 晴朗 | 多云 | 下雨 |
| 1 | 干燥 | 1 | 0 | 0 |
| 2 | 潮濕 | 0 | 1 | 0 |
| 3 | 濕透 | 1 | 0 | 0 |
| 4 | 潮濕 | 0 | 0 | 1 |
| 5 | 干燥 | 0 | 1 | 0 |
| 6 | 潮濕 | 1 | 0 | 0 |
| 7 | 濕透 | 0 | 0 | 1 |
| … | … | … | … | … |
?
狀態(tài)的出現(xiàn)次數(shù)為0或1,和EM算法是完全一樣的套路。如果出現(xiàn)100次"晴朗"?
,其中對(duì)應(yīng)70次“干燥”,則可以估計(jì)“晴朗”向“干燥”發(fā)射概率為70/100=0.7,如此類(lèi)推,可以求出模型中的所有概率值。?
現(xiàn)在的問(wèn)題是,狀態(tài)出現(xiàn)的次數(shù)是不知道的。依據(jù)EM算法思路,可以隨機(jī)給模型參數(shù)賦值(當(dāng)然要保證數(shù)據(jù)的合理性)。比如,根據(jù)“晴朗”、“陰天”、“下雨”向“干燥”的發(fā)射概率,把狀態(tài)出現(xiàn)次數(shù)1按比例分配給三個(gè)狀態(tài)。這樣就可以按照上面的方法重新計(jì)算模型的參數(shù)了。如此類(lèi)推,直到模型參數(shù)收斂為止。?
狀態(tài)轉(zhuǎn)移概率,也可以統(tǒng)計(jì)出來(lái)。比如從上表1、2兩行可以得到“晴天”到“多云”轉(zhuǎn)移累計(jì)計(jì)數(shù)1次。在EM算法中,這個(gè)計(jì)數(shù)可能變成了用小數(shù)表示的模糊計(jì)數(shù),不過(guò)沒(méi)關(guān)系,一樣可以得到這個(gè)累計(jì)計(jì)數(shù)。?
初始概率計(jì)算也是同樣道理,用模糊計(jì)數(shù)方法可以幫助估計(jì)概率分布。
?
?參考博客和書(shū)籍:
https://blog.csdn.net/quicmous/article/details/52208302
https://blog.csdn.net/lrs1353281004/article/details/79417225
《統(tǒng)計(jì)學(xué)習(xí)方法》李航
?
轉(zhuǎn)載于:https://www.cnblogs.com/lovychen/p/9760137.html
總結(jié)
以上是生活随笔為你收集整理的隐马尔可夫模型:HMM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [LeetCode]k个一组翻转链表(R
- 下一篇: px、em、rem、fr等前端单位介绍