文章目录

  • 四、学习算法
    • 1、监督学习方法
    • 2、非监督学习方法(Baum-Welch算法)
  • 五、预测算法
    • 1、近似算法
    • 2、维特比算法
      • (1)最优路径特性
      • (2)两个变量
      • (3)维特比算法流程

隐马尔科夫模型内容较多,方便阅读,分成2个部分
上接:10_隐马尔科夫模型HMM1_统计学习方法

四、学习算法

估计模型λ=(A,B,Π)\lambda = (A,B,\Pi)λ=(A,B,Π)参数

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

1、监督学习方法

假设已给训练数据包含SSS个长度相同的观测序列和对应的状态序列{(O1,I1),(O2,I2),⋯,(ON,IN)}\{(O_1,I_1),(O_2,I_2),\cdots,(O_N,I_N)\}{(O1​,I1​),(O2​,I2​),⋯,(ON​,IN​)},那么可以用极大似然估计法来估计隐马尔科夫模型的参数。具体方法如下。

(1)转移概率axya_{xy}axy​的估计
设样本中时刻tt\spacet 处于状态xx\spacex 时刻t+1t+1t+1转移到状态yyy的频数为AxyA_{xy}Axy​,那么状态转移概率axya_{xy}axy​的估计是
a^xy=Axy∑y=1NAxy,x=1,2,⋯,N;y=1,2,⋯,N(30)\hat a_{xy} = \dfrac{A_{xy}}{\sum_{y=1}^N A_{xy}},\space x = 1,2,\cdots,N;y = 1,2,\cdots,N \tag{30}a^xy​=∑y=1N​Axy​Axy​​, x=1,2,⋯,N;y=1,2,⋯,N(30)

(2)观测概率bykb_{yk}byk​的估计
设样本中状态为yyy并观测为kkk的频数是BykB_{yk}Byk​,那么状态为yyy观测为kkk的概率bykb_{yk}byk​的估计是
b^yk=Byk∑k=1MByk,y=1,2,⋯,N;k=1,2,⋯,M(31)\hat b_{yk} = \dfrac{B_{yk}}{\sum_{k=1}^M B_{yk}},\space y=1,2,\cdots,N;k=1,2,\cdots,M \tag{31}b^yk​=∑k=1M​Byk​Byk​​, y=1,2,⋯,N;k=1,2,⋯,M(31)

(3)初始状态概率πx\pi_{x}πx​的估计π^x\hat \pi_{x}π^x​为SSS个样本中初始状态为qxq_xqx​的频数

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

2、非监督学习方法(Baum-Welch算法)

假设给定训练数据只包含SSS个长度为TTT的观测序列{O1,O2,⋯,OS}\{O_1,O_2,\cdots,O_S\}{O1​,O2​,⋯,OS​}而没有对应的状态序列,目标是学习隐马尔科夫模型λ=(A,B,Π)\lambda = (A,B,\Pi)λ=(A,B,Π)的参数。我们将观测序列数据看作观测数据OOO,状态序列数据看作不可观测的隐数据III,那么隐马尔科夫模型事实上是一个含有隐变量的概率模型
P(O∣λ)=∑IP(O∣I,λ)P(I∣λ)(32)P(O|\lambda) = \sum_{I}P(O|I,\lambda)P(I|\lambda) \tag{32}P(O∣λ)=I∑​P(O∣I,λ)P(I∣λ)(32)
它的参数学习可以由EM算法实现

(1)确定完全数据的对数似然函数

