機器學習筆記之隱馬爾科夫模型 三

2021-08-18 07:35:27 字數 4728 閱讀 4100

假設已給訓練資料報含

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時...