第十章-HMM模型以及相關推導

隱馬爾可夫模型(Hidden Markov Model, HMM)是可用於標註問題的統計學習模型,描述由隱藏的馬爾科夫鏈隨機生成的觀測序列的過程,屬於生成模型,是概率模型的一種。本章主要是總結HMM模型的概率計算算法、學習算法以及預測算法。HMM在語音識別、自然語言處理NLP等領域有着廣泛的應用。

概率圖模型常常是爲了描述隨機變量之間的關係(是不是獨立的),分爲有向圖和無向圖,而HMM主要用有向圖。

概率圖模型

在有向圖中,用圓圈⭕表示隨機變量,可以是一維的,也可以是多維的,既可以是離散隨機變量,也可以是連續的,⭕叫做結點,圖是由結點和邊構成的,在有向圖中就是有向邊,要描述Y受X影響的,就將X和Y連接起來,並用箭頭描述從X指向Y的方向。

隨機變量之間的關係

一個箭頭可以表示兩個隨機變量之間的關係,引入條件獨立的概念,在概率圖模型中,假設有三個隨機變量X,Y,Z,一般來說,隱變量在圖模型中用⭕表示,如果能觀察到一個變量取值的時候,用帶陰影的圓\bullet表示。在擲硬幣的例子中,第1個結果是觀察不到的,用空心圓⭕表示,第2個結果是可以觀察到的,用帶陰影的圓●表示。爲什麼要強調隱變量和觀測變量,圓是空心⭕還是陰影●會影響到隨機變量的依賴性

第一種情況

隨機變量都是空心圓,三個隨機變量都是觀測不到的。即:
P(X,Z)P(X)(Z) P(X,Z) \neq P(X)(Z)

第二種情況

Y是帶陰影的圓,隨機變量Y是可以觀測到的,可得P(X,Z|Y)=P(X|Y)P(Z|Y),從箭頭的指向看,信息是從X傳到Y,Y傳到Z,一旦將Y固定了,信息的流通相當於被Y觀察到的值堵住了,所以當觀察到Y時,X和Z就是獨立的

第三種情況

Y指向了兩邊,這個時候單看X和Z是不獨立的,滿足P(X,Z) ≠ P(X)P(Z),如果給定Y,X和Z是獨立的,滿足
P(X,ZY)=P(XY)P(ZY) P(X,Z|Y)=P(X|Y)P(Z|Y)

第四種情況

隨機變量滿足:
P(X,Z)=P(X)P(Z),P(X,ZY)P(XY)P(ZY) P(X,Z)=P(X)P(Z),P(X,Z|Y)\neq P(X|Y)P(Z|Y)

HMM模型

定義

隱馬爾科夫模型是關於時序的概率模型,描述由一個隱藏的馬爾科夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。隱藏的馬爾科夫鏈隨機生成的狀態序列稱爲狀態序列(state sequence),每個狀態生成一個觀測值,而由此生成的觀測的隨機序列稱爲觀測序列(observation sequence).

HMM是一個三元組,由初始狀態概率向量、狀態轉移概率矩陣和觀測概率矩陣決定,即:
λ=(A,B,π),πAB \lambda = (A,B,\pi),其中\pi是初始狀態概率向量,A是狀態轉移概率矩陣,B是觀測概率矩陣
定義的形式如下:
QVQ={q1,q2,q3...qN},V={v1,v2,..vM},NMITOI=(i1,i2...iT),O=(o1,o2...oT).A:A=[aij]N×Naij=P(it+1=qjit=qt),i=1,2,3...N;j=1,2,...Ntqit+1qjB:B=[bj(k)]N×Mbj(k)=P(ot=vkit=qt),k=1,2,..M;j=1,2,...Ntqjvkππ=(πi),πi=P(ij=qi),i=1,2,...Nt=1qi 設Q是所有可能的狀態的集合,V是所有可能觀測的集合。Q=\{q_1,q_2,q_3...q_N\},V=\{v_1,v_2,..v_M\},\\ 其中N是所有可能的狀態數,M是所有觀測數。\\ I是長度爲T的狀態序列,O是對應的觀測序列。I=(i_1,i_2...i_T),O=(o_1,o_2...o_T).\\ A是狀態轉移概率矩陣:\\ A=[a_{ij}]_{N \times N},其中a_{ij}=P(i_{t+1}=q_j|i_t=q_t),i=1,2,3...N;j=1,2,...N\\ 是時刻t處於狀態q_i的條件下在時刻t+1轉移到狀態q_j的概率。\\ B是觀測概率矩陣:\\ B=[b_j(k)]_{N \times M},其中,b_j(k)=P(o_t=v_k|i_t=q_t),k=1,2,..M;j=1,2,...N\\ 是在時刻t處於狀態q_j的條件下生成觀測v_k的概率。\\ \pi是初始狀態概率向量:\\ \pi=(\pi_i),其中,\pi_i=P(i_j=q_i),i=1,2,...N\\ 是在時刻t=1處於狀態q_i的概率。\\
從定義可知,隱馬爾科夫模型做了兩個基本假設:

  • 齊次馬爾可夫性假設。即假設隱藏的馬爾可夫鏈在任意時刻t的狀態只依賴於其前一個時刻的狀態,與其他時刻的狀態以及預測無關,也與時刻t無關。
    P(itit1,ot1,...i1,o1)=P(itit1),t=1,2,...T P(i_t|i_{t-1},o_{t-1},...i_1,o_1)=P(i_t|i_{t-1}),t=1,2,...T

  • 觀測獨立性假設。即假設任意時刻的觀測只依賴於該時刻的馬爾科夫鏈的狀態,與其他時刻觀測以及狀態無關。
    P(otiT,oT,oT1,oT1,...,it+1,ot+1,it,it1,ot1,...,i1,o1)=P(otit) P(o_t|i_T,o_T,o_{T-1},o_{T-1},...,i_{t+1},o_{t+1},i_{t},i_{t-1},o_{t-1},...,i_1,o_1)=P(o_t|i_t)

