隱馬爾可夫模型(HMM)未完待續……

隱馬爾可夫模型(HMM)

1、模型背景

  現實生活中很多事情的發生都是有規律可循的,即表現出來的結果,受到某些“隱藏”因素的影響。舉個例子,某個人事業成功與否,這與他自身是否努力有一定關係的。其表現出來的狀態是成功或者失敗,而隱藏的影響因素爲努力與否。對於類似這類問題可以通過統計學的方法,計算表現結果爲X的情況下,隱藏狀態爲Y的概率即P(YX)P(Y|X)。利用這個概率可以將給定的表現結果X,標註上其最有可能對應的隱藏狀態Y。這就是機器學習中樣本標註的過程。

貝葉斯公式:
P(AB)=P(AB)P(B)=P(BA)P(A)P(B)(1) P(A|B) = \cfrac{P(AB)}{P(B)} = \cfrac{P(B|A) P(A)}{P(B)}\tag1
X={x1,x2,,xn}Y={y1,y2,,yn}X = \{x_1,x_2,\cdots,x_n\}Y = \{y_1,y_2,\cdots,y_n\}
P(YX)=P(y1,y2,...,ynxi,x2,,xn)=P(x1,x2,...,xny1,y2,,yn)P(y1,y2,,yn)P(x1,x2,,xn)P(x1,x2,...,xny1,y2,,yn)P(y1,y2,,yn) \begin{aligned} P(Y|X) &= P(y_1,y_2,...,y_n|x_i,x_2,\cdots,x_n)\\ &= \cfrac{P(x_1,x_2,...,x_n|y_1,y_2,\cdots,y_n) P(y_1,y_2,\cdots,y_n)}{P(x_1,x_2,\cdots,x_n)}\\ & \propto P(x_1,x_2,...,x_n|y_1,y_2,\cdots,y_n) P(y_1,y_2,\cdots,y_n) \end{aligned}
其中
P(y1,y2,,yn)=P(y1)P(y2,,yny1)=P(y1)P(y2y1)P(y3,,yny1,y2)=P(y1)P(y2y1)P(y3y1,y2)P(y4,,yny1,y2,y3)=P(y1)P(y2y1)P(y3y1,y2)P(yiy1,,yi1)P(yi+1,,yny1,,yi)=P(y1)i=2nP(yiy1,,yi1) \begin{aligned} P(y_1,y_2,\cdots,y_n) &= P(y_1) P(y_2,\cdots,y_n|y_1)\\ &=P(y_1) P(y_2|y_1) P(y_3,\cdots,y_n|y_1,y_2)\\ &=P(y_1) P(y_2|y_1) P(y_3|y_1,y_2) P(y_4,\cdots,y_n|y_1,y_2,y_3)\\ &=P(y_1) P(y_2|y_1) P(y_3|y_1,y_2)\cdots P(y_i|y_1,\cdots,y_{i-1}) P(y_{i+1},\cdots,y_n|y_1,\cdots,y_i)\\ &=P(y_1)\prod_{i=2}^n P(y_i|y_1,\cdots,y_{i-1}) \end{aligned}
假設隱藏狀態yiy_i僅與前一狀態yi1y_{i-1}有關(即齊次性假設),而與其他狀態無關,則
P(y1)i=2nP(yiy1,,yi1)P(y1)i=2nP(yiyi1)(2) P(y_1)\prod_{i=2}^n P(y_i|y_1,\cdots,y_{i-1}) \approx P(y_1)\prod_{i=2}^n P(y_i|y_{i-1}) \tag2

