HMM
隱馬爾可夫模型(hidden Markov model, HMM)是可用於標註問題的統計學模型,是生成模型。html
本章節內容參考李航博士的《統計學習方法》
本章節添加了一些結論性結果的推導過程。python
1. 從一個天然語言處理的例子開始
例若有三個個句子:
句子一:我/名詞 看見/動詞 貓/名詞
句子二:貓/名詞 是/動詞 可愛的/形容詞
句子三:我/名詞 是/動詞 可愛的/形容詞
通常只能觀察到具體的詞,因此像"我 看見 貓 …"是觀測集合,而詞性如"名詞 動詞 形容詞 …"是狀態序列web
設
Q是全部可能的狀態集合,
V是全部可能的觀測集合:算法
Q={q1,q2,...,qN},V={v1,v2,...,vM}編程
其中, N是可能的狀態數,M是可能的觀測數。app
例如:
Q={名詞,動詞,形容詞},V={我,看見,貓,是,可愛的},N=3,M=5dom
I是長度爲
T的狀態序列,
O是對應的觀測序列:svg
I={i1,i2,...,iT},O={o1,o2,...,oT}函數
例如:
I=(名詞,動詞,名詞),O=(我,看見,貓)學習
A是狀態轉移矩陣:
A=[aij]N∗N(1)
其中,
aij=p(it+1=qj∣it=qi),i=1,2,...,N;j=1,2,...,N(2)
例如:
轉態轉移機率 |
名詞 |
動詞 |
形容詞 |
名詞 |
0 |
1 |
0 |
動詞 |
1/3 |
0 |
2/3 |
形容詞 |
1/3 |
1/3 |
1/3 |
B是觀測機率矩陣,也就是發射矩陣:
B=[bj(k)]N∗M(3)
其中,
bj(k)=p(ot=vk∣it=qj),k=1,2,...,M;j=1,2,...,N(4)
例如:
觀測矩陣機率 |
我 |
看見 |
貓 |
是 |
可愛的 |
名詞 |
1 |
0 |
1 |
0 |
0 |
動詞 |
0 |
1 |
0 |
1 |
0 |
形容詞 |
0 |
0 |
0 |
0 |
1 |
π是初始狀態機率向量:
π=(πi)(5)
其中,
πi=p(i1=qi),i=1,2,...,N(6)
A,B和
π是HMM的參數,用
λ表示:
λ=(A,B,π)(7)
例如:
隱馬爾可夫的三個基本問題
1.機率計算問題。給定模型
λ=(A,B,π)和觀測序列
O=(o1,o2,...,oT),計算在已知模型參數的狀況下,觀測序列的機率,即
p(O∣λ)。
2.學習問題。已知觀測序列
O=(o1,o2,...,oT),估計模型參數
λ=(A,B,π),使
p(O∣λ)最大。
3.預測問題,也稱解碼問題。已知模型
λ=(A,B,π)和
O=(o1,o2,...,oT),求條件機率最大
p(I∣O)最大的狀態序列
I=(i1,i2,...,iT)。
2. 機率預測問題
機率問題預測用直接計算法,計算複雜度高,能夠採用動態規劃形式的前向和後向算法下降計算複雜度。
爲了表示方便,記:
(o1:t)=(o1,o2,...,on);(ot:T)=(ot,ot+1,...,oT)
2.1 前向算法
接下來就是解前向機率
p(it,o1:t∣λ):
p(it,o1:t∣λ)=it−1∑p(it−1,it,o1:t−1,ot∣λ)=it−1∑p(ot∣it−1,it,o1:t−1,λ)p(it∣it−1,o1:t−1,λ)p(it−1,o1:t−1∣λ)
由隱馬爾科夫的條件獨立性假設可得:
p(ot∣it−1,it,o1:t−1,λ)=p(ot∣it,λ)
p(it∣it−1,o1:t−1,λ)=p(it∣it−1,λ)
故
p(it,o1:t∣λ)=it−1∑p(ot∣it,λ)p(it∣it−1,λ)p(it−1,o1:t−1∣λ)=[it−1∑p(it−1,o1:t−1∣λ)p(it∣it−1,λ)]p(ot∣it,λ)
設:
αt+1(i)=p(o1:t+1,it+1=qi∣λ)(8)
且:
p(it+1=qi∣it=qj,λ)]=aji
p(ot+1∣it+1,λ)=bi(ot+1)
則:
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1)(9)
因此前向算法就可迭代進行。
前向算法:
1.初值
α1(i)=πibi(o1)
2.遞推
t=1,2,...,T−1
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1)
3.終止
p(O∣λ)=i=1∑NαT(i)
2.2 後向算法
後向算法解決後向機率
p(ot+1:T∣it,λ):
p(ot+1:T∣it,λ)=it+1∑p(it+1,ot+1,ot+2:T∣it,λ)=it+1∑p(ot+2:T∣it+1,it,ot+1,λ)p(ot+1∣it+1,it,λ)p(it+1∣it,λ)
由隱馬爾科夫的條件獨立假設得:
p(ot+2:T∣it+1,it,ot+1,λ)=p(ot+2:T∣it+1,λ)
p(ot+1∣it+1,it,λ)=p(ot+1∣it+1,λ)
設:
βt(i)=p(ot+1:T∣it=qi,λ)(10)
又:
p(it+1=qj∣it=qi,λ)=aij
p(ot+1∣it+1=qj,λ)=bj(ot+1)
則:
βt(i)=j=1∑Naijbj(ot+1)βt+1(i)(11)
後向算法:
(1)
βT(i)=1
(2) 對t=T-1,T-2,…,1
βt(i)=j=1∑Naijbj(ot+1)βt+1(i)
(3)
p(O∣λ)=i=1∑Nπibi(o1)β1(i)
2.3 一些機率與指望值
這兩個指望值都是後面EM算法用到的中間參量
1.計算
t時刻處於狀態
qi的機率。
機率計算問題是計算
p(O∣λ),則有:
p(O∣λ)=it∑p(O,it∣λ)
依據隱馬爾科夫的獨立性假設:
p(ot+1:T∣it,o1:t,λ)=p(ot+1:T∣it,λ)
因此:
p(O∣λ)=it∑p(O,it∣λ)=it∑p(ot+1:T∣it,o1:t,λ)p(it,o1:t∣λ)=it∑p(ot+1:T∣it,λ)p(it,o1:t∣λ)
又有:
αt(i)=p(o1:t,it=qi∣λ)(12)
βt(i)=p(ot+1:T∣it=qi,λ)(13)
故:
p(O,it=qi∣λ)=p(ot+1:T∣it=qi,λ)p(it=qi,o1:t∣λ)=αt(i)βt(i)
p(O∣λ)=it∑αt(i)βt(i)
設:
γt(i)=p(it=qi∣O,λ)
因而能夠獲得:
γt(i)=p(it=qi∣O,λ)=p(O∣λ)p(it=qi,O∣λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)(14)
2.計算計算
t時刻處於狀態
qi且計算
t+1時刻處於狀態
qj的機率
p(O∣λ)=it∑it+1∑p(O,it,it+1∣λ)=it∑it+1∑p(o1:t,ot+1,ot+2:T,it,it+1∣λ)=it∑it+1∑p(ot+2:T∣o1:t,ot+1,it,it+1,λ)p(ot+1∣o1:t,it,it+1,λ)p(it+1∣it,o1:t,λ)p(it,o1:t∣λ)
由隱馬爾科夫的獨立性假設可得:
p(O∣λ)=it∑it+1∑p(ot+2:T∣it+1,λ)p(ot+1∣it+1,λ)p(it+1∣it,λ)p(it,o1:t∣λ)
設:
ξt(i,j)=p(it=qi,it+1=qj∣O,λ)
又有公式(2)(4)(12)(13)
得:
ξt(i,j)=p(O∣λ)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)(15)
3. 學習問題
3.1 監督學習
若是有標記好狀態序列的樣本,那就太好辦了,直接將接個矩陣統計的各個維度定義後進行統計就能夠了。統計過程當中注意機率之和爲一的約束。
3.2 無監督學習
若是沒有標記狀態序列的樣本,能夠用Baum-Welch算法(EM算法)實現。
已知:包含
S個長度爲
T的觀測序列的觀測序列
{O1,O2,...,OS}
目標:學習隱馬爾可夫模型的參數
λ=(A,B,π)
記觀測數據
O,隱數據
I,那麼隱馬爾可夫模型能夠表示爲:
p(O∣λ)=I∑p(O∣I,λ)p(I∣λ)
E步:
由於對
λ而言,
1/p(O∣λ)是常數項,因此
Q(λ,λ)=EI[logp(O,I∣λ)∣O,λ]=I∑logp(O,I∣λ)p(I∣O,λ)=I∑logp(O,I∣λ)p(O∣λ)p(I,O∣λ)=I∑logp(O,I∣λ)p(I,O∣λ)
將機率計算問題2.1小姐中前向算法的遞歸公式展開就能夠獲得:
p(O,I∣λ)=πi1bi1(o1)ai1i2bi2(o2)...aiT−1iTbiT(oT)=πi1[t=1∏T−1aitit+1][t=1∏Tbit(ot)]
因而:
Q(λ,λ)=I∑logπi1p(O,I∣λ)+I∑(t=1∑T−1aitit+1)p(O,I∣λ)+I∑(t=1∑Tbit(ot))p(O,I∣λ)(16)
特此說明隱變量
隱馬爾可夫模型的隱變量就是觀測序列對應的狀態序列,因此隱變量能夠用(14)式的變量表示
後面在M步中更新模型參數的時候也用到了(15)式,是否是就說明隱變量是兩個,其實不是的,這兒只是爲了表示的方便和算法的方便。
也就是在E步中,用
γ和
ξ表示隱變量,只是爲了編程和表示的便利,這兩個變量在E步中信息是重複的。
M步:
1.求解
πi
由(15)式可得:
L(πi1)=I∑logπi1p(O,I∣λ)=i∑Nlogπi1p(O,i1=i∣λ)
又由於
πi知足約束條件
∑i=1Nπi1=1,利用拉格朗日乘子法,寫出拉格朗日函數:
i=1∑Nlogπip(O,i1=i∣λ)+γ(i=1∑Nπi−1)
對其求偏導而且令其結果爲0得:
∂πi∂[i=1∑Nlogπip(O,i=i∣λ)+γ(i1=1∑Nπi−1)]=0(17)
得:
p(O,i1=i∣λ)+γπi=0
獲得:
πi=−λp(O,i1=i∣λ)
帶入
∑i=1Nπi1=1的:
−λ=i=1∑Np(O,i1=i∣λ)=p(o∣λ)
求得並有公式(14):
πi=p(o∣λ)p(O,i1=i∣λ)=γ1(i)(18)
2.求解
aij:
L(aij)=I∑(t=1∑T−1aitit+1)p(O,I∣λ)=i=1∑N(t=1∑T−1aitit+1)(j=1∑Np(O,it=i,it+1=j∣λ))=i=1∑Nj=1∑Nt=1∑T−1aijp(O,it=i,it+1=j∣λ)
應用約束條件
∑j=1Naij=1,用拉格朗日乘子法能夠求出:
i=1∑Nj=1∑Nt=1∑T−1aijp(O,it=i,it+1=j∣λ)+λ(j=1∑Naij−1)
對上式求騙到並等於0獲得:
∂aij∂[i=1∑Nj=1∑Nt=1∑T−1aijp(O,it=i,it+1=j∣λ)+λ(j=1∑Naij−1)]=0
獲得:
t=1∑T−1p(O,it=i,it+1=j∣λ)+λaij=0
因此:
aij=−λ∑t=1T−1p(O,it=i,it+1=j∣λ)
將上式帶入
∑j=1Naij=1:
−λ=j=1∑Nt=1∑T−1p(O,it=i,it+1=j∣λ)=t=1∑T−1p(O,it=i∣λ)
故得:
aij=∑t=1T−1p(O,it=i∣λ)∑t=1T−1p(O,it=i,it+1=j∣λ)=∑t=1T−1p(O,it=i∣λ)/p(o∣λ)∑t=1T−1p(O,it=i,it+1=j∣λ)/p(o∣λ)
將(14)和(15)帶入的:
aij=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)(19)
3.求解
bjk:
L(bjk)=I∑(t=1∑Tbit(ot))p(O,I∣λ)=j=1∑Nt=1∑Tbj(ot)p(O,it=j∣λ)
在約束條件
∑k=1Mbj(k)=1的拉格朗日乘子法:
j=1∑Nt=1∑Tbj(ot)p(O,it=j∣λ)+λ(k=1∑Mbj(k)−1)
對其求偏導得:
∂bj(k)∂[j=1∑Nt=1∑Tbj(ot)p(O,it=j∣λ)+λ(k=1∑Mbj(k)−1)]=0
由於只有在
ot=vk時偏導纔不會等於0,以
I(ot=vk)表示,則:
t=1∑Tp(O,it=j∣λ)I(ot=vk)+λbj(ot)I(ot=vk)=0
bj(ot)I(ot=vk)能夠寫做
bj(k),故:
bj(k)=−λ∑t=1Tp(O,it=j∣λ)I(ot=vk)
將上式帶入
∑k=1Mbj(k)=1得:
−λ=k=1∑Mt=1∑Tp(O,it=j∣λ)I(ot=vk)=t=1∑Tp(O,it=j∣λ)
獲得:
bj(k)=∑t=1Tp(O,it=j∣λ)∑t=1Tp(O,it=j∣λ)I(ot=vk)
又有(14)式可得:
bj(k)=∑t=1Tγt(j)∑t=1,ot=vkTγt(j)(20)
EM算法總結:
E步:
γt(i)=p(it=qi∣O,λ)=p(O∣λ)p(it=qi,O∣λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
ξt(i,j)=p(O∣λ)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)
M步:
πi=p(o∣λ)p(O,i1=i∣λ)=γ1(i)
aij=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)
bj(k)=∑t=1Tγt(j)∑t=1,ot=vkTγt(j)
4. 預測問題(解碼問題)
用維特比算法進行求解:
已知:模型
λ=(A,B,π)和
O=(o1,o2,...,oT)
求:條件機率最大
p(I∣O,λ)最大的狀態序列
I=(i1,i2,...,iT)
由於
p(O)是一個定值,因此:
Imaxp(I∣O,λ)=Imaxp(I,O∣λ)/p(O∣λ)=Imaxp(I,O∣λ)
定義在時刻
t狀態爲
i的全部單個路徑
(i1,i2,...,it)中機率最大值爲:
δt(i)=i1,i2,...,it−1maxp(it=i,it−1:i1,ot:1∣λ)
遞推推導:
p(it+1=i,it:1,ot+1:1∣λ)=p(it+1=i,it,it−1:1,ot+1,ot:1∣λ)=p(ot+1∣it+1=i,it,ot:1,λ)p(it+1=i∣it,it−1:1,ot:1,λ)p(it,it−1:1,ot:1∣λ)=p(ot+1∣it+1=i,λ)p(it+1=i∣it,λ)p(it,it−1:1,ot:1∣λ)
故:
δt+1(i)=i1,i2,...,it−1maxp(it+1=i,it:1,ot+1:1∣λ)=1≤j≤Nmax[δt(j)aji]bi(ot+1)(21)
定義在時刻
t狀態爲
i的全部單個路徑
(i1,i2,...,it−1)中機率最大的第
t−