隐马尔可夫模型问题二:模型参数求解

本文探讨了在已知观测序列的情况下如何通过Baum-Welch算法估计HMM模型参数。该算法属于EM算法的一种应用,通过迭代过程不断优化模型参数,直至收敛。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已知隐序列状态

HMM模型解决学习问题,是在已知观测序列,估计模型参数λ=[A,B,π]\lambda = [{\bf{A,B,\pi }}]λ=[A,B,π],使得P(O∣λ)P(O|\lambda )P(Oλ)最大。一般情况下,如果已知观测序列和隐藏序列,模型参数是比较容易求解的,但是对于仅仅已知观测序列,是否能求出模型参数是本节讨论的重点,主要解决方法是使用鲍姆-韦尔奇(Baum-Welch)算法。

Baum-Welch算法原理

对于给定观测序列,求解模型参数。我们将不可观测的状态数据表示为隐含数据III,可观测序的数据序列表示为OOO。此时HMM变为包含隐含数据的概率模型。Baum-Welch算法的参数可以通过EM算法学习得到。EM算法分E步和M步,E步被用来求期望, M步被用来求极大化。在E步和M步之前,首先要初始化参数,值得注意的是,不同的初始化参数,会得到不同的估计参数值,所以不存在解析解。
已知:
P(O∣λ)=∑IP(O∣I,λ)P(I∣λ)P(O|\lambda ) = \sum\limits_I {P(O|I,\lambda )} P(I|\lambda )P(Oλ)=IP(OI,λ)P(Iλ)

在E步,计算QQQ函数:
Q(λ,λˉ)=∑Ilog⁡P(O,I∣λ)P(O,I∣λˉ)Q(\lambda ,\bar \lambda ) = \sum\limits_I {\log P(O,I|\lambda )P(O,I|\bar \lambda )}Q(λ,λˉ)=IlogP(O,Iλ)P(O,Iλˉ)

上述公式中, λ\lambdaλ是极大化的模型参数,λˉ\bar \lambdaλˉ是当前模型参数的估计值。

M步:
极大化Q(λ,λˉ)Q(\lambda ,\bar \lambda )Q(λ,λˉ)函数,求模型参数λ=[A,B,π]\lambda = [{\bf{A,B,\pi }}]λ=[A,B,π]

