1、HMM問題一:求觀測序列問題(直接計(jì)算)
首先我們回顧下HMM模型的問題一。這個問題是這樣的骡送。我們已知HMM模型的參數(shù)λ=(A,B,Π)。其中A是隱藏狀態(tài)轉(zhuǎn)移概率的矩陣絮记,B是觀測狀態(tài)生成概率的矩陣摔踱, Π是隱藏狀態(tài)的初始概率分布。同時我們也已經(jīng)得到了觀測序列O={o1,o2,...oT},現(xiàn)在我們要求觀測序列O在模型λ下出現(xiàn)的條件概率P(O|λ)到千。
我們可以列舉出所有可能出現(xiàn)的長度為T的隱藏序列I={i1,i2,...,iT},分布求出這些隱藏序列與觀測序列O={o1,o2,...oT}的聯(lián)合概率分布P(O,I|λ)昌渤,這樣我們就可以很容易的求出邊緣分布P(O|λ)了。
雖然上述方法有效憔四,但是如果我們的隱藏狀態(tài)數(shù)N非常多的那就麻煩了膀息,此時我們預(yù)測狀態(tài)有NT種組合,算法的時間復(fù)雜度是O((2T-1)N^T),因此對于一些隱藏狀態(tài)數(shù)極少的模型了赵,我們可以用暴力求解法來得到觀測序列出現(xiàn)的概率潜支,但是如果隱藏狀態(tài)多,則上述算法太耗時柿汛,我們需要尋找其他簡潔的算法.
前向后向算法就是來幫助我們在較低的時間復(fù)雜度情況下求解這個問題的冗酿。
2埠对、用前向算法求HMM觀測序列的概率
前向后巷算法是前向算法和后向算法的統(tǒng)稱,這兩個算法都可以用來求HMM觀測序列的概率裁替。我們先來看看前向算法是如何求解這個問題的项玛。
在前向算法中,通過定義“前向概率”來定義動態(tài)規(guī)劃的這個局部狀態(tài)弱判。什么是前向概率呢襟沮?
既然是動態(tài)規(guī)劃开伏,我們就要遞推了,現(xiàn)在我們假設(shè)我們已經(jīng)找到了在時刻t時各個隱藏狀態(tài)的前向概率,現(xiàn)在我們需要遞推出時刻t+1時各個隱藏狀態(tài)的前向概率。
從下圖可以看出磷杏,我們可以基于時刻t時各個隱藏狀態(tài)的前向概率,再乘以對應(yīng)的狀態(tài)轉(zhuǎn)移概率巫玻,即αt(j)aji就是在時刻t觀測到o1,o2,...ot,并且時刻t隱藏狀態(tài)qj, 時刻t+1隱藏狀態(tài)qi的概率困介。如果將想下面所有的線對應(yīng)的概率求和大审,即
前向概率公式推導(dǎo):
總結(jié)一下前向算法:
輸入:HMM模型λ=(A,B,Π)屿良,觀測序列O=(o1,o2,...oT)
輸出:觀測序列概率P(O|λ)
1)計(jì)算時刻1的各個隱藏狀態(tài)前向概率:
-
遞推時刻2,3,...T時刻的前向概率:
-
由聯(lián)合概率分布和邊緣概率分布的關(guān)系圈澈,計(jì)算最終結(jié)果:
3. HMM前向算法求解實(shí)例
我們的觀察集合是:我們的狀態(tài)集合是:
而觀察序列和狀態(tài)序列的長度為3.
初始狀態(tài)分布為:
狀態(tài)轉(zhuǎn)移概率分布矩陣為:
觀測狀態(tài)概率矩陣為:
球的顏色的觀測序列:
按照我們上一節(jié)的前向算法。首先計(jì)算時刻1三個狀態(tài)的前向概率:
時刻1是紅色球尘惧,隱藏狀態(tài)是盒子1的概率為:
隱藏狀態(tài)是盒子2的概率為:
隱藏狀態(tài)是盒子3的概率為:
現(xiàn)在我們可以開始遞推了康栈,首先遞推時刻2三個狀態(tài)的前向概率:
時刻2是白色球,隱藏狀態(tài)是盒子1的概率為:
隱藏狀態(tài)是盒子2的概率為:
隱藏狀態(tài)是盒子3的概率為:
繼續(xù)遞推喷橙,現(xiàn)在我們遞推時刻3三個狀態(tài)的前向概率: 時刻3是紅色球啥么,隱藏狀態(tài)是盒子1的概率為:
隱藏狀態(tài)是盒子2的概率為:
隱藏狀態(tài)是盒子3的概率為:
最終我們求出觀測序列:O={紅,白贰逾,紅}的概率為:
下一章節(jié)將介紹后向算法