天天看點

前向算法的執行個體應用

一、基本情況

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

        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模型産生的機率

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

前向算法的執行個體應用

五、結語

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