λˉ=arg⁡max⁡λ∑Ilog⁡P(O,I∣λ)P(O,I∣λˉ)\bar \lambda = \arg {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \mathop {\max }\limits_\lambda \sum\limits_I {\log P(O,I|\lambda )P(O,I|\bar \lambda )}λˉ=argλmaxIlogP(O,Iλ)P(O,Iλˉ)

Baum-Welch算法推导

对于Q(λ,λˉ)Q(\lambda ,\bar \lambda )Q(λ,λˉ)我们可以进行如下的表示:
Q(λ,λ‾)=∑Ilog⁡πi1P(O,I∣λ‾)+∑I(∑t=1T−1log⁡aitait+1)P(O,I∣λ‾)+∑I(∑t=1Tlog⁡bit(at))P(O,I∣λ‾)\begin{array}{l} Q\left( {\lambda ,\overline \lambda } \right){\rm{ = }}\sum\limits_I {\log {\pi _{{i_1}}}P(O,I|\overline \lambda )} \\ {\kern 42pt} + \sum\limits_I {\left( {\sum\limits_{t = 1}^{T - 1} {\log {a_{{i_t}}}{a_{{i_{t + 1}}}}} } \right)P(O,I|\overline \lambda )} {\rm{ + }}\sum\limits_I {\left( {\sum\limits_{t = 1}^T {\log {b_{{i_t}}}({a_t})} } \right)P(O,I|\overline \lambda )} \end{array}Q(λ,λ)=Ilogπi1P(O,Iλ)+I(t=1T1logaitait+1)P(O,Iλ)+I(t=1Tlogbit(at))P(O,Iλ)
对上式进行极大化,由于是三个项和的形式,我们只需将每一项进行极大化,那么最终的结果就是极大化的结果。
对于第一项,可以进行如下的化简:
∑Ilog⁡πi0P(O,I∣λ‾)=∑i=1Nlog⁡πiP(O,i1=i∣λ‾)\sum\limits_I {\log {\pi _{{i_0}}}P(O,I|\overline \lambda )} {\rm{ = }}\sum\limits_{i = 1}^N {\log {\pi _i}P(O,{i_1} = i|\overline \lambda )}Ilogπi0P(O,Iλ)=i=1NlogπiP(O,i1=iλ)

πi{\pi _i}πi满足∑i=1Nπi=1\sum\limits_{i = 1}^N {{\pi _i}} = 1i=1Nπi=1的约束条件,我们可以在这里使用拉格朗日乘子法方便求得导数。拉格朗日函数如下所示:
∑i=1Nlog⁡πiP(O,i1=i∣λ‾)+γ(∑i=1Nπi−1)\sum\limits_{i = 1}^N {\log {\pi _i}P(O,{i_1} = i|\overline \lambda )} + \gamma (\sum\limits_{i = 1}^N {{\pi _i} - 1} )i=1NlogπiP(O,i1=iλ)+γ(i=1Nπi1)
令上式偏导数为0可以得到:
∂∂πi[∑i=1Nlog⁡πiP(O,i1=i∣λ‾)+γ(∑i=1Nπi−1)]=0\frac{\partial }{{\partial {\pi _i}}}\left[ {\sum\limits_{i = 1}^N {\log {\pi _i}P(O,{i_1} = i|\overline \lambda )} + \gamma (\sum\limits_{i = 1}^N {{\pi _i} - 1} )} \right] = 0πi[i=1NlogπiP(O,i1=iλ)+γ(i=1Nπi1)]=0
化简得:
P(O,i1=i∣λ‾)+γπi=0P(O,{i_1} = i|\overline \lambda ) + \gamma {\pi _i} = 0P(O,i1=iλ)+γπi=0
化简得到γ\gammaγ
γ=−P(O∣λ‾)\gamma = - P(O|\overline \lambda)γ=P(Oλ)
最终可以得到:
πi=P(O,i1=i∣λ‾)P(O∣λ‾){\pi _i} = \frac{{P(O,{i_1} = i|\overline \lambda )}}{{P(O|\overline \lambda )}}πi=P(Oλ)P(O,i1=iλ)

对于第二项,可以进行如下的化简:
∑I∑t=1T−1log⁡aitit+1P(O,I∣λ‾)=∑i=1N∑j=1N∑t=1T−1log⁡aijP(O,it=i,it+1=j∣λ‾)\sum\limits_I {\sum\limits_{t = 1}^{T - 1} {\log {a_{{i_t}{i_{t + 1}}}}P(O,I|\overline \lambda )} = \sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N {\sum\limits_{t = 1}^{T - 1} {\log {a_{ij}}P(O,{i_t} = i,{i_{t + 1}} = j|\overline \lambda )} } } } It=1T1logaitit+1P(O,Iλ)=i=1Nj=1Nt=1T1logaijP(O,it=i,it+1=jλ)
类似第1项,由于aij{a_{ij}}aij还满足 ∑j=1Naij=1\sum\limits_{j = 1}^N {{a_{ij}}} = 1j=1Naij=1。和求解πi{\pi _i}πi类似,可以利用拉格朗日乘子法并对aij{a_{ij}}aij求导,并令结果为0,可以得到aij{a_{ij}}aij的迭代表达式为:

aij=∑t=1T−1P(O,it=i,it+1=j∣λ‾)∑t=1T−1P(O,it=i∣λ‾){a_{ij}} = \frac{{\sum\limits_{t = 1}^{T - 1} {P(O,{i_t} = i,{i_{t + 1}} = j|\overline \lambda )} }}{{\sum\limits_{t = 1}^{T - 1} {P(O,{i_t} = i|\overline \lambda )} }}aij=t=1T1P(O,it=iλ)t=1T1P(O,it=i,it+1=jλ)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值