所有观测数据写成O=(o1,o2,⋯,oT)O = (o_1,o_2,\cdots,o_T)O=(o1​,o2​,⋯,oT​),所有隐数据写成I=(i1,i2,⋯,iT)I = (i_1,i_2,\cdots,i_T)I=(i1​,i2​,⋯,iT​),完全数据是(O,I)=(o1.o2,⋯,oT,i1,i2,⋯,iT)(O,I) = (o_1.o_2,\cdots,o_T,i_1,i_2,\cdots,i_T)(O,I)=(o1​.o2​,⋯,oT​,i1​,i2​,⋯,iT​)。完全数据的对数似然函数是lnP(O,I∣λ)lnP(O,I|\lambda)lnP(O,I∣λ)。
Q函数推导。
(2)EM算法的E步:极大化QQQ函数Q(λ,λˉ)Q(\lambda,\bar\lambda)Q(λ,λˉ)
argmax⁡λQ(λ,λˉ)=∑IP(I∣O,λˉ)lnP(O,I∣λ)=∑IP(O,I∣λˉ)P(O∣λˉ)lnP(O,I∣λ)=1P(O∣λˉ)∑IP(O,I∣λˉ)lnP(O,I∣λ)=argmax⁡λ∑IP(O,I∣λˉ)lnP(O,I∣λ)(33)\begin{aligned}arg\;\max_{\lambda} Q(\lambda,\bar\lambda) & = \sum_{I}P(I|O,\bar\lambda)lnP(O,I|\lambda)\\ & = \sum_{I}\dfrac{P(O,I|\bar\lambda)}{P(O|\bar\lambda)}lnP(O,I|\lambda) \\ & = \dfrac{1}{P(O|\bar\lambda)}\sum_{I}P(O,I|\bar\lambda)lnP(O,I|\lambda) \\ & = arg\;\max_{\lambda} \sum_{I}P(O,I|\bar\lambda)lnP(O,I|\lambda) \tag{33} \end{aligned}argλmax​Q(λ,λˉ)​=I∑​P(I∣O,λˉ)lnP(O,I∣λ)=I∑​P(O∣λˉ)P(O,I∣λˉ)​lnP(O,I∣λ)=P(O∣λˉ)1​I∑​P(O,I∣λˉ)lnP(O,I∣λ)=argλmax​I∑​P(O,I∣λˉ)lnP(O,I∣λ)​(33)
其中λˉ\bar\lambdaλˉ是隐马尔科夫模型参数的当前估计值,λ\lambdaλ是要极大化的隐马尔科夫模型参数 。

由式(13)有
P(O∣λ)=∑IP(O,I∣λ)=∑IP(O∣I,λ)P(I∣λ)=∑i1,i2,⋯,iTπi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbiT(oT)P(O|\lambda) = \sum_{I} P(O,I|\lambda) = \sum_{I} P(O|I,\lambda)P(I|\lambda)= \sum_{i_1,i_2,\cdots,i_T} \pi_{i_1}b_{i_1}(o_1) a_{i_1 i_2}b_{i_2}(o_2)\cdots a_{i_{T-1}\space\space i_{T}}b_{i_T}(o_T)P(O∣λ)=I∑​P(O,I∣λ)=I∑​P(O∣I,λ)P(I∣λ)=i1​,i2​,⋯,iT​∑​πi1​​bi1​​(o1​)ai1​i2​​bi2​​(o2​)⋯aiT−1​  iT​​biT​​(oT​)
于是函数Q(λ,λˉ)Q(\lambda,\bar\lambda)Q(λ,λˉ)可以写成:
Q(λ,λˉ)=∑IP(O,I∣λˉ)lnπi1+∑IP(O,I∣λˉ)∑t=1T−1lnaitit+1+∑IP(O,I∣λˉ)∑t=1Tlnbit(ot)(34)\begin{aligned} Q(\lambda,\bar\lambda) = & \sum_{I}P(O,I|\bar\lambda)ln\pi_{i_1} \\ & +\sum_{I}P(O,I|\bar\lambda)\sum_{t=1}^{T-1}ln a_{i_t\,i_{t+1}}\\ & +\sum_{I}P(O,I|\bar\lambda)\sum_{t=1}^{T}ln b_{i_t}(o_t)\tag{34} \end{aligned}Q(λ,λˉ)=​I∑​P(O,I∣λˉ)lnπi1​​+I∑​P(O,I∣λˉ)t=1∑T−1​lnait​it+1​​+I∑​P(O,I∣λˉ)t=1∑T​lnbit​​(ot​)​(34)
式中求和是对所有训练数据的序列总长度TTT进行的。

(3)EM算法的M步:极大化QQQ函数Q(λ,λˉ)Q(\lambda,\bar\lambda)Q(λ,λˉ)求模型参数A,B,ΠA,B,\PiA,B,Π

由于要极大化的参数在式(34)中单独地出现在3个项中,所以只需对各项分别极大化,式(34)中三项分别命名为Π\PiΠ式、AAA式和BBB式