P(x1,x2,...,xny1,y2,,yn)=P(x1y1,,yn)P(x2,,xnx1,y1,,yn)=P(x1y1,,yn)P(x2x1,y1,,yn)P(x3,,xnx1,x2,y1,,yn)=P(x1y1,,yn)P(x2x1,y1,,yn)P(xix1,,xi1,y1,,yn)P(xi+1,,xnx1,,xi,y1,,yn)=i=1nP(xix1,,xi1,y1,,yn) \begin{aligned} P(x_1,x_2,...,x_n|y_1,y_2,\cdots,y_n) &=P(x_1|y_1,\cdots,y_n) P(x_2,\cdots,x_n|x_1,y_1,\cdots,y_n)\\ &=P(x_1|y_1,\cdots,y_n) P(x_2|x_1,y_1,\cdots,y_n) P(x_3,\cdots,x_n|x_1,x_2,y_1,\cdots,y_n)\\ &=P(x_1|y_1,\cdots,y_n) P(x_2|x_1,y_1,\cdots,y_n) \cdots P(x_i|x_1,\cdots,x_{i-1},y_1,\cdots,y_n)\\ &P(x_{i+1},\cdots,x_n|x_1,\cdots,x_i,y_1,\cdots,y_n)\\ &= \prod_{i=1}^n P(x_i|x_1,\cdots,x_{i-1},y_1,\cdots,y_n) \end{aligned}
假設當前的表現xix_i僅與當前的隱藏狀態yiy_i有關,與其他時刻的表現及隱藏狀態無關(獨立性假設),則
i=1nP(xix1,,xi1,y1,,yn)i=1nP(xiyi)(3) \prod_{i=1}^n P(x_i|x_1,\cdots,x_{i-1},y_1,\cdots,y_n) \approx \prod_{i=1}^n P(x_i|y_i) \tag3
結合公式(2)和公式(3)則有如下關係:
P(y1,y2,...,ynxi,x2,,xn)i=1nP(xiyi)P(yiyi1)(4) P(y_1,y_2,...,y_n|x_i,x_2,\cdots,x_n) \propto \prod_{i=1}^n P(x_i|y_i) P(y_i|y_{i-1}) \tag4
公式(4)需滿足一個初始條件,中當i=1i = 1時,P(y1y0)=P(y1)P(y_1|y_0) = P(y_1)。公式(4)所代表的模型即爲隱馬爾可夫模型

2、模型定義

  隱馬爾可夫模型是關於時序的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測從而產生觀測隨機序列的過程。隱藏的馬爾可夫鏈隨機生成的狀態的序列,稱爲狀態序列(state sequence);每個狀態生成一個觀測,而由此產生的觀測的隨機序列,稱爲觀測序列(observation sequence)。序列的每一個位置又可以看作是一個時刻。
  隱馬爾可夫模型由初始概率分佈、狀態轉移概率分佈以及觀測概率分佈確定。隱馬爾可夫模型的定義如下:
  設QQ是所有可能的狀態的集合,VV是所有可能的觀測的集合:
Q={q1,q2,,qN},     V={v1,v2,,vM} Q = \{q_1,q_2,\cdots,q_N\}, \ \ \ \ \ V =\{v_1,v_2,\cdots,v_M\}
其中,NN是可能的狀態數,MM是可能的觀測數。
II 是長度爲 TT 的狀態序列,OO是對應的觀測序列:

I={i1,i2,,iT},     O={o1,o2,,oT} I = \{i_1,i_2,\cdots,i_T\}, \ \ \ \ \ O=\{o_1,o_2,\cdots,o_T\}
  AA是狀態轉移概率矩陣:
A=[aij]N×NA=[a_{ij} ]_{N×N}
其中,
aij=P(it+1=qjit=qi),     i=1,2,,N;  j=1,2,,Na_{ij} = P(i_{t+1} = q_j | i_ t = q_i), \ \ \ \ \ i=1,2,\cdots,N;\ \ j=1,2,\cdots,N
代表在tt時刻處於qiq_i的條件下在t+1t+1時刻轉移到狀態qjq_j的概率。
  BB代表觀測矩陣:
B=[bj(k)]N×MB=[b_j(k)]_{N×M}
其中,
bj(k)=P(ot=vkit=qj)   j=1,2,,N;   k=1,2,,Mb_j(k)=P(o_t=v_k|i_t=q_j)\ \ \ j=1,2,\cdots,N; \ \ \ k=1,2,\cdots,M
代表在tt時刻處於qjq_j的條件下生成觀測vkv_k的概率。
  π\pi是初始狀態概率向量:
π=(πi)\pi=(\pi_i)
其中,
πi=P(i1=qi)     i=i,2,,N\pi_i=P(i_1=q_i)\ \ \ \ \ i=i,2,\cdots,N
代表t=1t=1的時刻,狀態爲qiq_i的概率。
  隱馬爾可夫模型由初始狀態概率向量π\pi、狀態轉移概率矩陣AA和觀測概率矩陣BB決定。π\piAA決定狀態序列,BB決定觀測序列。因此,隱馬爾可夫模型λ\lambda可以用三元符號表示,即
