前向算法的實例應用

一、基本情況

        前面有章節介紹過前向算法的理論,似乎很難理解,本文將用一個實例來說明前向算法的應用,先回顧下前向算法的理論

        1、 一個隱馬爾可夫模型 (HMM) 是由一個五元組描述的: 
                      λ  =( N,M ,A,B, π )
                     其中:
                              N = {q1,...qN}:狀態的有限集合
                              M = {v1,...,vM}:觀察值的有限集合
                              A = {aij},aij = P(qt = Sj |qt-1 = Si):狀態轉移概率矩陣
                              B = {bjk}, bjk = P(Ot = vk | qt = Sj):觀察值概率分佈矩陣
                              π = {πi},πi = P(q1 = Si):初始狀態概率分佈

        2、 給定HMM模型 λ = (A, B, π) ,則觀察序列 O=O1,O2,…OT 可由以下步驟產生:


                               1.根據初始狀態概率分佈π= πi,選擇一初始狀態q1=Si;
                               2.設t=1;
                               3.根據狀態 Si的輸出概率分佈bjk,輸出Ot=vk;
                               4.根據狀態轉移概率分佈aij,轉移到新狀態qt+1=Sj;
                               5.設t=t+1,如果t<T,重複步驟3、4,否則結束。


二、HMM的三個基本問題

        令 λ = {π,A,B} 爲給定HMM的參數,
        令 O = O1,...,OT 爲觀察值序列,則有關於隱馬爾可夫模型(HMM)的三個基本問題: 


        1.評估問題:對於給定模型,求某個觀察值序列的概率P(O|λ) ;

        2.解碼問題:對於給定模型和觀察值序列,求可能性最大的狀態序列maxQ{P(Q|O,λ)};

        3.學習問題:對於給定的一個觀察值序列O,調整參數λ,使得觀察值出現的概率P(O|λ)最大。


三、前向算法解決評估問題

      1、基本步驟:

                     定義前向變量:“在時間步t, 得到t之前的所有明符號序列, 且時間步t的狀態是Si”這一事件的概率,

                                                     記爲(t, i) = P(o1,…,ot, qt = Si|λ)

                     採用動態規劃算法,複雜度O(N2T)


      2、算法過程:

                   

                           



四、算法應用

          HMM模型如下,試根據前向算法計算產生觀察符號序列O={ABAB}的概率。 

      

             

 

初始概率矩陣π=(1,0,0),即開始處於狀態1。按照前向算法公式,我們依次遞推解出
    t(i) 。解法如下:

    1、當t=1時,

                                      

    2、當t=2時:

                                     

    3、當t=3時:

                                     

    4、當t=4時:
 

                                     

    所以最終有:
    P(O| λ)= 4(1)+ 4(2)+ 4(3)=0.0717696    即觀察序列O由HMM模型產生的概率


       大家動筆一步一步按照實例來,就能理解前向算法的應用了,學過動態規劃的就知道,上面這個過程其實用到了動態規劃的思想,因此可以用動態規劃的圖示來看此問題:

                                                

                                                   



五、結語

           通過理論瞭解算法的思想和背景,通過實例瞭解算法的使用,這個是很重要的,反過來通過使用思考算法的思想,也會恍然大悟。。。

發佈了29 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章