1)求Π\PiΠ式即式(34)的第1项,可以写成
∑IP(O,I∣λˉ)lnπi1=∑x=1NP(O,i1=qx∣λˉ)lnπx\sum_{I}P(O,I|\bar\lambda)ln\pi_{i_1} = \sum_{x=1}^N P(O,i_1 = q_x|\bar\lambda)ln\pi_{x}I∑​P(O,I∣λˉ)lnπi1​​=x=1∑N​P(O,i1​=qx​∣λˉ)lnπx​
因为有πx\pi_xπx​满足约束条件∑x=1Nπx=1\sum_{x=1}^N \pi_x = 1∑x=1N​πx​=1,利用拉格朗日乘子法,写出拉格朗日函数:
∑x=1NP(O,i1=qx∣λˉ)lnπx+γ(∑x=1Nπx−1)\sum_{x=1}^N P(O,i_1 = q_x|\bar\lambda)ln\pi_{x} + \gamma\left( \sum_{x=1}^N \pi_x - 1\right)x=1∑N​P(O,i1​=qx​∣λˉ)lnπx​+γ(x=1∑N​πx​−1)
对其求偏导数并令结果为0
∂∂πx[∑x=1NP(O,i1=qx∣λˉ)lnπx+γ(∑x=1Nπx−1)]=0(35)\dfrac{\partial}{\partial \pi_x}\left[\sum_{x=1}^N P(O,i_1 = q_x|\bar\lambda)ln\pi_{x} + \gamma\left( \sum_{x=1}^N \pi_x - 1\right)\right] = 0 \tag{35}∂πx​∂​[x=1∑N​P(O,i1​=qx​∣λˉ)lnπx​+γ(x=1∑N​πx​−1)]=0(35)

P(O,i1=qx∣λˉ)+γπx=0P(O,i_1 = q_x|\bar\lambda) +\gamma \pi_x =0P(O,i1​=qx​∣λˉ)+γπx​=0
对xxx求和得到γ\gammaγ
∑x=1NP(O,i1=qx∣λˉ)+∑x=1Nγπx=0⟹γ=−P(O∣λˉ)\sum_{x=1}^N P(O,i_1 = q_x|\bar\lambda) +\sum_{x=1}^N \gamma \pi_x =0 \Longrightarrow \gamma = - P(O|\bar\lambda)x=1∑N​P(O,i1​=qx​∣λˉ)+x=1∑N​γπx​=0⟹γ=−P(O∣λˉ)
代入式(35)即得
πx=P(O,i1=qx∣λˉ)P(O∣λˉ)=γ1(x)(36)\pi_x = \dfrac{P(O,i_1 = q_x|\bar\lambda)}{P(O|\bar\lambda)} = \gamma_1(x) \tag{36}πx​=P(O∣λˉ)P(O,i1​=qx​∣λˉ)​=γ1​(x)(36)

  • 给定模型参数λˉ\bar\lambdaλˉ和观测OOO,在时刻1处于状态qxq_xqx​的概率γ1(x)\gamma_1(x)γ1​(x)。

2)AAA式即式(34)中的第2项,可以写成:
∑IP(O,I∣λˉ)∑t=1T−1lnaitit+1=∑x=1N∑y=1N∑t=1T−1P(O,it=qx,it+1=qy∣λˉ)lnaxy\sum_{I}P(O,I|\bar\lambda)\sum_{t=1}^{T-1}ln a_{i_t\,i_{t+1}} = \sum_{x=1}^N\sum_{y=1}^N\sum_{t=1}^{T-1}P(O,i_t = q_x,i_{t+1} = q_y|\bar\lambda)lna_{xy}I∑​P(O,I∣λˉ)t=1∑T−1​lnait​it+1​​=x=1∑N​y=1∑N​t=1∑T−1​P(O,it​=qx​,it+1​=qy​∣λˉ)lnaxy​
相似有约束条件∑y=1Naxy=1\sum_{y=1}^N a_{xy} = 1∑y=1N​axy​=1的拉格朗日乘子法可以求出