λ=(A,B,π)\lambda=(A,B,\pi)
AA,BB,π\pi稱位隱馬爾可夫模型的三要素
  狀態轉移概率矩陣AA與初始狀態概率向量π\pi確定了隱藏的馬爾可夫鏈,生成不可觀測的狀態序列。觀測概率矩陣BB確定瞭如何從狀態生成觀測,與狀態序列綜合確定瞭如何產生觀測序列。
  前面背景介紹中涉及到的兩種基本假設,下面在這裏進行詳細介紹:
(1)齊次馬爾可夫假設,即假設隱藏的馬爾可夫鏈在任意時刻tt的狀態只依賴於其前一時刻的狀態,與其他時刻的狀態及觀測無關,也與時刻t無關:
P(itit1,ot1,,i1,o1)=P(itit1),     t=1,2,,T(5)P(i_t|i_{t-1},o_{t-1},\cdots,i_1,o_1)=P(i_t|i_{t-1}),\ \ \ \ \ t=1,2,\cdots,T \tag5
(2)觀測獨立性假設,即假設任意時刻的觀測只依賴於該時刻的馬爾可夫鏈的狀態,與其他觀測及狀態無關:
P(otiT,oT,iT1,oT1,,it+1,ot+1,it,it1,ot1,,i1,o1)=P(otit)(6) P(o_t|i_T,o_T,i_{T-1},o_{T-1},\cdots,i_{t+1},o_{t+1},i_t,i_{t-1},o_{t-1},\cdots,i_1,o_1)=P(o_t|i_t) \tag6
  隱馬爾可夫模型可以用於標註,這是狀態對應着標記。標註問題是給定觀測的序列預測其對應的標記序列。可以假設標註問題的數據是由隱馬爾可夫模型生成的。這樣我們可以利用隱馬爾可夫模型的學習與預測算法進行標註。
  本節內容可以用一句話簡單概括,一個定義,二個假設,三個要素

3、模型的三個基本問題

3.1、概率計算問題

  給定模型λ=(A,B,π)\lambda=(A,B,\pi)和觀測序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T),計算在模型λ\lambda下觀測序列OO出現的概率P(Oλ)P(O|\lambda)
1、直接計算法
  給定模型λ=(A,B,π)\lambda=(A,B,\pi)和觀測序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T),計算觀測序列OO出現的概率P(Oλ)P(O|\lambda)。最直接的方法是按照概率公式直接計算。列舉所有可能的長度爲TT的狀態序列I=(i1,i2,,iT)I=(i_1,i_2,\cdots,i_T),求各個狀態序列II與觀測序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T)聯合概率P(O,Iλ)P(O,I|\lambda),然後對所有可能的狀態序列求和,得到P(Oλ)P(O|\lambda)
  狀態序列I=(i1,i2,,iT)I=(i_1,i_2,\cdots,i_T)的概率是:
P(Iλ)=πi1ai1i2ai2i3aiT1iT(7)P(I|\lambda)=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}\cdots a_{i_{T-1}i_T} \tag7
  對固定的狀態序列I=(i1,i2,,iT)I=(i_1,i_2,\cdots,i_T),生成觀測序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T)的概率是:
P(OI,λ)=bi1(o1)bi2(o2)biT(oT)(8)P(O|I,\lambda)=b_{i_1}(o_1)b_{i_2}(o_2)\cdots b_{i_T}(o_T)\tag8
  OIO和I同時出現的聯合概率爲
P(O,Iλ)=P(OI,λ)P(Iλ)=πi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)(9) P(O,I|\lambda)=P(O|I,\lambda)P(I|\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)\cdots a_{i_{T-1}i_T}b_{i_T}(o_T)\tag9
  IOP(Oλ)然後,對所有可能的狀態序列I求和,得到觀測序列O的概率P(O|\lambda),即
P(Oλ)=IP(OI,λ)P(Iλ)=i1,i2,,iTπi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)(10) P(O|\lambda) =\sum_IP(O|I,\lambda)P(I|\lambda) =\sum_{i_1,i_2,\cdots,i_T}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)\cdots a_{i_{T-1}i_T}b_{i_T}(o_T)\tag{10}
  按照第2小節所介紹的,所有狀態的集合爲QQ,集合內的元素個數爲NN。那麼對於長度爲TT的狀態序列II,其對應的任意時刻都有NN種選擇,因此對於狀態序列II就有NTN^T種選擇。這樣不難看出,公式(10)計算量很大,時間複雜度是O(TNT)O(TN^T),這種算法基本不可行。
