隐马尔科夫模型(三)学习算法

隐马尔科夫模型的学习,根据训练数据时包括观测序列和对应的状态序列还是只有观测序列,可以分别有监督学习和非监督学习实现。

监督学习方法

假设已给的训练数据中,包含S个长度相同的观测序列和对应的状态序列
{ ( O 1 , I 1 ) , ( O 2 , I 2 ) … … ( O S , I S ) } \{(O_1,I_1),(O_2,I_2)……(O_S,I_S)\} {(O1,I1),(O2,I2)(OS,IS)},那么可以利用极大似然估计法估计隐马尔科夫模型的参数,具体如下:
1)转移概率 a i j a_{ij} aij的估计
设样本中时刻t处于状态i时刻t+1转移到状态j的频数为A_{ij},那么状态转移概率 a i j a_{ij} aij的估计为:
a i j = A i j ∑ j = 1 N A i j a_{ij}=\frac{A_{ij}}{\displaystyle\sum_{j=1}^{N}A_{ij}} aij=j=1NAijAij

2)观测概率 b j ( k ) b_j(k) bj(k)的估计
设样本中状态为j并观测为k的频数为 B j k B_{jk} Bjk,那么状态为j观测为k的概率 b j ( k ) b_j(k) bj(k)的估计是:
b j ( k ) = B j k ∑ k = 1 M B j k b_j(k)=\frac{B_{jk}}{\displaystyle\sum_{k=1}^{M}B_{jk}} bj(k)=k=1MBjkBjk

3)初始状态概率 π i π_i πi的估计为S个样本中初始状态为 q i q_i qi的频率。

由于监督学习需要使用训练数据,而人工标注训练数据的代价很高,有时就会使用非监督学习方法。

鲍尔-韦尔奇算法

假设给定训练数据只包含S个长度为T的观测序列 { O 1 , O 2 … O S } \{O_1,O_2…O_S\} {O1,O2OS},而没有对应的状态序列,目标是学习隐马尔科夫模型 λ = ( A , B , π ) λ=(A,B,π) λ=(A,B,π),我们将观测序列数据看做观测数据O,状态序列看做不可观测的隐数据 I I I,那么隐马尔科夫模型事实上是一个含有隐变量的概率模型。
P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) P(O|λ)=\displaystyle\sum_{I}P(O|I,λ)P(I|λ) P(Oλ)=IP(OI,λ)P(Iλ)
他的参数可又EM算法实现。
1)确定完全数据的对数似然函数
所有的观测数据写成 O = ( o 1 , o 2 , … … o T ) O=(o_1,o_2,……o_T) O=(o1,o2,oT),所有隐数据写成 I = ( i 1 , i 2 … … i T ) I={(i_1,i_2……i_T)} I=(i1,i2iT)完全数据时 ( O , I ) = ( o 1 , o 2 , … … o T , i 1 , i 2 … … i T ) (O,I)=(o_1,o_2,……o_T,i_1,i_2……i_T) (O,I)=(o1,o2,oT,i1,i2iT)
完全数据的对数似然函数是 l o g P ( O , I ∣ λ ) logP(O,I|λ) logP(O,Iλ)

E步:求 Q Q Q函数
(完全数据的对数似然函数log(Y,Z|θ)关于在给定观测数据Y和当前参数 θ ( i ) θ^{(i)} θ(i)下对未观测数据Z的条件概率分布 P ( Z ∣ Y , θ ( i ) ) P(Z|Y,θ^{(i)}) P(ZY,θ(i))的期望。)