axy=∑t=1T−1P(O,it=qx,it+1=qy∣λˉ)∑t=1T−1P(O,it=qx∣λˉ)=∑t=1T−1P(O,it=qx,it+1=qy∣λˉ)/P(O∣λˉ)∑t=1T−1P(O,it=qx∣λˉ)/P(O∣λˉ)=∑t=1T−1ξt(x,y)∑t=1T−1γt(x)(37)a_{xy} = \dfrac{\sum_{t=1}^{T-1}P(O,i_t = q_x,i_{t+1} = q_y|\bar\lambda)}{\sum_{t=1}^{T-1}P(O,i_t = q_x|\bar\lambda)} = \dfrac{\sum_{t=1}^{T-1}P(O,i_t = q_x,i_{t+1} = q_y|\bar\lambda)/P(O|\bar\lambda)}{\sum_{t=1}^{T-1}P(O,i_t = q_x|\bar\lambda)/P(O|\bar\lambda)} = \dfrac{\sum_{t=1}^{T-1}\xi_t(x,y)}{\sum_{t=1}^{T-1}\gamma_t(x)}\tag{37}axy​=∑t=1T−1​P(O,it​=qx​∣λˉ)∑t=1T−1​P(O,it​=qx​,it+1​=qy​∣λˉ)​=∑t=1T−1​P(O,it​=qx​∣λˉ)/P(O∣λˉ)∑t=1T−1​P(O,it​=qx​,it+1​=qy​∣λˉ)/P(O∣λˉ)​=∑t=1T−1​γt​(x)∑t=1T−1​ξt​(x,y)​(37)

  • 给定模型λˉ\bar\lambdaλˉ和观测OOO,在时刻tt\spacet 处于状态qxq_xqx​且在时刻t+1t+1t+1处于状态qyq_yqy​的概率ξt(x,y)\xi_t(x,y)ξt​(x,y),在时刻tt\,t处于状态qxq_xqx​的概率γt(x)\gamma_t(x)γt​(x);
  • 在观测OOO下,状态qxq_xqx​转移到状态qyq_yqy​的期望值∑t=1T−1ξt(x,y)\sum_{t=1}^{T-1} \xi_t(x,y)∑t=1T−1​ξt​(x,y);
  • 在观测OOO下,由状态qxq_xqx​转移的期望值∑t=1T−1γt(x)\sum_{t=1}^{T-1} \gamma_t(x)∑t=1T−1​γt​(x)。

3)BBB式即式(34)中的第3项,可以写成:
∑IP(O,I∣λˉ)∑t=1Tlnbit(ot)=∑x=1N∑t=1TP(O,it=qx∣λˉ)lnbx(ot)\sum_{I}P(O,I|\bar\lambda)\sum_{t=1}^{T}ln b_{i_t}(o_t) = \sum_{x =1}^N \sum_{t=1}^T P(O,i_t = q_x|\bar\lambda)lnb_x(o_t)I∑​P(O,I∣λˉ)t=1∑T​lnbit​​(ot​)=x=1∑N​t=1∑T​P(O,it​=qx​∣λˉ)lnbx​(ot​)

同样用拉格朗日乘子法,有约束条件∑k=1Mbxk=1\sum_{k=1}^M b_{xk} = 1∑k=1M​bxk​=1。注意,只有在ot=vko_t = v_kot​=vk​时bx(ot)b_x(o_t)bx​(ot​)对bxkb_{xk}bxk​的偏导数才不为0,以I(ot=vk)I(o_t = v_k)I(ot​=vk​)表示。求得

bxk=∑t=1TP(O,it=qx∣λˉ)I(ot=vk)∑t=1TP(O,it=qx∣λˉ)=∑t=1TP(O,it=qx∣λˉ)I(ot=vk)/P(O∣λˉ)∑t=1TP(O,it=qx∣λˉ)/P(O∣λˉ)=∑t=1Tγt(x)I(ot=vk)∑t=1Tγt(x)(38)b_{xk} = \dfrac{\sum_{t=1}^T P(O,i_t = q_x|\bar\lambda)I(o_t = v_k)}{\sum_{t=1}^T P(O,i_t = q_x|\bar\lambda)} = \dfrac{\sum_{t=1}^T P(O,i_t = q_x|\bar\lambda)I(o_t = v_k)/P(O|\bar\lambda)}{\sum_{t=1}^T P(O,i_t = q_x|\bar\lambda)/P(O|\bar\lambda)} = \dfrac{\sum_{t=1}^T \gamma_t(x) I(o_t = v_k)}{\sum_{t=1}^T \gamma_t(x)} \tag{38}bxk​=∑t=1T​P(O,it​=qx​∣λˉ)∑t=1T​P(O,it​=qx​∣λˉ)I(ot​=vk​)​=∑t=1T​P(O,it​=qx​∣λˉ)/P(O∣λˉ)∑t=1T​P(O,it​=qx​∣λˉ)I(ot​=vk​)/P(O∣λˉ)​=∑t=1T​γt​(x)∑t=1T​γt​(x)I(ot​=vk​)​(38)

  • 给定模型λˉ\bar\lambdaλˉ和观测OOO,在时刻tt\,t处于状态qxq_xqx​的概率γt(x)\gamma_t(x)γt​(x);
  • 在观测OOO下,状态qxq_xqx​得到观测vkv_kvk​的期望值∑t=1,ot=vkTγt(x)\sum_{t=1,o_t = v_k}^T \gamma_t(x)∑t=1,ot​=vk​T​γt​(x);
  • 在观测OOO下,状态qxq_xqx​出现的期望值∑t=1Tγt(x)\sum_{t=1}^T \gamma_t(x)∑t=1T​γt​(x)。