2、前向算法
  定義(前向概率) 給定隱馬爾可夫模型λ\lambda,定義到時刻tt部分觀測序列爲o1,o2,,oto_1,o_2,\cdots,o_t且狀態爲qiq_i的概率爲前向概率,記作
αt(i)=P(o1,o2,,ot,it=qiλ)(11)\alpha_t(i) = P(o_1,o_2,\cdots,o_t,i_t=q_i|\lambda)\tag{11}
  算法(觀測序列概率的前向算法)
  輸入:隱馬爾可夫模型λ\lambda,觀測序列OO
  輸出:觀測序列概率P(Oλ)P(O|\lambda)
(1)初值
α1(i)=πibi(o1),     i=1,2,,N(12)\alpha_1(i)=\pi_ib_i(o_1),\ \ \ \ \ i=1,2,\cdots,N\tag{12}
(2)遞推   對t=1,2,,T1,t=1,2,\cdots,T-1,
αt+1(i)=[j=1Nαt(j)aji]bi(ot+1)(13)\alpha_{t+1}(i)=\Bigg[\sum_{j=1}^N\alpha_t(j)a_{ji}\Bigg]b_i(o_{t+1})\tag{13}
(3)終止
P(Oλ)=i=1NαT(i)(14)P(O|\lambda)=\sum_{i=1}^N \alpha_T(i)\tag{14}
  前向算法,步驟(1)初始化前向概率,是初始時刻的狀態i1=qii_1=q_i和觀測o1o_1的聯合概率。步驟(2)是前向概率的遞推公式,計算時刻t+1t+1部分觀測序列爲o1,o2,,ot,ot+1o_1,o_2,\cdots,o_t,o_{t+1}且在時刻t+1t+1處於狀態qiq_i的前向概率,如圖1所示。在公式(13)的方括號裏,既然αt(j)\alpha_t(j)是到時刻tt觀測到o1,o2,,oto_1,o_2,\cdots,o_t並在時刻tt處於狀態qjq_j的前向概率,那麼乘積αt(j)aji\alpha_t(j)a_{ji}就是到時刻tt觀測到o1,o2,,oto_1,o_2,\cdots,o_t並在時刻tt處於狀態qjq_j而在時刻t+1t+1到狀態qiq_i的聯合概率。對這個乘積在時刻tt的所有可能的NN個狀態qjq_j求和,其結果就是到時刻tt觀測爲o1,o2,,oto_1,o_2,\cdots,o_t並在時刻t+1t+1處於狀態qiq_i的聯合概率。方括號裏面的觀測概率bi(ot+1)b_i(o_{t+1})的乘積恰好是到時刻t+1t+1觀測到o1,o2,,ot,ot+1o_1,o_2,\cdots,o_t,o_{t+1}並在時刻t+1t+1處於狀態qiq_i的前向概率αt+1(i)\alpha_{t+1}(i)。步驟(3)給出P(Oλ)P(O|\lambda)的計算公式。因爲
αT(i)=P(o1,o2,,oT,iT=qiλ)\alpha_T(i)=P(o_1,o_2,\cdots,o_T,i_T=q_i|\lambda)
所以
P(Oλ)=i=1NαT(i)P(O|\lambda)=\sum_{i=1}^N\alpha_T(i)

圖 1 前向概率的遞推公式

  如圖2所示,前向算法實際是基於“狀態序列的路徑結構”遞歸計算P(Oλ)P(O|\lambda)的算法。前向算法高效的關鍵是其局部計算前向概率,然後利用路徑結構將前向概率“遞歸”到全局,得到P(Oλ)P(O|\lambda)。具體地,在時刻t=1t=1,計算α1(i)\alpha_1(i)NN個值(i=1,2,,N);(i=1,2,\cdots,N);在各個時刻t=12,T1t=1,2,\cdots,T-1,計算αt+1\alpha_{t+1}NN個值(i=1,2,,N)(i=1,2,\cdots,N),而且每個αt+1\alpha_{t+1}的計算利用前一時刻NNαt(j)\alpha_t(j)。減少計算量的原因在於每一次計算直接引用前一個時刻的計算結果,避免重複計算。這樣,利用前向概率計算P(Oλ)P(O|\lambda)的計算量是O(N2T)O(N^2T)階的。
