隱馬爾可夫模型(HMM)
1、模型背景
現實生活中很多事情的發生都是有規律可循的,即表現出來的結果,受到某些“隱藏”因素的影響。舉個例子,某個人事業成功與否,這與他自身是否努力有一定關係的。其表現出來的狀態是成功或者失敗,而隱藏的影響因素爲努力與否。對於類似這類問題可以通過統計學的方法,計算表現結果爲X的情況下,隱藏狀態爲Y的概率即P(Y∣X)。利用這個概率可以將給定的表現結果X,標註上其最有可能對應的隱藏狀態Y。這就是機器學習中樣本標註的過程。
貝葉斯公式:
P(A∣B)=P(B)P(AB)=P(B)P(B∣A)P(A)(1)
X={x1,x2,⋯,xn}Y={y1,y2,⋯,yn}
P(Y∣X)=P(y1,y2,...,yn∣xi,x2,⋯,xn)=P(x1,x2,⋯,xn)P(x1,x2,...,xn∣y1,y2,⋯,yn)P(y1,y2,⋯,yn)∝P(x1,x2,...,xn∣y1,y2,⋯,yn)P(y1,y2,⋯,yn)
其中
P(y1,y2,⋯,yn)=P(y1)P(y2,⋯,yn∣y1)=P(y1)P(y2∣y1)P(y3,⋯,yn∣y1,y2)=P(y1)P(y2∣y1)P(y3∣y1,y2)P(y4,⋯,yn∣y1,y2,y3)=P(y1)P(y2∣y1)P(y3∣y1,y2)⋯P(yi∣y1,⋯,yi−1)P(yi+1,⋯,yn∣y1,⋯,yi)=P(y1)i=2∏nP(yi∣y1,⋯,yi−1)
假設隱藏狀態yi僅與前一狀態yi−1有關(即齊次性假設),而與其他狀態無關,則
P(y1)i=2∏nP(yi∣y1,⋯,yi−1)≈P(y1)i=2∏nP(yi∣yi−1)(2)
而
P(x1,x2,...,xn∣y1,y2,⋯,yn)=P(x1∣y1,⋯,yn)P(x2,⋯,xn∣x1,y1,⋯,yn)=P(x1∣y1,⋯,yn)P(x2∣x1,y1,⋯,yn)P(x3,⋯,xn∣x1,x2,y1,⋯,yn)=P(x1∣y1,⋯,yn)P(x2∣x1,y1,⋯,yn)⋯P(xi∣x1,⋯,xi−1,y1,⋯,yn)P(xi+1,⋯,xn∣x1,⋯,xi,y1,⋯,yn)=i=1∏nP(xi∣x1,⋯,xi−1,y1,⋯,yn)
假設當前的表現xi僅與當前的隱藏狀態yi有關,與其他時刻的表現及隱藏狀態無關(獨立性假設),則
i=1∏nP(xi∣x1,⋯,xi−1,y1,⋯,yn)≈i=1∏nP(xi∣yi)(3)
結合公式(2)和公式(3)則有如下關係:
P(y1,y2,...,yn∣xi,x2,⋯,xn)∝i=1∏nP(xi∣yi)P(yi∣yi−1)(4)
公式(4)需滿足一個初始條件,中當i=1時,P(y1∣y0)=P(y1)。公式(4)所代表的模型即爲隱馬爾可夫模型。
2、模型定義
隱馬爾可夫模型是關於時序的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測從而產生觀測隨機序列的過程。隱藏的馬爾可夫鏈隨機生成的狀態的序列,稱爲狀態序列(state sequence);每個狀態生成一個觀測,而由此產生的觀測的隨機序列,稱爲觀測序列(observation sequence)。序列的每一個位置又可以看作是一個時刻。
隱馬爾可夫模型由初始概率分佈、狀態轉移概率分佈以及觀測概率分佈確定。隱馬爾可夫模型的定義如下:
設Q是所有可能的狀態的集合,V是所有可能的觀測的集合:
Q={q1,q2,⋯,qN}, V={v1,v2,⋯,vM}
其中,N是可能的狀態數,M是可能的觀測數。
I 是長度爲 T 的狀態序列,O是對應的觀測序列:
I={i1,i2,⋯,iT}, O={o1,o2,⋯,oT}
A是狀態轉移概率矩陣:
A=[aij]N×N
其中,
aij=P(it+1=qj∣it=qi), i=1,2,⋯,N; j=1,2,⋯,N
代表在t時刻處於qi的條件下在t+1時刻轉移到狀態qj的概率。
B代表觀測矩陣:
B=[bj(k)]N×M
其中,
bj(k)=P(ot=vk∣it=qj) j=1,2,⋯,N; k=1,2,⋯,M
代表在t時刻處於qj的條件下生成觀測vk的概率。
π是初始狀態概率向量:
π=(πi)
其中,
πi=P(i1=qi) i=i,2,⋯,N
代表t=1的時刻,狀態爲qi的概率。
隱馬爾可夫模型由初始狀態概率向量π、狀態轉移概率矩陣A和觀測概率矩陣B決定。π和A決定狀態序列,B決定觀測序列。因此,隱馬爾可夫模型λ可以用三元符號表示,即
λ=(A,B,π)
A,B,π稱位隱馬爾可夫模型的三要素。
狀態轉移概率矩陣A與初始狀態概率向量π確定了隱藏的馬爾可夫鏈,生成不可觀測的狀態序列。觀測概率矩陣B確定瞭如何從狀態生成觀測,與狀態序列綜合確定瞭如何產生觀測序列。
前面背景介紹中涉及到的兩種基本假設,下面在這裏進行詳細介紹:
(1)齊次馬爾可夫假設,即假設隱藏的馬爾可夫鏈在任意時刻t的狀態只依賴於其前一時刻的狀態,與其他時刻的狀態及觀測無關,也與時刻t無關:
P(it∣it−1,ot−1,⋯,i1,o1)=P(it∣it−1), t=1,2,⋯,T(5)
(2)觀測獨立性假設,即假設任意時刻的觀測只依賴於該時刻的馬爾可夫鏈的狀態,與其他觀測及狀態無關:
P(ot∣iT,oT,iT−1,oT−1,⋯,it+1,ot+1,it,it−1,ot−1,⋯,i1,o1)=P(ot∣it)(6)
隱馬爾可夫模型可以用於標註,這是狀態對應着標記。標註問題是給定觀測的序列預測其對應的標記序列。可以假設標註問題的數據是由隱馬爾可夫模型生成的。這樣我們可以利用隱馬爾可夫模型的學習與預測算法進行標註。
本節內容可以用一句話簡單概括,一個定義,二個假設,三個要素。
3、模型的三個基本問題
3.1、概率計算問題
給定模型λ=(A,B,π)和觀測序列O=(o1,o2,⋯,oT),計算在模型λ下觀測序列O出現的概率P(O∣λ)。
1、直接計算法
給定模型λ=(A,B,π)和觀測序列O=(o1,o2,⋯,oT),計算觀測序列O出現的概率P(O∣λ)。最直接的方法是按照概率公式直接計算。列舉所有可能的長度爲T的狀態序列I=(i1,i2,⋯,iT),求各個狀態序列I與觀測序列O=(o1,o2,⋯,oT)的聯合概率P(O,I∣λ),然後對所有可能的狀態序列求和,得到P(O∣λ)。
狀態序列I=(i1,i2,⋯,iT)的概率是:
P(I∣λ)=πi1ai1i2ai2i3⋯aiT−1iT(7)
對固定的狀態序列I=(i1,i2,⋯,iT),生成觀測序列O=(o1,o2,⋯,oT)的概率是:
P(O∣I,λ)=bi1(o1)bi2(o2)⋯biT(oT)(8)
O和I同時出現的聯合概率爲
P(O,I∣λ)=P(O∣I,λ)P(I∣λ)=πi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbiT(oT)(9)
然後,對所有可能的狀態序列I求和,得到觀測序列O的概率P(O∣λ),即
P(O∣λ)=I∑P(O∣I,λ)P(I∣λ)=i1,i2,⋯,iT∑πi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbiT(oT)(10)
按照第2小節所介紹的,所有狀態的集合爲Q,集合內的元素個數爲N。那麼對於長度爲T的狀態序列I,其對應的任意時刻都有N種選擇,因此對於狀態序列I就有NT種選擇。這樣不難看出,公式(10)計算量很大,時間複雜度是O(TNT),這種算法基本不可行。
2、前向算法
定義(前向概率) 給定隱馬爾可夫模型λ,定義到時刻t部分觀測序列爲o1,o2,⋯,ot且狀態爲qi的概率爲前向概率,記作
αt(i)=P(o1,o2,⋯,ot,it=qi∣λ)(11)
算法(觀測序列概率的前向算法)
輸入:隱馬爾可夫模型λ,觀測序列O;
輸出:觀測序列概率P(O∣λ)。
(1)初值
α1(i)=πibi(o1), i=1,2,⋯,N(12)
(2)遞推 對t=1,2,⋯,T−1,
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1)(13)
(3)終止
P(O∣λ)=i=1∑NαT(i)(14)
前向算法,步驟(1)初始化前向概率,是初始時刻的狀態i1=qi和觀測o1的聯合概率。步驟(2)是前向概率的遞推公式,計算時刻t+1部分觀測序列爲o1,o2,⋯,ot,ot+1且在時刻t+1處於狀態qi的前向概率,如圖1所示。在公式(13)的方括號裏,既然αt(j)是到時刻t觀測到o1,o2,⋯,ot並在時刻t處於狀態qj的前向概率,那麼乘積αt(j)aji就是到時刻t觀測到o1,o2,⋯,ot並在時刻t處於狀態qj而在時刻t+1到狀態qi的聯合概率。對這個乘積在時刻t的所有可能的N個狀態qj求和,其結果就是到時刻t觀測爲o1,o2,⋯,ot並在時刻t+1處於狀態qi的聯合概率。方括號裏面的觀測概率bi(ot+1)的乘積恰好是到時刻t+1觀測到o1,o2,⋯,ot,ot+1並在時刻t+1處於狀態qi的前向概率αt+1(i)。步驟(3)給出P(O∣λ)的計算公式。因爲
αT(i)=P(o1,o2,⋯,oT,iT=qi∣λ)
所以
P(O∣λ)=i=1∑NαT(i)
圖 1 前向概率的遞推公式
如圖2所示,前向算法實際是基於“狀態序列的路徑結構”遞歸計算
P(O∣λ)的算法。前向算法高效的關鍵是其局部計算前向概率,然後利用路徑結構將前向概率“遞歸”到全局,得到
P(O∣λ)。具體地,在時刻
t=1,計算
α1(i)的
N個值
(i=1,2,⋯,N);在各個時刻
t=1,2,⋯,T−1,計算
αt+1的
N個值
(i=1,2,⋯,N),而且每個
αt+1的計算利用前一時刻
N個
αt(j)。減少計算量的原因在於每一次計算直接引用前一個時刻的計算結果,避免重複計算。這樣,利用前向概率計算
P(O∣λ)的計算量是
O(N2T)階的。
圖 2 觀測序列路徑結構
前向遞推公式證明:
已知聯合概率公式如下:
P(ABC)=P(AB∣C)P(A∣B)P(B)
基於上面公式證明如下:
∵ αt(j)aji=P(o1,⋯,ot,it=qj∣λ)P(it+1=qi∣it=qj,λ)=P(o1,⋯,ot∣it=qj,λ)P(it=qj∣λ)P(it+1=qi∣it=qj,λ)=P(o1,⋯,ot∣it=qj,λ)P(it=qj,it+1=qi∣λ)=P(o1,⋯,ot∣it=qj,it+1=qi,λ)P(it=qj,it+1=qi∣λ)=P(o1,⋯,ot,it=qj,it+1=qi∣λ)
∴ [j=1∑Nαt(j)aji]bt+1(i)=j=1∑N[P(o1,⋯,ot,it=qj,it+1=qi∣λ)]P(ot+1∣it+1=qi,λ)=P(o1,⋯,ot,it+1=qi∣λ)P(ot+1∣it+1=qi,λ)=P(o1,⋯,ot∣it+1=qi,λ)P(it+1=qi∣λ)P(ot+1∣it+1=qi,λ)=P(o1,⋯,ot∣it+1=qi,λ)P(ot+1,it+1=qi∣λ)=P(o1,⋯,ot∣ot+1,it+1=qi,λ)P(ot+1,it+1=qi∣λ)=P(o1,⋯,ot,ot+1,it+1=qi∣λ)=αt+1(i)
3、後向算法
定義(後向概率) 給定隱馬爾可夫模型λ,定義在時刻t狀態爲qi的條件下,從t+1到T的部分觀測序列爲ot+1,ot+2,⋯,oT的概率爲後向概率,記作
βt(i)=P(ot+1,ot+2,⋯,oT∣it=qi,λ)(15)
算法(觀測序列概率的後向算法)
輸入:隱馬爾可夫模型λ,觀測序列O;
輸出:觀測序列概率P(O∣λ)。
(1)初值
βT(i)=1, i=1,2,⋯,N
代表t=T時刻,任意狀態的後向概率均爲1。
(2)遞推 對t=T−1,T−2,⋯,1
βt(i)=j=1∑Naijbj(ot+1)βt+1(j), i=1,2,⋯,N(16)
(3)終止
P(O∣λ)=i=1∑Nπibi(o1)β1(i)(17)
步驟(1)初始化後向概率,對最終時刻的所有狀態qi規定βT(i)=1。步驟(2)是後向概率的遞推公式。如圖3所示,爲了計算在時刻t狀態爲qi條件下時刻t+1之後的觀測序列爲Ot+1,ot+2,⋯,oT的後向概率βt(i),只需考慮在時刻t+1所有可能的N個狀態qj的轉移概率(即aij),以及在此狀態下的觀測ot+1的觀測概率(即bj(ot+1)項),然後考慮狀態qj之後的觀測序列的後向概率(即βt+1(j)項)。步驟(3)求P(O∣λ)的思路與步驟(2)一致,只是初始概率πi代替轉移概率。
圖 3 後向概率遞推公式
後向遞推公式證明:
j=1∑Naijbj(ot+1)βt+1(j)=j=1∑NP(it+1=qj∣it=qi,λ)P(ot+1∣it+1=qj,λ)P(ot+2,⋯,oT∣it+1=qj,λ)=j=1∑NP(it+1=qj∣it=qi,λ)P(ot+1∣it+1=qj,λ)P(ot+2,⋯,oT∣ot+1,it+1=qj,λ)=j=1∑NP(it+1=qj∣it=qi,λ)P(ot+1,ot+2,⋯,oT∣it+1=qj,λ)=j=1∑NP(it+1=qj∣it=qi,λ)P(ot+1,ot+2,⋯,oT∣it=qi,it+1=qj,λ)=j=1∑NP(ot+1,ot+2,⋯,oT,it+1=qj∣it=qi,λ)=P(ot+1,ot+2,⋯,oT∣it=qi,λ)=βt(i)
利用前向概率和後向概率的定義可以將觀測序列概率P(O∣λ)統一寫成
P(O∣λ)=i=1∑Nj=1∑Nαt(i)aijbj(ot+1)βt+1(j)(18)
4、一些概率與期望值的計算
利用前向概率和後向概率,可以得到關於單個狀態和兩個狀態概率的計算公式。
- 定義模型λ和觀測O,在時刻t處於狀態qi的概率。記
γt(i)=P(it=qi∣O,λ)=P(O∣λ)P(it=qi,O∣λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)(19)
- 給定模型λ和觀測O,在時刻t處於狀態qi且在時刻t+1處於qj的概率。記
ξt(i,j)=P(it=qi,it+1=qj∣O,λ)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)αt(i)aijbj(ot+1)βt+1(j)(20)
- 將γt(i)和ξt(i,j)對各個時刻t求和,可以得到一些有用的期望值。
(1)在觀測O下狀態i出現的期望值:
t=1∑Tγt(i)(21)
(2)在觀測O下由狀態i轉移的期望值:
t=1∑T−1γt(i)(22)
(3)在觀測O下由狀態i轉移到狀態j的期望值:
t=1∑T−1ξt(i,j)(23)
3.2、學習問題
隱馬爾可夫模型的學習,根據訓練數據是包括觀測序列和對應的狀態序列還是隻有觀測序列,可以分別由監督學習與無監督學習實現。
- 監督學習方法
已知觀測序列O=(o1,o2,⋯,oT),估計模型λ=(A,B,π)參數,使得在該模型下觀測概率P(O∣λ)最大。即用極大似然估計的方法估計參數。
1、轉移概率aij的估計
設樣本中時刻t處於狀態i時刻t+1轉移到狀態j的頻數爲Aij,那麼狀態轉移概率爲
aij=∑j=1NAijAij i=1,2,⋯,N; j=1,2,⋯,N(24)
2、觀測概率bj(k)的估計
設樣本中狀態爲j並觀測爲k的頻數是Bjk,那麼狀態j觀測爲k的概率估計是:
bj(k)=∑k=1MBjkBjk j=1,2,⋯,N; k=1,2,⋯,M(25)
3、初始狀態概率πi的估計爲S個樣本中初始狀態爲qi的頻率。
- 無監督學習方法
暫時略過
3.3、預測問題(解碼問題)
已知模型λ=(A,B,π)和觀測序列O=(o1,o2,⋯,oT),求對給定觀測序列條件概率P(I∣λ)最大的狀態序列I=(i1,i2,⋯,iT)。即給定觀測序列,求最有可能的對應的狀態序列。
- 近似算法
近似算法的想法是,在每個時刻t選擇在該時刻最有可能出現的狀態it∗,從而得到一個狀態序列I∗(i1∗,i2∗,⋯,iT∗),將它作爲預測的結果。
給定隱馬爾可夫模型λ和觀測序列O,在時刻t處於狀態qi的概率γt(i)是
γt(i)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
在每一個時刻t最有可能的狀態it∗是
it∗=arg1≤i≤Nmax[γt(i)], t=1,2,⋯,T(26)
從而得到狀態序列I∗(i1∗,i2∗,⋯,iT∗)。
近似算法的優點就是計算簡單,其缺點是不能保證預測的狀態序列整體是最有可能的狀態序列,因爲預測的狀態序列可能有實際不發生的部分。事實上,上述方法得到的狀態序列中有可能存在轉移概率爲0的相鄰狀態,即對於某些i,j,aij=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)爲什麼有些類型的預測錯誤,大語料的時候反而佔比大於小語料的時候?
答:因爲隨着樣本的增加,整體的錯誤率降低,但是有些類型的預測錯誤可能沒有降低,所以在大語料時這種類型的預測錯誤佔比反而提升。