Q ( λ , λ ′ ) = ∑ I l o g P ( O , I ∣ λ ) P ( I ∣ O , λ ′ ) Q(λ,λ')=\displaystyle\sum_{I}logP(O,I|λ)P(I|O,λ') Q(λ,λ)=IlogP(O,Iλ)P(IO,λ)
( λ ′ λ' λ是隐马尔科夫模型参数的当前估计值,λ是要极大化的隐马尔科夫模型参数)
M步:极大化Q函数

λ ∗ = a r g m a x ∑ I l o g P ( O , I ∣ λ ) P ( I ∣ O , λ ′ ) λ^*=argmax\displaystyle\sum_{I}logP(O,I|λ)P(I|O,λ') λ=argmaxIlogP(O,Iλ)P(IO,λ)

联合分布的概率计算如下:
P ( O , I ∣ λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) … a i T − 1 i T b i T ( o T ) P(O,I|λ)=π_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)…a_{i_{T-1}i_T}b_{i_T}(o_T) P(O,Iλ)=πi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)

针对E步:
Q ( λ , λ ′ ) = ∑ I l o g P ( O , I ∣ λ ) P ( I ∣ O , λ ′ ) Q(λ,λ')=\displaystyle\sum_{I}logP(O,I|λ)P(I|O,λ') Q(λ,λ)=IlogP(O,Iλ)P(IO,λ)