上面求得的Π\PiΠ式、AAA式和BBB式可以结合式(27)、(28)和(29)更容易理解其意义。

五、预测算法

预测问题,也称为解码(decoding)问题。已知模型λ=(A,B,Π)\lambda = (A,B,\Pi)λ=(A,B,Π)和观测序列O=(o1,o2,⋯,oT)O = (o_1,o_2,\cdots,o_T)O=(o1​,o2​,⋯,oT​),求对给定观测序列条件概率P(I∣O)P(I|O)P(I∣O)最大的状态序列I=(i1,i2,⋯,iT)I = (i_1,i_2,\cdots,i_T)I=(i1​,i2​,⋯,iT​)。即给定观测序列,求最有可能的对应的状态序列。隐马尔科夫模型预测两种算法:近似算法和维特比算法。

1、近似算法

近似算法的想法是,在每个时刻t选择在该时刻最有可能出现的状态it∗i_t^*it∗​,从而得到一个状态序列I∗=(i1∗,i2∗,⋯,iT∗)I^* = (i_1^*,i_2^*,\cdots,i_T^*)I∗=(i1∗​,i2∗​,⋯,iT∗​),将它作为预测的结果。

给定隐马尔科夫模型λ\lambdaλ和观测序列OOO,在时刻t处于状态qxq_xqx​的概率γt(x)\gamma_t(x)γt​(x)是
γt(x)=αt(x)βt(x)P(O∣λ)=αt(x)βt(x)∑y=1Nαt(y)βt(y)(39)\gamma_t(x) = \dfrac{\alpha_t(x)\beta_t(x)}{P(O|\lambda)} = \dfrac{\alpha_t(x)\beta_t(x)}{ \sum_{y=1}^N \alpha_t(y)\beta_t(y)} \tag{39}γt​(x)=P(O∣λ)αt​(x)βt​(x)​=∑y=1N​αt​(y)βt​(y)αt​(x)βt​(x)​(39)

在每一时刻t最有可能的状态it∗i_t^*it∗​是
it∗=argmax⁡1≤x≤N[γt(x)],t=1,2,⋯,T(40)i_t^* = arg\,\max_{1\leq x \leq N}[\gamma_t(x)],\;t =1,2,\cdots,T \tag{40}it∗​=arg1≤x≤Nmax​[γt​(x)],t=1,2,⋯,T(40)
从而得到状态序列I∗=(i1∗,i2∗,⋯,iT∗)I^* = (i_1^*,i_2^*,\cdots,i_T^*)I∗=(i1∗​,i2∗​,⋯,iT∗​)。

近似算法的优点是计算简单,其缺点是不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分,即单个状态的最优并不能保证整体最优。上述方法得到的状态序列中有可能存在转移概率为0的相邻状态,即对某些x,y,axy=0x,y,a_{xy}=0x,y,axy​=0时。

2、维特比算法

维特比算法实际是用动态规划解隐马尔科夫模型预测问题,即用动态规划求概率最大路径,这时一条路径对应着一个状态序列。

(1)最优路径特性

