概率計算問題
已知:模型λ=(A, B, Π)和觀測序列O =(o1,o2,…,oT)
求:P(O|λ)
方法一:直接計算法
通過列舉所有可能的長度為T的狀態序列I = (i1,i2, ..., iT),求各個狀態序列I與觀測序列O = (o1, o2, ..., oT)的聯合概率P(O,I|λ),然後對所有可能的狀態序列求和,得到P(O|λ)。
但這個公式計算量很大,算法的複雜度是,類似TNT炸藥一樣,直接就爆了。那麼有什麼解決的有效辦法嗎?
下面介紹計算觀測序列概率P(O|λ)的有效算法:前向-後向算法。(後向算法下節課會講到)
上面的問題看似非常複雜,其實如果學會一步一步來做,問題也許就會迎刃而解。假設現在我們只有一個觀測:
■ 一個觀測
表示在第一個時刻(t=1),狀態取值為的概率,有N種可能;
■ 兩個觀測
表示在第二個時刻(t=2),狀態取值為的概率,有N種可能。
■ 三個觀測
相信大家已經發現一些規律,那麼我們來總結一下:
有了上面的計算公式,我們能夠從相應的概率解釋直接計算,例如對t=1時刻:
算法(觀測序列概率的前向算法)
輸入:隱馬爾科夫模型λ,觀測序列O;
輸出:觀測序列概率P(O|λ)
隱馬爾可夫模型的其餘部分將會在下一講中繼續為大家講解,感謝閱讀~
ps:文中所有推導均可在課件中找到,回復「課件」即可領取。