其中,由于 P ( I ∣ O , λ ′ ) = P ( O , I ∣ λ ′ ) P ( O ∣ λ ′ ) P(I|O,λ')=\frac{P(O,I|λ')}{P(O|λ')} P(IO,λ)=P(Oλ)P(O,Iλ),而 P ( O ∣ λ ′ ) P(O|λ') P(Oλ)是常数,因此我们要极大化的式子等价于
λ ∗ = a r g m a x ∑ I l o g P ( O , I ∣ λ ) P ( I , O ∣ λ ′ ) λ^*=argmax\displaystyle\sum_{I}logP(O,I|λ)P(I,O|λ') λ=argmaxIlogP(O,Iλ)P(I,Oλ)

将上面的 P ( O , I ∣ λ ) P(O,I|λ) P(O,Iλ)的表达式带入我们需要极大化的式子,可得
于是:

λ ∗ = a r g m a x ∑ I l o g π i 1 P ( I , O ∣ λ ′ ) + ∑ I ( ∑ t = 1 T − 1 l o g a i t i t + 1 ) P ( I , O ∣ λ ′ ) + ∑ I ( ∑ t = 1 T l o g b i t ( o t ) ) P ( I , O ∣ λ ′ ) λ^*=argmax\displaystyle\sum_{I}logπ_{i_1}P(I,O|λ')+\displaystyle\sum_{I}(\displaystyle\sum_{t=1}^{T-1}loga_{i_ti_{t+1}})P(I,O|λ')+\displaystyle\sum_{I}(\displaystyle\sum_{t=1}^{T}logb_{i_t}(o_t))P(I,O|λ') λ=argmaxIlogπi1P(I,Oλ)+I(t=1T1logaitit+1)P(I,Oλ)+I(t=1Tlogbit(ot))P(I,Oλ) (目标函数)

要求隐藏模型参数 λ = ( A , B , π ) λ=(A,B,π) λ=(A,B,π),我们只需要对上式分别对 A , B , π A,B,π A,B,π求导即可得到我们更新的模型参数 λ ′ λ' λ

观测上式发现要极大化的参数分别单独的出现在三个项中,所以只需对各项分别最大化。

π ∗ = a r g m a x ∑ I l o g π i P ( I , O ∣ λ ′ ) = a r g m a x ∑ i = 1 N l o g π i P ( O , i 1 = i ∣ λ ′ ) π^*=argmax\displaystyle\sum_{I}logπ_{i}P(I,O|λ')=argmax\displaystyle\sum_{i=1}^{N}logπ_{i}P(O,i_1=i|λ') π=argmaxIlogπiP(I,Oλ)=argmaxi=1NlogπiP(O,i1=iλ)
由于 π i π_{i} πi还满足 ∑ i = 1 N π i = 1 \displaystyle\sum_{i=1}^{N}π_{i}=1 i=1Nπi=1
因此根据拉格朗日乘子法,我们可以得到 π i π_{i} πi要极大化的拉格朗日函数为:
∑ i = 1 N l o g π i P ( O , i 1 = i ∣ λ ′ ) + γ ( ∑ i = 1 N π i − 1 ) \displaystyle\sum_{i=1}^{N}logπ_{i}P(O,i_1=i|λ')+γ(\displaystyle\sum_{i=1}^{N}π_{i}-1) i=1NlogπiP(O,i1=iλ)+γ(i=1Nπi1)
对其求偏导并令结果为0得到:

P ( O , i 1 = i ∣ λ ′ ) + γ π i = 0 P(O,i_1=i|λ')+γπ_i=0 P(O,i1=iλ)+γπi=0(化简后的)

令i分别等于从1到N,从上式可以得到N个式子,对这N个式子求和可得:

P ( O ∣ λ ′ ) + γ = 0 P(O|λ')+γ=0 P(Oλ)+γ=0得出 γ = − P ( O ∣ λ ′ ) γ=-P(O|λ') γ=P(Oλ)

π i = P ( O , i 1 = i ∣ λ ′ ) P ( O ∣ λ ′ ) π_i=\frac{P(O,i_1=i|λ')}{P(O|λ')} πi=P(Oλ)P(O,i1=iλ)

由贝叶斯公式: P ( O , i 1 = i ∣ λ ′ ) P ( O ∣ λ ′ ) = P ( i 1 = i ∣ O , λ ′ ) = γ 1 ( i ) \frac{P(O,i_1=i|λ')}{P(O|λ')}=P(i_1=i|O,λ')=γ_1(i) P(Oλ)P(O,i1=iλ)=P(i1=iO,λ)=γ1(i)

目标函数的第二项可以写成:
∑ I ( ∑ t = 1 T − 1 l o g a i t i t + 1 ) P ( I , O ∣ λ ′ ) = ∑ i = 1 N ∑ j = 1 N ∑ t = 1 T − 1 l o g a i j P ( O , i t = i , i t + 1 = j ∣ λ ′ ) \displaystyle\sum_{I}(\displaystyle\sum_{t=1}^{T-1}loga_{i_ti_{t+1}})P(I,O|λ')=\displaystyle\sum_{i=1}^{N}\displaystyle\sum_{j=1}^{N}\displaystyle\sum_{t=1}^{T-1}loga_{ij}P(O,i_t=i,i_{t+1}=j|λ') I(t=1T1logaitit+1)P(I,Oλ)=i=1Nj=1Nt=1T1logaijP(O,it=i,it+1=jλ)

同时具有约束条件: ∑ j = 1 N a i j = 1 \displaystyle\sum_{j=1}^{N}a_{ij}=1 j=1Naij=1,则拉格朗日函数为:
∑ i = 1 N ∑ j = 1 N ∑ t = 1 T − 1 l o g a i j P ( O , i t = i , i t + 1 = j ∣ λ ′ ) + γ ( ∑ j = 1 N a i j − 1 ) \displaystyle\sum_{i=1}^{N}\displaystyle\sum_{j=1}^{N}\displaystyle\sum_{t=1}^{T-1}loga_{ij}P(O,i_t=i,i_{t+1}=j|λ')+γ(\displaystyle\sum_{j=1}^{N}a_{ij}-1) i=1Nj=1Nt=1T1logaijP(O,it=i,it+1=jλ)+γ(j=1Naij1)

a i j 求 导 可 得 a_{ij}求导可得 aij
∑ t = 1 T − 1 P ( O , i t = i , i t + 1 = j ∣ λ ′ ) + γ a i j = 0 \displaystyle\sum_{t=1}^{T-1}P(O,i_t=i,i_{t+1}=j|λ')+γa_{ij}=0 t=1T1P(O,it=i,it+1=jλ)+γaij=0
令j 等于从1到N,可以得到N个式子,相加可得
∑ t = 1 T − 1 P ( O , i t = i ∣ λ ′ ) + γ = 0 \displaystyle\sum_{t=1}^{T-1}P(O,i_t=i|λ')+γ=0 t=1T1P(O,it=iλ)+γ=0

则: γ = − ∑ t = 1 T − 1 P ( O , i t = i ∣ λ ′ ) γ=-\displaystyle\sum_{t=1}^{T-1}P(O,i_t=i|λ') γ=t=1T1P(O,it=iλ)

a i j = ∑ t = 1 T − 1 P ( O , i t = i , i t + 1 = j ∣ λ ′ ) ∑ t = 1 T − 1 P ( O , i t = i ∣ λ ′ ) a_{ij}=\frac{\displaystyle\sum_{t=1}^{T-1}P(O,i_t=i,i_{t+1}=j|λ')}{\displaystyle\sum_{t=1}^{T-1}P(O,i_t=i|λ')} aij=t=1T1P(O,it=iλ)t=1T1P(O,it=i,it+1=jλ)

= ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) =\frac{\displaystyle\sum_{t=1}^{T-1}ξ_t(i,j)}{\displaystyle\sum_{t=1}^{T-1}γ_t(i)} =t=1T1γt(i)t=1T1ξt(i,j)

3)针对第三项
∑ I ( ∑ t = 1 T l o g b i t ( o t ) ) P ( I , O ∣ λ ′ ) = ∑ j = 1 N ∑ t = 1 T l o g b j ( o t ) ) P ( O , i t = j ∣ λ ′ ) \displaystyle\sum_{I}(\displaystyle\sum_{t=1}^{T}logb_{i_t}(o_t))P(I,O|λ')=\displaystyle\sum_{j=1}^{N}\displaystyle\sum_{t=1}^{T}logb_j(o_t))P(O,i_t=j|λ') I(t=1Tlogbit(ot))P(I,Oλ)=j=1Nt=1Tlogbj(ot))P(O,it=jλ)

同样用拉格朗日乘子法,约束条件为 ∑ k = 1 M b j ( k ) = 1 \displaystyle\sum_{k=1}^{M}b_j(k)=1 k=1Mbj(k)=1

∑ j = 1 N ∑ t = 1 T l o g b j ( o t ) ) P ( O , i t = j ∣ λ ′ ) + γ ( ∑ k = 1 M b j ( k ) − 1 ) \displaystyle\sum_{j=1}^{N}\displaystyle\sum_{t=1}^{T}logb_j(o_t))P(O,i_t=j|λ')+γ(\displaystyle\sum_{k=1}^{M}b_j(k)-1) j=1Nt=1Tlogbj(ot))P(O,it=jλ)+γ(k=1Mbj(k)1)

b j ( o t ) b_j(o_t) bj(ot)求导,注意只有当 o t = v k 时 , b j ( o t ) 对 b j ( k ) o_t=v_k时,b_j(o_t)对b_j(k) ot=vkbj(ot)bj(k)的偏导数才不为0,以 I ( o t = v k ) I(o_t=v_k) I(ot=vk)表示:
∑ t = 1 T P ( O , i t = j ∣ λ ′ ) I ( o t = v k ) + γ b j ( k ) = 0 \displaystyle\sum_{t=1}^{T}P(O,i_t=j|λ')I(o_t=v_k)+γb_j(k)=0 t=1TP(O,it=jλ)I(ot=vk)+γbj(k)=0
令 k 取1到M个值,然后相加
∑ t = 1 T P ( O , i t = j ∣ λ ′ ) + γ = 0 \displaystyle\sum_{t=1}^{T}P(O,i_t=j|λ')+γ=0 t=1TP(O,it=jλ)+γ=0
得到 γ = − ∑ t = 1 T P ( O , i t = j ∣ λ ′ ) γ=-\displaystyle\sum_{t=1}^{T}P(O,i_t=j|λ') γ=t=1TP(O,it=jλ)

则: b j ( k ) = ∑ t = 1 T P ( O , i t = j ∣ λ ′ ) I ( o t = v k ) ∑ t = 1 T P ( O , i t = j ∣ λ ′ ) b_j(k)=\frac{\displaystyle\sum_{t=1}^{T}P(O,i_t=j|λ')I(o_t=v_k)}{\displaystyle\sum_{t=1}^{T}P(O,i_t=j|λ')} bj(k)=t=1TP(O,it=jλ)t=1TP(O,it=jλ)I(ot=vk)

分子分母同时除以 P ( O ∣ λ ′ ) P(O|λ') P(Oλ)

b j ( k ) = ∑ t = 1 T P ( i t = j ∣ O , λ ′ ) I ( o t = v k ) ∑ t = 1 T P ( i t = j , O ∣ λ ′ ) b_j(k)=\frac{\displaystyle\sum_{t=1}^{T}P(i_t=j|O,λ')I(o_t=v_k)}{\displaystyle\sum_{t=1}^{T}P(i_t=j,O|λ')} bj(k)=t=1TP(it=j,Oλ)t=1TP(it=jO,λ)I(ot=vk)

b j ( k ) = ∑ t = 1 T γ t ( j ) I ( o t = v k ) ∑ t = 1 T γ t ( j ) b_j(k)=\frac{\displaystyle\sum_{t=1}^{T}γ_t(j)I(o_t=v_k)}{\displaystyle\sum_{t=1}^{T}γ_t(j)} bj(k)=t=1Tγt(j)t=1Tγt(j)I(ot=vk)

Baum-Welch算法流程:
输入:观察数据 O = ( o 1 , o 2 , … … o T ) O=(o_1,o_2,……o_T) O=(o1,o2,oT)
输出:隐马尔科夫模型参数

1)初始化
对n=0,选取 a i j ( 0 ) , b j ( k ) ( 0 ) , π i ( 0 ) , 得 到 模 型 参 数 λ ( 0 ) = ( A ( 0 ) , B ( 0 ) , π ( 0 ) ) a_{ij}^{(0)},b_j(k)^{(0)},π_i^{(0)},得到模型参数λ^{(0)}=(A^{(0)},B^{(0)},π^{(0)}) aij(0),bj(k)(0),πi(0),λ(0)=(A(0),B(0),π(0))

2)递推,对于n=1,2……

a i j ( n + 1 ) = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) a_{ij}^{(n+1)}=\frac{\displaystyle\sum_{t=1}^{T-1}ξ_t(i,j)}{\displaystyle\sum_{t=1}^{T-1} γ_t(i)} aij(n+1)=t=1T1γt(i)t=1T1ξt(i,j)

b j ( k ) ( n + 1 ) = ∑ t = 1 T γ t ( j ) I ( o t = v k ) ∑ t = 1 T γ t ( j ) b_j(k)^{(n+1)}=\frac{\displaystyle\sum_{t=1}^{T}γ_t(j)I(o_t=v_k)}{\displaystyle\sum_{t=1}^{T}γ_t(j)} bj(k)(n+1)=t=1Tγt(j)t=1Tγt(j)I(ot=vk)

π i ( n + 1 ) = γ 1 ( i ) π_i^{(n+1)}=γ_1(i) πi(n+1)=γ1(i)

右端各值根据观察数据 O = ( o 1 , o 2 , … … o T ) O=(o_1,o_2,……o_T) O=(o1,o2,oT)和模型 λ ( n ) = ( A ( n ) , B ( n ) , π ( n ) ) λ^{(n)}=(A^{(n)},B^{(n)},π^{(n)}) λ(n)=(A(n),B(n),π(n))计算。

3)终止。得到模型参数 λ ( n + 1 ) = ( A ( n + 1 ) , B ( n + 1 ) , π ( n + 1 ) ) λ^{(n+1)}=(A^{(n+1)},B^{(n+1)},π^{(n+1)}) λ(n+1)=(A(n+1),B(n+1),π(n+1))

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值