根据动态规划原理,最优路径具有这样的特性:如果最优路径在时刻t通过结点it∗i_t^*it∗​,那么这一路经从结点it∗i_t^*it∗​到终点iT∗i_T^*iT∗​的部分路径,对于从it∗i_t^*it∗​到iT∗i_T^*iT∗​的所有可能的部分路径来说,必须是最优的

  • 依据上面的原理,只需从时刻t=1t=1t=1开始,递推地计算在时刻ttt状态为ii\,i的各条部分路径的最大概率,直至得到时刻t=Tt=Tt=T状态为ii\,i的各条路径的最大概率。时刻t=Tt=Tt=T的最大概率即为最优路径的概率P∗P^*P∗,最优路径的终结点iT∗i_T^*iT∗​也同时得到。
  • 为了找出最优路径的各个结点,从终结点iT∗i_T^*iT∗​开始,由后向前逐步求得结点iT−1∗,⋯,i1∗i_{T-1}^*,\cdots,i_1^*iT−1∗​,⋯,i1∗​,得到最优路径I∗=(i1∗,i2∗,⋯,iT∗)I^* = (i_1^*,i_2^*,\cdots,i_T^*)I∗=(i1∗​,i2∗​,⋯,iT∗​)。

为什么不在计算最大概率的时候就直接记住tt\,t时刻的概率最大的状态呢?最终求得最大概率后,最优的状态序列I∗I^*I∗不就直接求出了吗?

因为tt\,t时刻的最优状态需要t+1t+1t+1时刻来确认验证,而t+1t+1t+1时刻的状态需要t+2t+2t+2时刻验证,所以必须从最后向前才能推出最终的最优状态序列。

(2)两个变量

引入两个变量δ\deltaδ和ψ\psiψ。定义在时刻tt\,t状态为qxq_x\,qx​的所有单个路径(i1,i2,⋯,it)(i_1,i_2,\cdots,i_t)(i1​,i2​,⋯,it​)中概率最大值为
δt(x)=max⁡i1,i2,⋯,it−1P(it=qx,it−1,⋯,i1,ot,⋯,o1∣λ),x=1,2,⋯,N(41)\delta_t(x) = \max_{i_1,i_2,\cdots,i_{t-1}}P(i_t = q_x,i_{t-1},\cdots,i_1,o_t,\cdots,o_1|\lambda),\;x=1,2,\cdots,N \tag{41}δt​(x)=i1​,i2​,⋯,it−1​max​P(it​=qx​,it−1​,⋯,i1​,ot​,⋯,o1​∣λ),x=1,2,⋯,N(41)

δt(x)\delta_t(x)δt​(x)与前向概率αt(x)\alpha_t(x)αt​(x)比较

  • 前向概率是计算所有路径在时刻tt\,t状态为qxq_xqx​的概率,是计算指定观测序列OOO出现的概率;
  • δt(x)\delta_t(x)δt​(x)是计算在时刻tt\,t状态为qxq_xqx​中所有路径中的最大概率,是用于计算指定观测序列OOO对应的最大概率状态序列I∗I^*I∗。

由定义可得变量δ\deltaδ的递推公式:
δt+1(y)=max⁡i1,i2,⋯,itP(it+1=qy,it,⋯,i1,ot+1,⋯,o1∣λ)=max⁡1≤x≤N[δt(x)axy]by(ot+1),y=1,2,⋯,N;t=1,2,⋯,T−1(42)\begin{aligned}\delta_{t+1}(y)&=\max_{i_1,i_2,\cdots,i_{t}} P(i_{t+1} = q_y,i_{t},\cdots,i_1,o_{t+1},\cdots,o_1|\lambda)\\ &=\max_{1\leq x \leq N}[\delta_t(x)a_{xy}]b_y(o_{t+1}),\;y=1,2,\cdots,N;\,t = 1,2,\cdots,T-1 \tag{42} \end{aligned}δt+1​(y)​=i1​,i2​,⋯,it​max​P(it+1​=qy​,it​,⋯,i1​,ot+1​,⋯,o1​∣λ)=1≤x≤Nmax​[δt​(x)axy​]by​(ot+1​),y=1,2,⋯,N;t=1,2,⋯,T−1​(42)

