隱馬爾科夫模型 HMM
本文我們介紹一個(gè)機(jī)器學(xué)習(xí)中常用的模型————隱馬爾科夫模型(Hidden Markov Model森爽,HMM)督函,后文我們簡(jiǎn)稱(chēng)為HMM嘀粱。HMM是一種概率圖模型,常用于對(duì)有序數(shù)據(jù)進(jìn)行處理辰狡。下面我們通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)理解下什么是HMM锋叨。
引子
假設(shè)你的鄰居家有個(gè)正在上小學(xué)的兒子,我們稱(chēng)之為小明吧宛篇,小明每天都在早上背上小書(shū)包去上學(xué)娃磺,然后到晚上的時(shí)候回家。假設(shè)我們現(xiàn)在對(duì)小明在學(xué)校里的表現(xiàn)很感興趣叫倍,認(rèn)為小明在學(xué)校里的狀態(tài)有三種偷卧,分別是被老師批評(píng)了,被老師表?yè)P(yáng)了吆倦,和既沒(méi)被表?yè)P(yáng)也沒(méi)被批評(píng)听诸,我們分別記為,,。
那么怎么能確定他在學(xué)校的狀態(tài)呢逼庞?最好的辦法就是去小明的學(xué)校盯著他。但是誰(shuí)吃飽了撐的有那個(gè)時(shí)間去盯他呢瞻赶?于是我們左思右想赛糟,想到一個(gè)好主意,小明如果被表?yè)P(yáng)砸逊,他應(yīng)該心情不錯(cuò)吧璧南,如果被批評(píng)了,他不開(kāi)心的概率可能更大一點(diǎn)师逸。所以我們可以在他放學(xué)回家時(shí)的心情來(lái)估計(jì)下他今天的表現(xiàn)司倚。但是凡事也有例外,比如他今天雖然被批評(píng)了,但是喜歡的小紅成為了他的鄰桌动知,那么他可能會(huì)忘掉老師帶來(lái)的不愉快皿伺,而因?yàn)樾〖t開(kāi)心的不得了。所以啊盒粮,我們只能說(shuō)被表?yè)P(yáng)的情況下鸵鸥,他開(kāi)心的可能性比較大,但也不會(huì)是1丹皱,而同樣妒穴,被批評(píng)的時(shí)候,不開(kāi)心概率比較大摊崭,但也不會(huì)是1讼油,而我們要是看到他今天平平淡淡地回家,那么他比較有可能是既沒(méi)被批評(píng)也沒(méi)被表?yè)P(yáng)呢簸。這里我們記我們觀測(cè)到他的心情好矮台、壞、一般分別為,,阔墩。那么假設(shè)我們觀察了一星期嘿架,觀測(cè)到他的心情序列為,啸箫,耸彪,,忘苛,蝉娜,,請(qǐng)問(wèn)小明同學(xué)這一星期在學(xué)習(xí)的狀態(tài)序列應(yīng)該是什么呢扎唾?
是不是感覺(jué)無(wú)從下手召川?是不是感覺(jué)這種又有看得見(jiàn)的變量(觀測(cè)值),又有看不見(jiàn)的變量(狀態(tài))胸遇,還有變量序列的問(wèn)題很變態(tài)很棘手荧呐?沒(méi)關(guān)系,在馬爾科夫大神和各位數(shù)據(jù)分析前輩的努力下纸镊,我們已經(jīng)有了解決這種問(wèn)題的數(shù)學(xué)工具啦倍阐!這就是我們今天要講的隱馬爾科夫模型。
隱馬爾科夫模型的基本定義
在《統(tǒng)計(jì)學(xué)習(xí)方法》一書(shū)中逗威,隱馬爾科夫模型用于描述這樣一個(gè)過(guò)程:
隱馬爾可夫模型是關(guān)于時(shí)序的概率模型峰搪,描述由一個(gè)隱藏的馬爾科夫鏈隨機(jī)生成不可觀測(cè)的狀態(tài)隨機(jī)序列,再由各個(gè)狀態(tài)生成一個(gè)觀測(cè)而產(chǎn)生觀測(cè)隨機(jī)序列的過(guò)程凯旭。
隱藏的馬爾科夫鏈隨機(jī)生成的不可觀測(cè)的狀態(tài)隨機(jī)序列概耻,就稱(chēng)為是狀態(tài)序列使套,而由狀態(tài)序列生成的觀測(cè)隨機(jī)序列為觀測(cè)序列。讀到這里鞠柄,讀者可能已經(jīng)意識(shí)到了侦高,如果要利用隱馬爾可夫模型,模型的狀態(tài)集合和觀測(cè)集合應(yīng)該事先給出春锋。隱馬爾科夫模型的形式定義如下:
- 狀態(tài)集合矫膨,為狀態(tài)數(shù)量。在上面的例子中期奔,
- 可能的觀測(cè)集合侧馅,為可能的觀測(cè)數(shù)量。在上面的例子中呐萌,
- 長(zhǎng)度為的狀態(tài)序列馁痴,對(duì)應(yīng)得觀測(cè)序列為。在上面的例子中肺孤,
- 狀態(tài)轉(zhuǎn)移矩陣罗晕,其中表示狀態(tài)轉(zhuǎn)變?yōu)闋顟B(tài)的概率。在上面的例子中赠堵,就是前一天小明的狀態(tài)對(duì)第二天小明的狀態(tài)的影響小渊,或者說(shuō)前一天老師對(duì)小明的態(tài)度,對(duì)后一天老師對(duì)小明的態(tài)度的影響茫叭。
- 觀測(cè)概率矩陣酬屉,,表示狀態(tài)產(chǎn)生觀測(cè)的概率揍愁。在上面的例子中,就是已知小明天的狀態(tài)莽囤,小明當(dāng)天的某種表現(xiàn)情緒的概率谬擦。
- 初始狀態(tài)概率分布,其中朽缎。在上面的例子中惨远,我們第一天觀察的時(shí)候,他的每個(gè)狀態(tài)的可能性话肖。
由定義可知北秽,在給定狀態(tài)集合和可能的觀測(cè)集合后,一個(gè)HMM模型可以由狀態(tài)轉(zhuǎn)移矩陣狼牺、觀測(cè)概率矩陣以及初始狀態(tài)概率分布確定羡儿,因此一個(gè)HMM模型可以表示為礼患。
隱馬爾可夫模型的三個(gè)基本問(wèn)題
利用隱馬爾可夫模型時(shí)是钥,通常涉及三個(gè)問(wèn)題掠归,分別是:
- 概率計(jì)算:已知HMM的所有參數(shù),給定長(zhǎng)度為T(mén)的觀測(cè)序列悄泥,求解虏冻。
- 狀態(tài)解碼:已知HMM的所有參數(shù),給定長(zhǎng)度為T(mén)的觀測(cè)序列弹囚,求解出現(xiàn)的條件下厨相,概率最大的狀態(tài)序列。
- 參數(shù)學(xué)習(xí):HMM參數(shù)未知鸥鹉,通過(guò)觀測(cè)序列學(xué)習(xí)HMM的參數(shù)蛮穿,。
本小節(jié)首先對(duì)概率計(jì)算問(wèn)題進(jìn)行闡述毁渗。
概率計(jì)算
計(jì)算践磅,一個(gè)很自然的想法是計(jì)算。其中為從1時(shí)刻到時(shí)刻所有可能的狀態(tài)序列灸异,應(yīng)該有個(gè)不同的狀態(tài)序列府适,計(jì)算的復(fù)雜度過(guò)高,很難利用該方法肺樟。
現(xiàn)有的方法是使用一種動(dòng)態(tài)規(guī)劃的方案檐春,稱(chēng)之為前向算法。首先定義前向概率的概念:
給定HMM模型么伯,時(shí)刻t時(shí)已有觀測(cè)序列為疟暖,且t時(shí)刻狀態(tài)為的概率前向概率。
需要注意的是蹦狂,當(dāng)引入一個(gè)特定的前向概率時(shí)誓篱,需要說(shuō)明具體的觀測(cè)序列、時(shí)刻t凯楔,以及時(shí)刻t時(shí)的狀態(tài)窜骄。
可以看出,前向概率涵蓋了從0時(shí)刻到t-1時(shí)刻為止摆屯,條狀態(tài)路徑的所有可能性邻遏。這使得我們?cè)谟?jì)算t+1時(shí)的情況時(shí),不必再考慮從時(shí)刻1到時(shí)刻t這段時(shí)間內(nèi)的狀態(tài)路徑虐骑,只用考慮時(shí)間t到時(shí)間t+1間的狀態(tài)路徑即可准验。這無(wú)疑大大減少了工作量。具體的算法如下:
1.時(shí)刻1的初值:
計(jì)算
2.遞推出時(shí)刻2,3...T時(shí)刻的前向概率:
3.求得:
下面是一個(gè)動(dòng)態(tài)演示圖廷没,圖中的例子有4中狀態(tài)糊饱。
除了前向算法外另锋,還有一種后向算法滞项,同樣是利用了動(dòng)態(tài)規(guī)劃的方案,這里我們同樣首先定義后向概率的概念:
給定HMM模型夭坪,定義t時(shí)刻狀態(tài)為的條件下文判,t+1至T時(shí)刻觀測(cè)序列為,后向概率室梅。
可以看出戏仓,前向算法是從前向后推演整個(gè)狀態(tài)路徑,而后向算法是從后往前推演整個(gè)狀態(tài)路徑亡鼠。但本質(zhì)原理是一樣的赏殃,后向算法的具體如下:
1.時(shí)刻T的初值:
計(jì)算。這里是直接定義為1间涵,從上面的后向概率概念可以看出沒(méi)有對(duì)的定義嗓奢。因?yàn)椴淮嬖赥+1時(shí)刻。
2.遞推出當(dāng)t=T-2,T-3...0時(shí)刻的后向概率:
3.求得:
大家可以思考一下浑厚,為什么前向概率是聯(lián)合概率模式股耽,而后向概率是條件概率模式呢?這是因?yàn)榍跋蚋怕书_(kāi)始于一個(gè)已知量钳幅,因?yàn)樵诿枋雎窂降臅r(shí)候有一個(gè)已知的開(kāi)頭物蝙,可以用聯(lián)合概率。而后向概率開(kāi)始于未知量敢艰,在向前推演的時(shí)候诬乞,沒(méi)有一個(gè)已知的開(kāi)頭,因此需要假設(shè)一個(gè)開(kāi)頭钠导,因此得使用條件概率震嫉。
我在學(xué)習(xí)HMM的時(shí)候,一開(kāi)始不是很理解后向算法牡属,首先是直觀上沒(méi)有前向算法那么好理解票堵,其次公式推導(dǎo)上也有點(diǎn)費(fèi)腦。后來(lái)我推導(dǎo)出了后向算法逮栅,它的思路也在腦海中漸漸清晰悴势。如果后期有時(shí)間,我會(huì)把后向算法推導(dǎo)更新上措伐。
后期還會(huì)繼續(xù)更新HMM的內(nèi)容特纤,包括狀態(tài)解碼和參數(shù)學(xué)習(xí),歡迎一起探討侥加。