在這裏插入圖片描述

圖 2 觀測序列路徑結構

前向遞推公式證明:
已知聯合概率公式如下:
P(ABC)=P(ABC)P(AB)P(B)P(ABC) = P(AB|C)P(A|B)P(B)
基於上面公式證明如下:
   αt(j)aji=P(o1,,ot,it=qjλ)P(it+1=qiit=qj,λ)=P(o1,,otit=qj,λ)P(it=qjλ)P(it+1=qiit=qj,λ)=P(o1,,otit=qj,λ)P(it=qj,it+1=qiλ)=P(o1,,otit=qj,it+1=qi,λ)P(it=qj,it+1=qiλ)=P(o1,,ot,it=qj,it+1=qiλ) \begin{aligned} \because \ \ \ \alpha_t(j) a_{ji} &= P(o_1,\cdots,o_t,i_t=q_j|\lambda)P(i_{t+1}=q_i|i_t=q_j,\lambda)\\ &=P(o_1,\cdots,o_t|i_t=q_j,\lambda)P(i_t=q_j|\lambda)P(i_{t+1}=q_i|i_t=q_j,\lambda)\\ &=P(o_1,\cdots,o_t|i_t=q_j,\lambda)P(i_t=q_j,i_{t+1}=q_i|\lambda)\\ &=P(o_1,\cdots,o_t|i_t=q_j, i_{t+1}=q_i ,\lambda)P(i_t=q_j,i_{t+1}=q_i|\lambda)\\ &=P(o_1,\cdots,o_t,i_t=q_j,i_{t+1}=q_i|\lambda) \end{aligned}

  [j=1Nαt(j)aji]bt+1(i)=j=1N[P(o1,,ot,it=qj,it+1=qiλ)]P(ot+1it+1=qi,λ)=P(o1,,ot,it+1=qiλ)P(ot+1it+1=qi,λ)=P(o1,,otit+1=qi,λ)P(it+1=qiλ)P(ot+1it+1=qi,λ)=P(o1,,otit+1=qi,λ)P(ot+1,it+1=qiλ)=P(o1,,otot+1,it+1=qi,λ)P(ot+1,it+1=qiλ)=P(o1,,ot,ot+1,it+1=qiλ)=αt+1(i) \begin{aligned} \therefore \ \ \Bigg[\sum_{j=1}^N \alpha_t(j)a_{ji} \Bigg] b_{t+1}(i)&=\sum_{j=1}^N\bigg[P(o_1,\cdots,o_t,i_t=q_j,i_{t+1}=q_i|\lambda)\bigg]P(o_{t+1}|i_{t+1}=q_i,\lambda)\\ &=P(o_1,\cdots,o_t,i_{t+1}=q_i|\lambda)P(o_{t+1}|i_{t+1}=q_i,\lambda)\\ &=P(o_1,\cdots,o_t|i_{t+1}=q_i,\lambda)P(i_{t+1}=q_i|\lambda)P(o_{t+1}|i_{t+1}=q_i,\lambda)\\ &=P(o_1,\cdots,o_t|i_{t+1}=q_i,\lambda)P(o_{t+1},i_{t+1}=q_i|\lambda)\\ &=P(o_1,\cdots,o_t|o_{t+1},i_{t+1}=q_i,\lambda)P(o_{t+1},i_{t+1}=q_i|\lambda)\\ &=P(o_1,\cdots,o_t,o_{t+1},i_{t+1}=q_i|\lambda)\\ &=\alpha_{t+1}(i) \end{aligned}

3、後向算法
  定義(後向概率) 給定隱馬爾可夫模型λ\lambda,定義在時刻tt狀態爲qiq_i的條件下,從t+1t+1TT的部分觀測序列爲ot+1,ot+2,,oTo_{t+1},o_{t+2},\cdots,o_T的概率爲後向概率,記作
βt(i)=P(ot+1,ot+2,,oTit=qi,λ)(15)\beta_t(i)=P(o_{t+1},o_{t+2},\cdots,o_T|i_t=q_i,\lambda)\tag{15}
  算法(觀測序列概率的後向算法)