定义在时刻t+1t+1\,t+1状态为qyq_yqy​的所有单个路径(i1,i2,⋯,it,qy)(i_1,i_2,\cdots,i_{t},q_y)(i1​,i2​,⋯,it​,qy​)中概率最大的路径的第ttt个结点为
ψt+1(y)=argmax⁡1≤x≤N[δt(x)axy]by(ot+1)=argmax⁡1≤x≤N[δt(x)axy],y=1,2,⋯,N(43)\begin{aligned}\psi_{t+1}(y) = & arg\;\max_{1\leq x \leq N} [\delta_{t}(x)a_{xy}]b_y(o_{t+1})\\ = & arg\;\max_{1\leq x \leq N} [\delta_{t}(x)a_{xy}],\;y = 1,2,\cdots,N\tag{43} \end{aligned}ψt+1​(y)==​arg1≤x≤Nmax​[δt​(x)axy​]by​(ot+1​)arg1≤x≤Nmax​[δt​(x)axy​],y=1,2,⋯,N​(43)

加深维特比算法的理解可以参考博客:数学之美:维特比和维特比算法。

(3)维特比算法流程

输入:模型λ=(A,b,Π)\lambda = (A,b,\Pi)λ=(A,b,Π)和观测O=(o1,o2,⋯,oT)O = (o_1,o_2,\cdots,o_T)O=(o1​,o2​,⋯,oT​);

输出:最优路径I∗=(i1∗,i2∗,⋯,iT∗)I^* = (i_1^*,i_2^*,\cdots,i_T^*)I∗=(i1∗​,i2∗​,⋯,iT∗​)。

1)初始化
δ1(x)=πxbx(o1),x=1,2,⋯,N\delta_1(x) = \pi_x b_x(o_1),\qquad x =1,2,\cdots,Nδ1​(x)=πx​bx​(o1​),x=1,2,⋯,N
ψ1(x)=0,x=1,2,⋯,N\psi_1(x) = 0,\qquad x =1,2,\cdots,Nψ1​(x)=0,x=1,2,⋯,N

2)递推。对t=1,2,⋯,T−1t = 1,2,\cdots,T-1t=1,2,⋯,T−1
δt+1(y)=max⁡1≤x≤N[δt(x)axy]by(ot+1),y=1,2,⋯,N\delta_{t+1}(y) = \max_{1\leq x \leq N}[\delta_t(x)a_{xy}]b_y(o_{t+1}),\;y=1,2,\cdots,Nδt+1​(y)=1≤x≤Nmax​[δt​(x)axy​]by​(ot+1​),y=1,2,⋯,N
ψt+1(y)=argmax⁡1≤x≤N[δt(x)axy],y=1,2,⋯,N\psi_{t+1}(y) = arg\;\max_{1\leq x \leq N} [\delta_{t}(x)a_{xy}],\;y = 1,2,\cdots,N ψt+1​(y)=arg1≤x≤Nmax​[δt​(x)axy​],y=1,2,⋯,N

3)终止
P∗=max⁡1≤y≤NδT(y)P^* = \max_{1\leq y \leq N}\delta_T(y)P∗=1≤y≤Nmax​δT​(y)
iT∗=argmax⁡1≤y≤N[δT(y)]i_T^* = arg\;\max_{1\leq y \leq N}[\delta_T(y)]iT∗​=arg1≤y≤Nmax​[δT​(y)]

4)最优路径回溯。对t=T−1,T−2,⋯,1t=T-1,T-2,\cdots,1t=T−1,T−2,⋯,1
it∗=ψt+1(it+1∗)i_t^* = \psi_{t+1}(i_{t+1}^*)it∗​=ψt+1​(it+1∗​)
求得最优路径I∗=(i1∗,i2∗,⋯,iT∗)I^* = (i_1^*,i_2^*,\cdots,i_T^*)I∗=(i1∗​,i2∗​,⋯,iT∗​)。

对于隐马尔科夫模型的学习,在学习之前没有接触过相关知识。所以说我的这篇总结很适合刚入门的小白,回过头来看我总结的大部分内容来自李航老师的统计学习方法,既然是对统计学习方法的学习总结,那么我尽可能基于书本来做总结,另外学习过程中发现书确实非常不错,只是在某些方面可能有些简化,对于刚入门的来说不那么好理解。我认为理解有困难的地方,对其进行了补充说明和图示,另外我把书中所有使用i,ji,ji,j的地方进行了替换成x,yx,yx,y,以免与状态序列III发生混淆。

这个模型感觉非常好,可以解决很多问题啊!后面在练习中进一步加深理解。
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗********************************************∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
未完待续……

参考资料

  • 统计学习方法——李航
  • 隐马尔科夫模型详解
  • 02-NLP-05-隐式马尔科夫链
  • 隐马尔可夫(HMM)、前/后向算法

