最后,我们研究第三个问题,参数估计问题。也即是给定一个观察序列O=O1O2O3...OTO=O_{1}O_{2}O_{3}...O_{T},如何根据最大似然估计来求模型的参数值?即如何调节模型μ=(S,K,A,B,π)\mu =\left ( S,K,A,B,\pi \right )的参数,使得P(Oμ)P\left ( O|\mu \right )最大?

最大似然估计

       模型的参数是指构成μ\muπi,aij,bj(k)\pi_{i},a_{ij},b_{j}(k)。最大似然估计方法可以作为HMM参数估计的一种选择。如果产生观察序列O的状态序列Q=q1q2...qTQ=q_{1}q_{2}...q_{T}已知,根据最大似然估计,HMM的参数可以通过如下公式计算:
πiˉ=δ(q1,si)\bar{\pi _{i}}=\delta (q_{1},s_{i})
aijˉ=QqiqjQqiqj=t=1T1δ(qt,si)×δ(qt+1,sj)t=1T1δ(qt,si)\bar{a_{ij}}=\frac{Q中从状态q_{i}转移到q_{j}的次数}{Q中所有从状态q_{i}转移到另一状态(包括q_{j}本身)的次数}\\=\frac{\sum_{t=1}^{T-1}\delta (q_{t},s_{i})\times \delta (q_{t+1},s_{j})}{\sum_{t=1}^{T-1}\delta (q_{t},s_{i})}
bj(k)ˉ=QqjνkQqj=t=1Tδ(qt,sj)×δ(Ot,νk)t=1Tδ(qt,sj)\bar{b_{j}(k)}=\frac{Q中从状态q_{j}输出到符号\nu _{k}的次数}{Q中到达q_{j}次数}\\=\frac{\sum_{t=1}^{T}\delta (q_{t},s_{j})\times \delta (O_{t},\nu _{k})}{\sum_{t=1}^{T}\delta (q_{t},s_{j})}
       其中,δ(x,y)\delta (x,y)为克罗奈克函数,当x=yx=y时,δ(x,y)=1\delta (x,y)=1;否则δ(x,y)=0\delta (x,y)=0νk\nu _{k}是HMM输出符号集中的第k个符号。
       但是在实际中,由于HMM中的状态序列Q是观察不到的(隐变量),因此,这种最大似然估计的方法不可行。

期望最大化(EM)

       期望最大化(EM)算法可以用于含有隐变量的统计模型的参数最大似然估计。其基本思想是,初始化时随机地给模型的参数赋值,该赋值遵循模型对参数的限制,例如,从某一状态出发的所有转移概率的和为1。给模型的参数赋初值以后,得到模型μ0\mu _{0},然后,根据μ0\mu _{0}可以得到模型中隐变量的期望值。例如,从μ0\mu _{0}得到某一状态转移到另一状态的期望次数,用期望次数来替代最大似然中的实际次数,这样可以得到模型参数的新估计值,由此得到新的模型μ1\mu _{1}。从μ1\mu _{1}又可以得到模型中隐变量的期望值,然后重新估计模型的参数,执行这个迭代过程,直到参数收敛于最大似然估计值。
       前向后向算法可以用于具体实现这种EM算法。
       给定HMM的参数μ\mu和观察序列O=O1O2O3...OTO=O_{1}O_{2}O_{3}...O_{T},在时间t的状态是sis_{i},时间t+1的状态是sjs_{j}的概率ξt(i,j)=P(qt=si,qt+1=sj,Oμ)P(Oμ)=αt(i)aijbj(Ot+1)βt+1(i)P(Oμ)=αt(i)aijbj(Ot+1)βt+1(i)i=1Nj=1Nαt(i)aijbj(Ot+1)βt+1(i)\xi _{t}(i,j)=\frac{P(q_{t}=s_{i},q_{t+1}=s_{j},O|\mu )}{P(O|\mu )}\\ =\frac{\alpha _{t}\left ( i\right )a_{ij}b_{j}(O_{t+1})\beta _{t+1}\left ( i\right )}{P(O|\mu )}\\ =\frac{\alpha _{t}\left ( i\right )a_{ij}b_{j}(O_{t+1})\beta _{t+1}\left ( i\right )}{\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{t}\left ( i\right )a_{ij}b_{j}(O_{t+1})\beta _{t+1}\left ( i\right )}
       下图给出了前向变量αt(i)\alpha _{t}(i)、后向变量βt+1(j)\beta _{t+1}(j)与概率ξt(i,j)\xi _{t}(i,j)之间的关系。
隐马尔科夫模型HMM(四) -- 参数估计问题

       给定HMM的μ\mu参数和观察序列O=O1O2O3...OTO=O_{1}O_{2}O_{3}...O_{T},在时间t位于状态sis_{i}的概率γt(i)\gamma _{t}(i)为:
γt(i)=j=1Nξt(i,j)\gamma _{t}(i)=\sum_{j=1}^{N}\xi _{t}(i,j)
       由此,μ\mu的参数可以由下面的公式重新估计:
πiˉ=P(q1=siO,μ)=γ1(i)\bar{\pi _{i}}=P(q_{1}=s_{i}|O,\mu )=\gamma _{1}(i)
aijˉ=QqiqjQqiqj=t=1T1ξt(i,j)t=1T1γt(i)\bar{a_{ij}}=\frac{Q中从状态q_{i}转移到q_{j}的期望次数}{Q中所有从状态q_{i}转移到另一状态(包括q_{j}本身)的期望次数}\\=\frac{\sum_{t=1}^{T-1}\xi _{t}(i,j)}{\sum_{t=1}^{T-1}\gamma _{t}(i)}
bj(k)ˉ=QqjνkQqj=t=1Tγt(j)×δ(Ot,νk)t=1Tγt(j)\bar{b_{j}(k)}=\frac{Q中从状态q_{j}输出到符号\nu _{k}的期望次数}{Q中到达q_{j}的期望次数}\\=\frac{\sum_{t=1}^{T}\gamma _{t}(j)\times \delta (O_{t},\nu _{k})}{\sum_{t=1}^{T}\gamma _{t}(j)}
       根据上述思路,给出前向后向算法
(1)初始化,随机地给参数πi,aij,bj(k)\pi_{i},a_{ij},b_{j}(k)赋值,使其满足如下约束条件:
i=1Nπi=1j=1Naij=1,1iNk=1Mbj(k)=1,1jM\sum_{i=1}^{N}\pi _{i}=1\\ \sum_{j=1}^{N}a_{ij}=1,1\leq i\leq N\\ \sum_{k=1}^{M}b_{j}(k)=1,1\leq j\leq M
由此得到模型μ0\mu _{0},令i=0i=0,执行下面的EM估计。
(2)EM计算:
E步骤:由模型μi\mu_{i},根据
ξt(i,j)=αt(i)aijbj(Ot+1)βt+1(i)i=1Nj=1Nαt(i)aijbj(Ot+1)βt+1(i)\xi _{t}(i,j) =\frac{\alpha _{t}\left ( i\right )a_{ij}b_{j}(O_{t+1})\beta _{t+1}\left ( i\right )}{\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{t}\left ( i\right )a_{ij}b_{j}(O_{t+1})\beta _{t+1}\left ( i\right )}
γt(i)=j=1Nξt(i,j)\gamma _{t}(i)=\sum_{j=1}^{N}\xi _{t}(i,j)计算出期望值ξt(i,j)\xi _{t}(i,j)γt(i)\gamma _{t}(i)
M-步骤:用E步骤得到的期望值,根据
πiˉ=P(q1=siO,μ)=γ1(i)\bar{\pi _{i}}=P(q_{1}=s_{i}|O,\mu )=\gamma _{1}(i)
aijˉ=t=1T1ξt(i,j)t=1T1γt(i)\bar{a_{ij}}=\frac{\sum_{t=1}^{T-1}\xi _{t}(i,j)}{\sum_{t=1}^{T-1}\gamma _{t}(i)}
bj(k)ˉ=t=1Tγt(j)×δ(Ot,νk)t=1Tγt(j)\bar{b_{j}(k)}=\frac{\sum_{t=1}^{T}\gamma _{t}(j)\times \delta (O_{t},\nu _{k})}{\sum_{t=1}^{T}\gamma _{t}(j)}
重新估计参数πi,aij,bj(k)\pi_{i},a_{ij},b_{j}(k)的值,得到模型μi+1\mu _{i+1}
(3)循环计算:
       令i=i+1i=i+1,重复执行EM计算,直到πi,aij,bj(k)\pi_{i},a_{ij},b_{j}(k)收敛。
       HMM在自然语言处理研究中有着非常广泛的应用。除了上述讨论的理论问题外,在实际应用中还有若干实现技术上的问题需要注意。例如多个概率连乘引起的浮点数下溢问题。在维特比算法中只涉及到乘法运算和求最大值问题,因此可以对概率相乘的算式取对数运算,使得乘法运算变成加法运算,这样一方面避免了浮点数下溢的问题,另一方面,提高了运算速度。在前向后向算法中,也经常采用如下对数运算的方法判断参数πi,aij,bj(k)\pi_{i},a_{ij},b_{j}(k)是否收敛:
logP(Oμi+1)logP(Oμi)<ϵ|logP(O|\mu _{i+1}) - logP(O|\mu _{i})|<\epsilon
其中,ϵ\epsilon为一个足够小的实数值。

相关文章:

  • 2021-05-08
  • 2021-12-22
  • 2022-01-22
  • 2021-07-05
  • 2021-04-20
  • 2021-05-15
猜你喜欢
  • 2021-09-04
  • 2021-11-19
  • 2021-05-24
  • 2021-06-22
相关资源
相似解决方案