輸入:隱馬爾可夫模型λ\lambda,觀測序列OO
輸出:觀測序列概率P(Oλ)P(O|\lambda)
(1)初值
βT(i)=1,      i=1,2,,N\beta_T(i) = 1, \ \ \ \ \ \ i=1,2,\cdots,N
代表t=Tt=T時刻,任意狀態的後向概率均爲1。
(2)遞推    對t=T1,T2,,1t=T-1,T-2,\cdots,1
βt(i)=j=1Naijbj(ot+1)βt+1(j),     i=1,2,,N(16)\beta_t(i)=\sum_{j=1}^Na_{ij}b_j(o_{t+1})\beta_{t+1}(j),\ \ \ \ \ i =1,2,\cdots,N\tag{16}
(3)終止
P(Oλ)=i=1Nπibi(o1)β1(i)(17)P(O|\lambda)=\sum_{i=1}^N\pi_ib_i(o_1)\beta_1(i)\tag{17}
  步驟(1)初始化後向概率,對最終時刻的所有狀態qiq_i規定βT(i)=1\beta_T(i)=1。步驟(2)是後向概率的遞推公式。如圖3所示,爲了計算在時刻tt狀態爲qiq_i條件下時刻t+1t+1之後的觀測序列爲Ot+1,ot+2,,oTO_{t+1},o{t+2},\cdots,o_T的後向概率βt(i)\beta_t(i),只需考慮在時刻t+1t+1所有可能的NN個狀態qjq_j的轉移概率(即aija_{ij}),以及在此狀態下的觀測ot+1o_{t+1}的觀測概率(即bj(ot+1)b_j(o_{t+1})項),然後考慮狀態qjq_j之後的觀測序列的後向概率(即βt+1(j)\beta_{t+1}(j)項)。步驟(3)求P(Oλ)P(O|\lambda)的思路與步驟(2)一致,只是初始概率πi\pi_i代替轉移概率。
在這裏插入圖片描述

圖 3 後向概率遞推公式

後向遞推公式證明:
j=1Naijbj(ot+1)βt+1(j)=j=1NP(it+1=qjit=qi,λ)P(ot+1it+1=qj,λ)P(ot+2,,oTit+1=qj,λ)=j=1NP(it+1=qjit=qi,λ)P(ot+1it+1=qj,λ)P(ot+2,,oTot+1,it+1=qj,λ)=j=1NP(it+1=qjit=qi,λ)P(ot+1,ot+2,,oTit+1=qj,λ)=j=1NP(it+1=qjit=qi,λ)P(ot+1,ot+2,,oTit=qi,it+1=qj,λ)=j=1NP(ot+1,ot+2,,oT,it+1=qjit=qi,λ)=P(ot+1,ot+2,,oTit=qi,λ)=βt(i) \begin{aligned} \sum_{j=1}^N a_{ij}b_j(o_{t+1})\beta_{t+1}(j)&=\sum_{j=1}^NP(i_{t+1}=q_j|i_t=q_i,\lambda)P(o_{t+1}|i_{t+1}=q_j,\lambda)P(o_{t+2},\cdots,o_T|i_{t+1}=q_j,\lambda)\\ &=\sum_{j=1}^NP(i_{t+1}=q_j|i_t=q_i,\lambda)P(o_{t+1}|i_{t+1}=q_j,\lambda)P(o_{t+2},\cdots,o_T|o_{t+1},i_{t+1}=q_j,\lambda)\\ &=\sum_{j=1}^NP(i_{t+1}=q_j|i_t=q_i,\lambda)P(o_{t+1},o_{t+2},\cdots,o_T|i_{t+1}=q_j,\lambda)\\ &=\sum_{j=1}^NP(i_{t+1}=q_j|i_t=q_i,\lambda)P(o_{t+1},o_{t+2},\cdots,o_T|i_t = q_i,i_{t+1}=q_j,\lambda)\\ &=\sum_{j=1}^N P(o_{t+1},o_{t+2},\cdots,o_T, i_{t+1}=q_j|i_t=q_i,\lambda)\\ &=P(o_{t+1},o_{t+2},\cdots,o_T|i_t=q_i,\lambda)\\ &=\beta_t(i) \end{aligned}

  利用前向概率和後向概率的定義可以將觀測序列概率P(Oλ)P(O|\lambda)統一寫成