10_隐马尔科夫模型HMM2_统计学习方法相关推荐

  1. 10_隐马尔科夫模型HMM1_统计学习方法

    文章目录 一.几个基本概念 1.隐马尔可夫模型 2.马尔科夫链 3.随机过程 4.马尔科夫性质 二.隐马尔科夫模型 1.隐马尔科夫模型的引入 2.隐马尔科夫模型定义 3.隐马尔科夫模型的两个假设 4. ...

  2. 隐马尔科夫模型HMM(一)HMM模型

    2019独角兽企业重金招聘Python工程师标准>>> 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理 ...

  3. 第十九课.隐马尔科夫模型

    目录 隐马尔科夫模型的结构 马尔科夫链与隐马尔科夫模型 实例 HMM的要素 模型的性质 推理问题:HMM的状态解码 隐状态解码问题 最大路径概率与维特比算法 使用维特比算法解码 实例演示 基于Pyth ...

  4. 隐马尔科夫模型之Baum-Wech算法

    隐马尔科夫模型之Baum-Wech算法 https://blog.csdn.net/u014688145/article/details/53046765 Baum-Wech算法之EM算法 https ...

  5. 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库

    1.隐马尔可夫模型HMM的应用场景,关乎于序列和状态变化的都可以.    发现java有可库,专为开发HMM,可惜只能在CSDN上有得下载.     2.jahmm是java开发隐马尔科夫模型的一个j ...

  6. 隐马尔科夫模型HMM自学 (3)

    Viterbi Algorithm 本来想明天再把后面的部分写好,可是睡觉今天是节日呢?一时情不自禁就有打开电脑.......... 找到可能性最大的隐含状态序列 崔晓源 翻译 多数情况下,我们都希望 ...

  7. 隐马尔科夫模型HMM自学 (2)

    HMM 定义 崔晓源 翻译 HMM是一个三元组 (,A,B).  the vector of the initial state probabilities;  the state transitio ...

  8. 隐马尔科夫模型HMM自学(1)

    介绍 崔晓源 翻译 我们通常都习惯寻找一个事物在一段时间里的变化规律.在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等.一个最适用的例子就是天气的预测. 首 ...

  9. 【NLP】用于语音识别、分词的隐马尔科夫模型HMM

    大家好,今天介绍自然语言处理中经典的隐马尔科夫模型(HMM).HMM早期在语音识别.分词等序列标注问题中有着广泛的应用. 了解HMM的基础原理以及应用,对于了解NLP处理问题的基本思想和技术发展脉络有 ...

最新文章

  1. java 同步包_Java并发程序设计(四)JDK并发包之同步控制
  2. C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?
  3. FTP服务器之vsftp
  4. tcpdump抓取mysql语句
  5. HDU 3501 Calculation 2
  6. sqlplus连接不上oracle,环境变量设置错误导致sqlplus 连接不上oracle
  7. c++中关于SQLite中文乱码的解决方法
  8. 机器学习都需要有哪些数学知识?
  9. mysql数据库open函数_C#访问Mysql数据库方法,以及库函数
  10. 零基础入门│带你理解Kubernetes
  11. 夏日西瓜爽肤五大妙计
  12. js 数组 实现 完全树_Flink实例(六十八):布隆过滤器(Bloom Filter)的原理和实现 - 秋华...
  13. c语言三种循环语句,C语言三种循环语句的功能等价性
  14. JS Navigator onLine 获取系统是否处于脱机模式
  15. 基于置信加权池的全卷积保证颜色恒常性
  16. 逻辑谬误_“完成”谬误
  17. mac上利用openssl命令进行软件安装包的哈希校验
  18. 小学计算机兴趣小组计划书,小学科技兴趣小组活动计划书
  19. 敏捷项目的史诗与迭代
  20. 用三种方式安装Nginx

热门文章

  1. centos7配置静态ip地址
  2. Apache Arrow 内存数据
  3. BZOJ2388: 旅行规划
  4. SQL 一次插入多条记录
  5. Android基础教程(六)之------- 参数的传递(Bundle)
  6. 【java】spring-boot源码解析之应用启动
  7. 【Linux】Linux环境的搭建
  8. 浅谈如何进行测试用例管理
  9. 使用jenkins构建并发送邮件
  10. 软件安全测试的几个原则