純粹這樣看定義,一堆的數學公式,可能看得不是很懂,那麼可以採用概率圖的方式來理解HMM模型,如圖所示:

[外鏈圖片轉存失敗(img-AS9wQj1D-1569397355722)(https://img2018.cnblogs.com/blog/842089/201909/842089-20190918152323147-1335165462.png)]

圖中的一行⭕表示隱變量的集合,稱爲狀態序列;●表示可觀測的集合,稱爲觀測序列,由圖可看出,第一個狀態變量會影響第二個狀態變量,同時還會影響第一個觀測變量,依次遞推下去,隱馬爾可夫模型從狀態變量看是一個影響一個的,可以理解成時間序列模型,其適用範圍爲文本分析,比如標註問題

三個基本問題

概率計算算法

給定模型和觀測序列,那麼計算在該模型下觀測序列出現的概率的方法有三種:直接計算法、前向算法、後向算法。

直接計算法

P(Oλ)=IP(OI,λ)P(Iλ)=i1,i2,,iTπi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)bTaT1π12Ti1,i2,,iTi1{q1,q2,...qN}Ni2NiTNNTNTO(T)2T×NT=2TNT=O(TNT) \begin{aligned} P(O|\lambda) = \sum_I P(O|I,\lambda)P(I|\lambda) = \sum_{i_1,i_2,\cdots,i_T} \pi_{i_1}b_{i_1}(o_1)a_{i_1 i_2}b_{i_2}(o_2) \cdots a_{i_{T-1} i_T}b_{i_T}(o_T) \end{aligned}\\ 首先觀察求和符號中b有T項,a有T-1項,\pi有1項,一共有2T項,求和是從i_1,i_2,\cdots,i_T不同的取值求和,\\對於i_1從狀態集合\{q_1,q_2,...q_N\}中取值有N個,i_2取值有N個……i_T取值有N個,所以求和範圍有N^T項,\\要對N^T個範圍進行求和,每一個求和範圍都需要O(T)個計算量,所以計算複雜度爲\\2T \times N^T=2TN^T=O(TN^T)。

前向算法

λOP(Oλ)(1)α1(i)=πibi(o1),i=1,2,,N(2)t=1,2,,T1αt+1(i)=[j=1Nαt(j)aji]bi(ot+1),i=1,2,,N(3)P(Oλ)=i=1NαT(i) 輸入:隱馬爾可夫模型\lambda,觀測序列O。\\ 輸出:觀測序列概率P(O|\lambda)。\\ (1)初值:\alpha_1(i)=\pi_i b_i(o_1), \quad i=1,2,\cdots,N\\ (2)遞推,對t=1,2,\cdots,T-1,\alpha_{t+1}(i)=\left[\sum_{j=1}^N \alpha_t(j) a_{ji} \right]\\ b_i(o_t+1), \quad i=1,2,\cdots,N\\(3)終止。P(O|\lambda)=\sum_{i=1}^N \alpha_T(i)

可是爲何是這樣子計算的嗎?從數學的角度來推導下具體的算法計算方式——
1.αt(i)to1,o2,,otqiαt(i)=P(o1,o2,,ot,it=qi)(λ)λo1,o2,,otP(o1,o2,,oT)P(o1,o2,,oT,iT=qi)P(o1,o2,,oT)=i=1NP(o1,o2,,oT,iT=qi)=i=1NαT(i)2.:αt+1(i)=P(o1,o2,,ot,ot+1,it+1=qi),αt(i)=P(o1,,ot,it=qi)ot+1,it+1=qi,αt+1(i)=P(o1,o2,,ot,ot+1,it+1=qi)......................=j=1NP(o1,o2,...ot,ot+1,it+1=qi,it=qj).....................=j=1NP(o1,o2,...ot,it=qj)P(ot+1it+1=qi)P(it+1=qiit=qt)P(ot+1it+1=qi)=bi(ot+1)P(it+1=qiit=qj)=ajiP(o1,o2,,ot,it=qj)=αt(j)j=1NP(o1,o2,,ot,it=qj)P(ot+1it+1=qi)P(it+1=qiit=qj)=[j=1Nαt(j)aji]bi(ot+1)αt+1(i)=[j=1Nαt(j)aji]bi(ot+1) 1.首先最終終止的那個公式的推導:\\ 將\alpha_t(i)的時刻t的觀測值o_1,o_2,\cdots,o_t及狀態值q_i,記作\alpha_t(i)=P(o_1,o_2,\cdots,o_t,i_t=q_i)(忽略\lambda的條件概率)。\\ 前向算法用來做的就是概率計算,當\lambda給定時,觀測值o_1,o_2,\cdots,o_t出現的概率爲P(o_1,o_2,\cdots,o_T),\\這是邊緣概率,而P(o_1,o_2,\cdots,o_T, i_T=q_i)是聯合概率,可得\\\displaystyle P(o_1,o_2,\cdots,o_T) = \sum_{i=1}^N P(o_1,o_2,\cdots,o_T, i_T=q_i)=\sum_{i=1}^N \alpha_T(i)。\\ 2.在遞推過程中的公式推導:\\ \because 根據定義\alpha_{t+1}(i) = P(o_1,o_2,\cdots,o_t,o_{t+1},i_{t+1}=q_i),\\對比\alpha_{t}(i)=P(o_1,\cdots,o_t,i_t=q_i)少了o_{t+1},i_{t+1}=q_i,\\ \therefore \alpha_{t+1}(i) = P(o_1,o_2,\cdots,o_t,o_{t+1},i_{t+1}=q_i) ......................聯合概率\\ =\sum_{j=1}^N P(o_1,o_2,...o_t,o_{t+1},i_{t+1}=q_i,i_t=q_j) .....................邊緣概率\\ =\sum_{j=1}^N P(o_1,o_2,...o_t,i_t=q_j)P(o_{t+1}|i_{t+1}=q_i)P(i_{t+1}=q_i|i_t=q_t)\\ 又 \because P(o_{t+1}|i_{t+1}=q_i)=b_i(o_{t+1}) \\ P(i_{t+1}=q_i|i_t=q_j)=a_{ji} \\ P(o_1,o_2,\cdots,o_t, i_t=q_j)=\alpha_t(j)\\ \displaystyle \therefore \sum_{j=1}^N P(o_1,o_2,\cdots,o_t, i_t=q_j)P(o_{t+1}|i_{t+1}=q_i)P(i_{t+1}=q_i|i_t=q_j) = \left[ \sum_{j=1}^N \alpha_t(j) a_{ji}\right] b_i(o_{t+1}) \\ \displaystyle \therefore \alpha_{t+1}(i) = \left[ \sum_{j=1}^N \alpha_t(j) a_{ji}\right] b_i(o_{t+1})

後向算法

λOP(Oλ)(1)βT(i)=1,i=1,2,,N(2)t=T1,T2,,1βt(i)=j=1Naijbj(ot+1)βt+1(j),i=1,2,,N(3)P(Oλ)=i=1Nπibi(o1)β1(i) 輸入:隱馬爾可夫模型\lambda,觀測序列O。\\ 輸出:觀測序列概率P(O|\lambda)。\\ (1)\beta_T(i)=1,\quad i=1,2,\cdots,N。\\ (2)對t=T-1,T-2,\cdots,1,\beta_t(i)=\sum_{j=1}^N a_{ij}b_j(o_{t+1})\beta_{t+1}(j), \quad i=1,2,\cdots,N\\(3)P(O|\lambda)=\sum_{i=1}^N \pi_i b_i(o_1) \beta_1(i)

學習問題

已知觀測序列,需要估計參數。和之前講過的很多模型是類似的,需要用一組訓練數據集估計模型,之前可能是估計分類超平面,常用的兩個方法:監督學習方法Baum-Welch算法,這兩種方法的區別在於哪個算法更貼近應用,這兩個方法的學習設定是不一樣的。

監督學習方法

S(O1,I1),(O2,I2),,(OS,IS)(1)aijtit+1jAijaija^ij=Aijj=1NAij,i=1,2,,N;j=1,2,,N(2)bj(k)jkBjkbj(k)b^j(k)=Bjkk=1MBjk,j=1,2,,N;k=1,2,,M(3)πiπ^iSqi 假設已給訓練數據包含S個長度相同的觀測序列和對應的狀態序列{(O_1,I_1),(O_2,I_2),\cdots,(O_S,I_S)},\\那麼可以利用極大似然估計法來估計隱馬爾可夫模型的參數。具體方法如下:\\ (1)轉移概率a_{ij}的估計。\\ 設樣本中時刻t處於狀態i時刻t+1轉移到狀態j記爲A_{ij},那麼a_{ij}的估計是:\\ \hat{a}{ij}=\frac{A{ij}}{\displaystyle \sum_{j=1}^N A_{ij}}, \quad i=1,2,\cdots,N; j=1,2,\cdots,N\\ (2)觀測概率b_j(k)的估計。\\ 設樣本中狀態爲j觀測爲k的頻數是B_{jk},那麼b_j(k)的估計是:\\\hat{b}j(k)=\frac{B{jk}}{\displaystyle \sum_{k=1}^M B_{jk}}, \quad j=1,2,\cdots,N;k=1,2,\cdots,M\\ (3)初始狀態概率\pi_i的估計\hat{\pi}_i爲S個樣本中初始狀態爲q_i的頻率。

SπSAit=qiit+1=qjaijS(i1,i2,,iT1,iT)SS(T1)qiqjaijbj(k) 觀測序列和狀態序列都有S個樣本,需要估計的參數:\\ 首先初始狀態\pi,如果直接用極大似然估計,就是看這S個樣本中在初始狀態時的各個取值的頻率。\\ 概率轉移矩陣A,前一個狀態i_t=q_i,後一個狀態i_{t+1}=q_j的概率記作a_{ij},考察在S個觀測序列中,\\每個觀測序列都是有(i_1,i_2,\cdots,i_{T-1},i_T),一共有S個這樣的馬爾可夫鏈,總計S(T-1)組,\\在這些序列組中有多少是觀測序列爲q_i,然後在這些組中,又有多少組後一項的狀態取值爲q_j,\\這樣的比例就是a_{ij}的估計。 觀測概率b_j(k)的估計也是類似的。

Baum-Welch算法(EM算法)

KaTeX parse error: Can't use function '$' in math mode at position 101: …0)},\pi_i^{(0)}$̲,得到模型$\lambda^{…

預測問算法

該算法其實就是一個標註問題,已知觀測序列和模型參數,讓計算機標註每一個觀測值的狀態,書中提出了兩個算法:近似算法(得到的結果並不是全局最優解)、維特比算法(用動態規劃思想求最優路徑)。但是最常用的還是維特比算法。

維特比算法

維特比算法是求解給定的觀測條件下,使得概率最大的狀態變量的序列預測,也就是說,求解已知觀測序列的出現的概率最大。
λ=(A,B,π)O=(o1,o2,,oT)I=(i1,i2,,iT)(1)δ1(i)=πibi(o1),i=1,2,,N ψ1(i)=0,i=1,2,,N(2)t=2,3,,Tδt(i)=max1jN[δt1(j)aji]bi(ot),i=1,2,,Nψt(i)=argmax1jN[δt1(j)aji],i=1,2,,N(3)P=max1iNδT(i) iT=max1iN[δT(i)](4)t=T1,T2,,1it=ψt+1(it+1)I=(i1,i2,,iT). 輸入:模型\lambda=(A,B,\pi)和觀測O=(o_1,o_2,\cdots,o_T)。 輸出:最優路徑I^=(i_1^,i_2^,\cdots,i_T^)。\\ (1)初始化。\delta_1(i) = \pi_i b_i(o_1),\quad i=1,2,\cdots,N \ \psi_1(i)=0,\quad i=1,2,\cdots,N\\(2)遞推,對t=2, 3,\cdots,T \delta_t(i)=\mathop{\max} \limits_{1 \leqslant j \leqslant N}\left[\delta_{t-1}(j)a_{ji} \right] b_i(o_t),\quad i=1,2,\cdots,N \\ \psi_t(i) = \mathop{\arg \max} \limits_{1 \leqslant j \leqslant N} \left[\delta_{t-1}(j)a_{ji} \right], \quad i=1,2,\cdots,N。\\(3)終止。P^=\mathop{\max} \limits_{1 \leqslant i \leqslant N} \delta_T(i) \ i_T^=\mathop{\max} \limits_{1 \leqslant i \leqslant N} \left[\delta_T(i) \right] \\(4)最優路徑回溯,對t=T-1,T-2,\cdots,1 i_t^=\psi_{t+1}(i_{t+1}^)求得最優路徑I^=(i_1^,i_2^,\cdots,i_T^).

具體的例子可以看書中的簡單例子。但是要注意的是,在求得每個時刻的觀測出現的概率的過程中,一定要記錄每個概率最大路徑的前一個狀態,還有即使在回溯的過程中,要注意通過終點逐步逆向回溯的計算

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