P(Oλ)=i=1Nj=1Nαt(i)aijbj(ot+1)βt+1(j)(18)P(O|\lambda)=\sum_{i=1}^N\sum_{j=1}^N\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)\tag{18}
4、一些概率與期望值的計算
  利用前向概率和後向概率,可以得到關於單個狀態和兩個狀態概率的計算公式。

  • 定義模型λ\lambda和觀測OO,在時刻tt處於狀態qiq_i的概率。記
    γt(i)=P(it=qiO,λ)=P(it=qi,Oλ)P(Oλ)=αt(i)βt(i)j=1Nαt(j)βt(j)(19)\gamma_t(i)=P(i_t=q_i|O,\lambda)=\cfrac{P(i_t=q_i,O|\lambda)}{P(O|\lambda)}=\cfrac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)}\tag{19}
  • 給定模型λ\lambda和觀測OO,在時刻tt處於狀態qiq_i且在時刻t+1t+1處於qjq_j的概率。記
    ξt(i,j)=P(it=qi,it+1=qjO,λ)=αt(i)aijbj(ot+1)βt+1(j)i=1Nj=1Nαt(i)aijbj(ot+1)βt+1(j)(20) \begin{aligned} \xi_t(i,j) &=P(i_t=q_i,i_{t+1}=q_j|O,\lambda)\\ &=\cfrac{\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}{\sum_{i=1}^N\sum_{j=1}^N\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}\tag{20} \end{aligned}
  • γt(i)\gamma_t(i)ξt(i,j)\xi_t(i,j)對各個時刻tt求和,可以得到一些有用的期望值。
    (1)在觀測OO下狀態ii出現的期望值:
    t=1Tγt(i)(21)\sum_{t=1}^T\gamma_t(i)\tag{21}
    (2)在觀測OO下由狀態ii轉移的期望值:
    t=1T1γt(i)(22)\sum_{t=1}^{T-1}\gamma_t(i)\tag{22}
    (3)在觀測OO下由狀態ii轉移到狀態jj的期望值:
    t=1T1ξt(i,j)(23)\sum_{t=1}^{T-1}\xi_t(i,j)\tag{23}

3.2、學習問題

  隱馬爾可夫模型的學習,根據訓練數據是包括觀測序列和對應的狀態序列還是隻有觀測序列,可以分別由監督學習與無監督學習實現。

  • 監督學習方法
      已知觀測序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T),估計模型λ=(A,B,π)\lambda=(A,B,\pi)參數,使得在該模型下觀測概率P(Oλ)P(O|\lambda)最大。即用極大似然估計的方法估計參數。
    1、轉移概率aija_{ij}的估計
      設樣本中時刻tt處於狀態ii時刻t+1t+1轉移到狀態jj的頻數爲AijA_{ij},那麼狀態轉移概率爲
    aij=Aijj=1NAij      i=1,2,,N;    j=1,2,,N(24)a_{ij}=\cfrac{A_{ij}}{\sum_{j=1}^NA_{ij}}\ \ \ \ \ \ i=1,2,\cdots,N;\ \ \ \ j=1,2,\cdots,N \tag{24}
    2、觀測概率bj(k)b_j(k)的估計
      設樣本中狀態爲jj並觀測爲kk的頻數是BjkB_{jk},那麼狀態jj觀測爲kk的概率估計是:
    bj(k)=Bjkk=1MBjk      j=1,2,,N;    k=1,2,,M(25)b_j(k)=\cfrac{B_{jk}}{\sum_{k=1}^MB_{}jk}\ \ \ \ \ \ j=1,2,\cdots,N;\ \ \ \ k=1,2,\cdots,M\tag{25}
    3、初始狀態概率πi\pi_i的估計爲SS個樣本中初始狀態爲qiq_i的頻率。
  • 無監督學習方法
      暫時略過

