1. 程式人生 > >隱馬爾可夫模型基本問題——概率計算問題詳細講解

隱馬爾可夫模型基本問題——概率計算問題詳細講解

概率計算問題又稱評價問題(Evaluation Problem)

已知條件:給定模型λ=[A,B,π]\lambda=[A,B,\pi]和觀測序列O=(o1,o2,o3,...,on)O=(o_{1},o_{2},o_{3},...,o_{n}) 求解目標:計算在模型λ\lambda和觀測序列OO出現情況下的P(Oλ)P(O|\lambda),也可以認為是求解觀測序列和評估模型之間的匹配程度。 求解方式:直接計演算法、前向演算法、後向演算法

例子:有三個盒子,編號1、2、3,每個盒子都有紅、白兩種顏色的球,有放回的從盒子裡拿1個球,總共進行了四次,出現“紅、白、紅、白”的概率是多少?(初始狀態概率矩陣π

=(1,0,0)\pi=(1,0,0)

表1. 盒子之間的轉移概率
盒子 盒1 盒 2 盒3
盒1 0.4 0.6 0
盒2 0 0.8 0.2
盒 3 0 0 1
表2. 每個盒子中紅白球的個數
盒子 盒1 盒 2 盒3
紅球 7 4 8
白球 3 6 2

解析:由表1和表2,可知狀態轉移矩陣A和觀測概率B,此時“模型λ=[A,B,π]\lambda=[A,B,\pi]和觀測序列O=()O=(紅、白、紅、白)”為已知條件,求解目標是:“O=()O=(紅、白、紅、白)

()發生的概率,即P(Oλ)=P(O|\lambda)=?

直接計演算法(不提倡)

通過列舉所有可能長度為T的狀態序列S=(s1,s2,s3,...,sT)S=(s_{1},s_{2},s_{3},...,s_{T}),求各個狀態序列SS和觀測序列OO的聯合概率P(O,Sλ)P(O,S|\lambda),然後對所有可能的狀態序列求和,得到P(Oλ)P(O|\lambda),求解方式如下(aijbija_{ij}是狀態轉移概率,b_{ij}是觀測概率

jbij):

P(OSλ)=b11b22b33...bTMP(O|S,\lambda)=b_{11}b_{22}b_{33}...b_{TM}

P(Sλ)=π1a12a23...a(T1)TP(S|\lambda)=\pi_{1}a_{12}a_{23}...a_{(T-1)T}

P(O,Sλ)=P(OSλ)P(Sλ)=π1b11a12b22a23b33...a(T1)TbTMP(O,S|\lambda)=P(O|S,\lambda)P(S|\lambda) =\pi_{1}b_{11}a_{12}b_{22}a_{23}b_{33}...a_{(T-1)T}b_{TM}

P(Oλ)=SSTP(O,Sλ)=S1,S2,S3,...STπ1b11a12b22a23b33...a(T1)TbTMP(O|\lambda)=\sum_{S∈S_{T}}P(O,S|\lambda) =\sum_{S_{1},S_{2},S_{3},...S_{T}}\pi_{1}b_{11}a_{12}b_{22}a_{23}b_{33}...a_{(T-1)T}b_{TM}

理論上可以計算,但計算量很大,時間複雜度是O(TNT)O(TN^T)NN是狀態的個數,TT是觀測列表的長度),因此不可行。

解析:還是上面例子,如果O=()O=(紅、白、紅、白),那麼只要列舉343^4個就行,分別求出對應的概率,再相加就行了,但要是O=(...)O=(紅、白、紅、...、白)有1000個,需要列舉310003^{1000},這數目就不少了,因此該方法只要知道是什麼就可以了,可行度不高。

前向演算法(重要)

前向概率:在λ\lambda給定的情況下,到時刻tt時,出現的觀測序列為o1,o2,o3,...,oto_{1},o_{2},o_{3},...,o_{t}且狀態為sis_{i}時的概率,記為:

αt(i)=P(o1,o2,o3,...,ot,siλ)\alpha_{t}(i)=P(o_{1},o_{2},o_{3},...,o_{t},s_{i}|\lambda)

求解步驟

  1. 起始值:α1(i)=πibi(o1),    i=1,2,3,...,N\alpha_{1}(i)=\pi_{i}b_{i}(o_{1}),\:\:\:\:i=1,2,3,...,N

  2. 遞推:當t=1,2,3,...,T1t=1,2,3,...,T-1時, αt+1(i)=[j=1Nαt(j)αji]bi(ot+1),    i=1,2,3,...,N\alpha_{t+1}^{(i)}=[\sum_{j=1}^{N}\alpha_{t}(j)\alpha_{ji}]b_{i}(o_{t+1}), \:\:\:\:i=1,2,3,...,N