HMM基本原理
Markov鏈:如果一個過程的“將來”僅依賴“現(xiàn)在”而不依賴“過去”贷痪,則此過程具有馬爾可夫性廓译,或稱此過程為馬爾可夫過程。馬爾可夫鏈是時間和狀態(tài)參數(shù)都離散的馬爾可夫過程恶复。
HMM 是在 Markov 鏈的基礎上發(fā)展起來的详羡,由于實際問題比 Markov 鏈模型所描述的更為復雜,觀察到的時間并不是與狀態(tài)一一對應的钧栖,而是通過一組概率分布相聯(lián)系低零,這樣的模型稱為HMM。
HMM是雙重隨機過程:其中之一是 Markov 鏈拯杠,這是基本隨機過程掏婶,它描述狀態(tài)的轉(zhuǎn)移,是隱含的潭陪。另一個隨機過程描述狀態(tài)和觀察值之間的統(tǒng)計對應關(guān)系雄妥,是可被觀測的。
HMM的定義:
如果你看不懂上面的那兩段話依溯,那就對了老厌。
HMM理解
HMM(隱馬爾可夫模型)是用來描述隱含未知參數(shù)的統(tǒng)計模型。
舉一個經(jīng)典的例子:一個東京的朋友每天根據(jù)天氣{下雨黎炉,天晴}決定當天的活動{公園散步,購物,清理房間}中的一種梅桩,我每天只能在twitter上看到她發(fā)的推“啊,我前天公園散步拜隧、昨天購物宿百、今天清理房間了!”洪添,那么我可以根據(jù)她發(fā)的推特推斷東京這三天的天氣垦页。在這個例子里,顯狀態(tài)是活動干奢,隱狀態(tài)是天氣痊焊。
HMM描述
任何一個HMM都可以通過下列五元組來描述:
:param obs:觀測序列
:param states:隱狀態(tài)
:param start_p:初始概率(隱狀態(tài))
:param trans_p:轉(zhuǎn)移概率(隱狀態(tài))
:param emit_p: 發(fā)射概率 (隱狀態(tài)表現(xiàn)為顯狀態(tài)的概率)
這個例子可以用如下的HMM來描述:
states = ('Rainy', 'Sunny')
observations = ('walk', 'shop', 'clean')
start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
transition_probability = {
'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},
'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},
}
emission_probability = {
'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
}
求解最可能的天氣
求解最可能的隱狀態(tài)序列是HMM的三個典型問題之一,通常用維特比算法解決。維特比算法就是求解HMM上的最短路徑(-log(prob)薄啥,也即是最大概率)的算法辕羽。
</br>
稍微用中文講講思路,很明顯垄惧,第一天天晴還是下雨可以算出來:
</br>
1刁愿、 定義V[時間][今天天氣] = 概率,注意今天天氣指的是到逊,前幾天的天氣都確定下來了(概率最大)今天天氣是X的概率铣口,這里的概率就是一個累乘的概率了。
</br>
2觉壶、 因為第一天我的朋友去散步了脑题,所以第一天下雨的概率V[第一天][下雨] = 初始概率[下雨] * 發(fā)射概率[下雨][散步] = 0.6 * 0.1 = 0.06,同理可得V[第一天][天晴] = 0.24 铜靶。從直覺上來看叔遂,因為第一天朋友出門了,她一般喜歡在天晴的時候散步争剿,所以第一天天晴的概率比較大掏熬,數(shù)字與直覺統(tǒng)一了。
</br>
3秒梅、 從第二天開始旗芬,對于每種天氣Y,都有前一天天氣是X的概率 * X轉(zhuǎn)移到Y(jié)的概率 * Y天氣下朋友進行這天這種活動的概率捆蜀。因為前一天天氣X有兩種可能疮丛,所以Y的概率有兩個,選取其中較大一個作為V[第二天][天氣Y]的概率辆它,同時將今天的天氣加入到結(jié)果序列中
</br>
4誊薄、 比較V[最后一天][下雨]和[最后一天][天晴]的概率,找出較大的哪一個對應的序列锰茉,就是最終結(jié)果呢蔫。
</br>
HMM是一個通用的方法,可以解決貼標簽的一系列問題飒筑。