3.3、預測問題(解碼問題)

  已知模型λ=(A,B,π)\lambda=(A,B,\pi)和觀測序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T),求對給定觀測序列條件概率P(Iλ)P(I|\lambda)最大的狀態序列I=(i1,i2,,iT)I=(i_1,i_2,\cdots,iT)。即給定觀測序列,求最有可能的對應的狀態序列。

  • 近似算法
      近似算法的想法是,在每個時刻tt選擇在該時刻最有可能出現的狀態iti_t^*,從而得到一個狀態序列I(i1,i2,,iT)I^*(i_1^*,i_2^*,\cdots,i_T^*),將它作爲預測的結果。
      給定隱馬爾可夫模型λ\lambda和觀測序列OO,在時刻tt處於狀態qiq_i的概率γt(i)\gamma_t(i)
    γt(i)=αt(i)βt(i)j=1Nαt(j)βt(j)\gamma_t(i)=\cfrac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)}
    在每一個時刻tt最有可能的狀態iti_t^*
    it=argmax1iN[γt(i)],     t=1,2,,T(26)i_t^*=arg\max_{1\leq i \leq N}\big[\gamma_t(i)\big], \ \ \ \ \ t=1,2,\cdots,T\tag{26}
    從而得到狀態序列I(i1,i2,,iT)I^*(i_1^*,i_2^*,\cdots,i_T^*)
      近似算法的優點就是計算簡單,其缺點是不能保證預測的狀態序列整體是最有可能的狀態序列,因爲預測的狀態序列可能有實際不發生的部分。事實上,上述方法得到的狀態序列中有可能存在轉移概率爲0的相鄰狀態,即對於某些i,j,aij=0i,j,a_{ij}=0。儘管如此,近似算法仍然是有用的。
  • 維特比算法
      維特比算法實際是用動態規劃解隱馬爾可夫模型預測問題,即用動態規劃求概率最大路徑(最優路徑)。這時一條路徑對應着一個狀態序列。

4、模型應用

5、模型的偏執問題

  以詞性標註的例子來描述偏執問題。詞性標註是指給一段文字,標註出這段文字所對應的詞性序列。
例如:
原文:延安供水工程建成通水。
正確標註結果:延安\ns 供水\vn 工程\n 建成\v 通水\v。
延安 ---------地名
供水 ---------名動詞
工程 ---------名詞
建成 ---------動詞
通水 ---------動詞
  預測過程中,需要嘗試各種詞性組合,最終通過HMM模型預測出概率最大的詞性序列。因爲有一些詞性出現的頻次非常低(比如rg 代詞素),所以導致任何詞性轉移到rg的概率很低,但是有可能它的發射概率相對很高,最終導致預測的詞性序列均爲rg。注意:詞性序列上每個詞的詞性由轉移概率和發射概率共同決定。

實際中可能的預測情況:
(以下數據不具真實性,單純用來舉例)

詞語 延安 供水 工程 建成 通水
正確的詞性 \ns \vn \n \v \v
轉移概率 5% 1.2% 1.5% 1.3% 1.1%
發射概率 2% 1% 2.3% 1.5% 1.6%
詞語 延安 供水 工程 建成 通水
正確的詞性 \rg \rg \rg \rg \rg
轉移概率 0.01% 0.1% 0.1% 0.1% 0.1%
發射概率 10% 10% 10% 10% 10%

  對比以上兩個表格不難發現,雖然rg的詞性序列轉移概率很小,但是發射概率相對較高,最終導致預測的結果爲rg序列。這就是HMM模型處理過程中,如果選用的平滑處理方法不當,可能會出現的偏執問題。

6、預測結果數據分析

(1)爲什麼初始階段隨着訓練樣本的增加,模型的預測效率會越來越好?
答:第一、當樣本規模較小,所訓練出來的模型在進行預測時,未知錯誤所佔的比重較大,因此導致準確率低。隨着訓練樣本的增加,未知錯誤所佔的比重降低,所以準確率提高。即所謂的“見多識廣”。第二、因爲樣本有限,所以訓練得到的模型對一些詞性的預測很大概率是錯誤的,隨着樣本增加會逐漸糾正這些錯誤的概率。
(2)爲什麼後面階段,隨着訓練樣本的增加,預測效果趨於平緩?
答:因爲很多詞是存在多種詞性即存在歧義,而如何判斷這個詞當前應該是什麼詞性就需要結合語境等因素,這就對模型提出很高的要求。二元HMM模型僅僅考慮前後詞性之間的關係,這還不足以涵蓋所有情況,因此無法解決所有歧義問題,所以最終模型會趨於平緩。
(3)爲什麼有些類型的預測錯誤,大語料的時候反而佔比大於小語料的時候?
答:因爲隨着樣本的增加,整體的錯誤率降低,但是有些類型的預測錯誤可能沒有降低,所以在大語料時這種類型的預測錯誤佔比反而提升。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章