假設已給訓練資料報含
s 個長度相同的觀測序列和對應的狀態序列
, 那麼可以利用極大似然估計來估計隱馬爾科夫模型的引數。方法如下:
轉移概率 ai
j 的估計
設樣本中時刻
t 處於狀態
i時刻 t+
1 轉移到狀態
j 的頻數為 ai
j, 那麼狀態轉移概率 ai
j 的估計是 â
ij=a
ij∑n
j=1,
i=1,
2,⋯,
n,j=
1,2,
⋯,n
觀測概率 bj
(k) 的估計
設樣本中狀態為
j 並觀測為
k的頻數是 bj
k , 那麼狀態為
j 觀測為
k的概率 bj
(k) 的估計是 b̂
=bjk
∑mk=
1bjk
,j=1
,2,⋯
,n;k
=1,2
,⋯,m
初始狀態概率 πi
的估計 π̂
i 為
s 個樣本中初始狀態為 qi
的頻率假設給定訓練資料只包含
s 個長度為
t的觀測序列
而沒有對應的狀態序列, 目標是學習隱馬爾科夫模型 λ=
(a,b
,π) 的引數,我們將觀測序列資料看做觀測資料
o , 狀態序列資料看做不可觀測的隱藏資料
i, 那麼隱馬爾科夫模型可以看做是乙個含有隱變數的模概率模型 p(
o|λ)
=∑ip
(o|i
,λ)p
(i|λ
) 它的引數學習可以由 em
演算法實現
演算法步驟及推導:
確定完全資料的對數似然函式
所有觀測資料寫成 o=
(o1,
o2,⋯
,ot)
,所有隱資料寫成 i=
(i1,
i2,⋯
,it)
, 完全資料是 (o
,i)=
(o1,
o2,⋯
,ot,
i1,i
2,⋯,
it) . 完全資料的對數似然函式是 lo
gp(o
,i|λ
) .em
演算法的
e 步: 求
q函式 q(
λ,λ¯
) q(
λ,λ¯
)=∑i
logp
(o,i
|λ)p
(o,i
|λ¯)
其中,λ
¯ 是隱馬爾科夫模型引數的當前估計值,
λ 是要極大化的隱馬爾科夫模型引數 p(
o,i|
λ)=π
i1bi
1(o1
)ai1
i2bi
2(o2
)⋯ai
t−1i
tbit
(ot)
於是 q 函式可以寫成: q(
λ,λ¯
)=∑i
logπ
i1p(
o,i|
λ¯)+
∑i(∑
t=1t
−1lo
gait
it+1
)p(o
,i|λ
)+∑i
(∑t=
1tlo
gbit
(ot)
)p(o
,i|λ
)式中的求和都是對所有訓練資料的序列總長度
t 進行的。em
演算法的
m 步 : 極大化
q函式, 求模型引數 a,
b,π 由於要極大化的引數在上面式子中分別單獨的出現,所以可以對各項分別極大化
對上式求偏導並令結果為0 ∂∂
πi[∑
i=1n
logπ
ip(o
,i1=
i|λ¯
)+γ(
∑i=1
nπi−
1)]=
0 注意到對 πi
求偏導時,只有當下標
i 都相同時才有偏導,否則為0 p(
o,i1
=i|λ
¯)πi
+γ=0
p(o,
i1=i
|λ¯)
+γπi
=0因為 πi
一共有
n 個可能的狀態,於是對其求偏導可以得到
n個等式,我們可以對 所有的
i 求和: ∑i
=1np
(o,i
1=i|
λ¯)+
γ∑i=
1nπi
=0因為 ∑ni
=1πi
=1,∑
ni=1
p(o,
i1=i
|λ¯)
=p(o
,|λ¯
) 帶入得 : γ=
−p(o
|λ¯)
我們將
γ 帶入 p(
o,i1
=i|λ
¯)+γ
πi=0
中 可以求出 πi
: πi=
p(o,
i1=1
|λ¯)
p(o|
λ¯)
∑i(∑t=1
t−1l
ogai
tit+
1)p(
o,i|
λ¯)=
∑i=1
n∑j=
1n∑t
=1t−
1log
aijp
(o,i
t=i,
it+1
=j|λ
¯)類似於第一項的做法,因為狀態轉移矩陣每行加和為1 所以有 ∑n
jaij
=1, 同樣用拉格朗日乘子法求解,設拉格朗日函式如下: ∑i
=1n∑
j=1n
∑t=1
t−1l
ogai
jp(o
,it=
i,it
+1=j
|λ¯)
+γ(∑
j=1n
aij−
1)對上式對 ai
j 求偏導,並令偏導結果為0:∑t
−1t=
1p(o
,it,
it+1
=j|λ
¯)ai
j+γ=
0 ∑t
=1t−
1p(o
,it,
it+1
=j|λ
¯)+γ
aij=
0 這裡對 ai
j 中的 j 求和得,且將 ∑n
j=1a
ij=1
代入得: ∑j
=1n∑
t=1t
−1p(
o,it
=i,i
t+1=
j|λ¯
)+γ∑
j=1n
aij=
0 因為對 j 求和,計算了所以關於處在
j 狀態,所以有下式 ∑t
=1t−
1p(o
,it=
i|λ¯
)+γ=
0解出
γ 並回代入,求得偏導的式子可以解得 ai
j=∑t
−1t=
1p(o
,it=
i,it
+1=j
|λ¯)
∑t−1
t=1p
(o,i
t=i|
λ¯)
這裡約束條件是 ∑m
k=1b
j(k)
=1(這裡的
m 是可能的觀測數),只有在 ot
=vk的時候,bj
(ot)
對 bj
(k) 的偏導才不為0,這裡用指示函式 i(
ot=v
k)表示, 相等為1 否則為0. 寫出拉格朗日函式: ∑j
=1n∑
t=1t
logb
j(ot
)p(o
,it=
j|λ¯
)+γ(
∑k=1
mbj(
k))=
0 對b
j(k)
求偏導得: ∑t
=1tp
(o,i
t=j|
λ¯)i
(ot=
vk)+
γbj(
k)=0
這裡對上式中的
k 求和得: ∑t
=1tp
(o,i
t=j|
λ¯)+
γ=0解出
γ 並且回代入最初求的偏導的式中解得:bj
(k)=
∑tt=
1p(o
,it=
j|λ¯
)i(o
t=vk
)∑tt
=1p(
o,it
=j|λ
¯)
馬爾科夫模型與隱馬爾科夫模型
隨機過程 是隨時間而隨機變化的過程。又稱為隨機函式。馬爾科夫模型 vmm 它描述了一類重要的隨機過程。乙個系統有有限個狀態集s 隨時間推移,該系統將同某一狀態轉移到另一狀態。q s1,s2,sn 為一隨機變數序列,隨機變數取值為狀態集s中的乙個狀態,設時間t時狀態為qt。對系統的描述通常是給出當前時...
隱馬爾科夫模型,學習筆記
1.概率計算問題,已知模型和觀測序列,計算在當前模型下觀測序列出現的概率。2.學習問題。已知觀測序列,來估計模型的引數 移概率等等 使得在該模型下已知的觀測序列出現的概率最大 極大似然 3.解碼 問題,已知模型和觀測序列,求最有可能對應的狀態序列。如果已經知道模型的話,那麼狀態轉移概率矩陣,初始狀態...
隱馬爾科夫模型
隱馬爾科夫 hiddenmarkov model 簡稱為hmm,hmm資料相當豐富,推薦參見 hmm學習最佳範例與崔曉源的部落格 一文,本文只對hmm進行簡要介紹,然後說明開源ghmm實現在linux環境的搭建,hmm的開源實現有眾多不同語言的實現。馬爾科夫模型 一階馬爾科夫模型假設為 1 t l時...