隐马尔科夫模型(HHM)原理详解


隐马尔科夫模型(Hidden Markov Model,HHM)是一种有向图模型,属于生成式模型,考虑联合概率分布。

HHM有两组变量,第一组是状态变量 I = { i 1 , i 2 , . . . . . , i T } I = \{i_1, i_2,....., i_T\} I={i1,i2,.....,iT} i t i_t it表示第t时刻的状态,通常假定状态变量是不可被观测的、隐藏的,这应该也是名字的由来吧;

第二组变量是观测变量, O = { o 1 , o 2 , . . . . , o T } O = \{o_1, o_2,....,o_T\} O={o1,o2,....,oT} o t o_t ot表示第t时刻的观测值。

为了更好地理解,我们这是假设O是离散变量,并且假定O的取值范围为 V = v 1 , v 2 , . . . , v M V={v_1, v_2,...,v_M} V=v1,v2,...,vM

还有一个状态I的枚举值,即不同时刻的状态是在 Q = { q 1 , q 2 , . . . . . , q N } Q=\{q_1, q_2,.....,q_N\} Q={q1,q2,.....,qN}之间转换的。

一、马尔科夫链

首先,在了解HHM之前,我们需要知道**马尔科夫链:**在任一时刻t,观测变量的取值 o t o_t ot仅依赖于当前的状态变量 i t i_t it,与其他时刻的状态变量及观测变量无关;同时,当前的状态值 i t i_t it仅依赖于前一个时刻的状态 i t − 1 i_{t-1} it1,与状态无关。

如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iBqvDHCb-1588164657546)(C:\Users\hong\Desktop\博客\CRF\image-20200414220141950.png)]

二、隐马尔科夫模型原理

HHM就是基于这种马尔科夫链的,即基于以上的假设,所以它的联合概率分布为:

P ( o 1 , i 1 , . . . , o T , i T ) = P ( i 1 ) P ( o 1 ∣ i 1 ) ∏ i = 2 T P ( i i ∣ i i − 1 ) P ( o i ∣ i i ) P(o_1,i_1,...,o_T,i_T) = P(i_1)P(o_1|i_1)\prod_{i=2}^T P(i_i|i_{i-1})P(o_i|i_i) P(o1,i1,...,oT,iT)=P(i1)P(o1i1)i=2TP(iiii1)P(oiii)

这就是HHM的模型结构了。一个模型肯定还包含参数,机器学习的本质就是找到一组最优的参数,使得模型的拟合效果最好,HHM也不例外。

那么,HHM的参数包括以下3组:

  1. 状态转移概率A: a i j = P ( i t + 1 = q j ∣ i t = q i ) , 1 < = i , j < = N a_{ij} = P(i_{t+1}=q_j|i_t=q_i), 1<=i,j<=N aij=P(it+1=qjit=qi),1<=i,j<=N,即t时刻状态为 q i q_i qi时,t+1时刻状态为 q j q_j qj的概率
  2. 输出观测概率B: b j ( k ) = P ( o t = q k ∣ i t = q j ) , 1 < = j < = N , 1 < = k < = M b_j(k) = P(o_t=q_k|i_t=q_j), 1<=j<=N,1<=k<=M bj(k)=P(ot=qkit=qj),1<=j<=N,1<=k<=M,即t时刻的状态为 q i q_i qi时,观测值为 o j o_j oj的概率
  3. 初设状态概率 π i \pi_i πi π = ( π 1 , π 2 , . . . , π N ) , 1 < = i < = N \pi = (\pi_1, \pi_2,...,\pi_N), 1<=i<=N π=(π1,π2,...,πN),1<=i<=N,即初设时刻各状态出现的概率。

那么,给定一个隐马尔科夫模型,它产生观测序列的步骤如下 { o 1 , o 2 , . . . . , o T } \{o_1, o_2,....,o_T\} {o1,o2,....,oT}

(1) 当t = 1时,根据初设状态概率 π \pi π选择初设状态 i 1 i_1 i1

(2) 根据状态 i t i_t it和输出观测概率B选择观测值 o t o_t ot

(3) 根据状态 i t i_t it和状态转移概率A确定 i t + 1 i_{t+1} it+1

(4) 当t < T,令t = t + 1,并跳转至第2步,否则终止,观测序列已全部生产完毕。

三个基本问题

  1. 概率计算问题。给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = { o 1 , o 2 , . . . . , o T } O = \{o_1, o_2,....,o_T\} O={o1,o2,....,oT},计算观测序列O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)
  2. 学习问题。已知观测序列 O = { o 1 , o 2 , . . . . , o T } O = \{o_1, o_2,....,o_T\} O={o1,o2,....,oT},估计模型参数 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π),使得观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)最大
  3. 预测问题。给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = { o 1 , o 2 , . . . . , o T } O = \{o_1, o_2,....,o_T\} O={o1,o2,....,oT},求对给定观测序列条件概率P(I|O)最大的隐藏状态 I = { i 1 , i 2 , . . . . . , i T } I = \{i_1, i_2,....., i_T\} I={i1,i2,.....,iT}

三、概率计算

1. 前向算法

给定隐马尔科夫模型 λ \lambda λ,至时刻t的观测序列为 { o 1 , o 2 , . . . . , o t } \{o_1, o_2,....,o_t\} {o1,o2,....,ot},且状态为 q i q_i qi的概率为前向概率:

α t ( i ) = P ( o 1 , o 2 , . . . . , o t , i t = q i ∣ λ ) \alpha_t(i)=P(o_1, o_2,....,o_t,i_t=q_i|\lambda) αt(i)=P(o1,o2,....,ot,it=qiλ)

我们可以通过递推的方式求得前向概率 α t ( i ) \alpha_t(i) αt(i)及观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ),具体的算法步骤如下:

(1) 时刻t=1, α 1 ( i ) = π i b i ( o 1 ) , i = 1 , 2 , . . . , N \alpha_1(i)=\pi_ib_i(o_1),i=1,2,...,N α1(i)=πibi(o1),i=1,2,...,N

(2) 对于时刻 t = 1 , 2 , . . . , T − 1 t=1,2,...,T-1 t=1,2,...,T1

α t + 1 ( i ) = [ ∑ j = 1 N α t ( j ) a j i ] b i ( o t + 1 ) , i = 1 , 2 , . . . , N \alpha_{t+1}(i)=\left[\sum_{j=1}^N\alpha_t(j)a_{ji}\right]b_i(o_{t+1}),i=1,2,...,N αt+1(i)=[j=1Nαt(j)aji]bi(ot+1),i=1,2,...,N

(3) P ( O ∣ λ ) = ∑ i = 1 N α T ( i ) P(O|\lambda)=\sum^N_{i=1}\alpha_T(i) P(Oλ)=i=1NαT(i)

2. 后向算法

给定隐马尔科夫模型 λ \lambda λ,满足时刻t的状态为 q i q_i qi的条件下,从时刻t+1到T的观测序列为 { o t + 1 , o t + 2 , . . . . , o T } \{o_{t+1}, o_{t+2},....,o_T\} {ot+1,ot+2,....,oT}的概率为后向概率:

β t ( i ) = P ( o t + 1 , o t + 2 , . . . . , o T ∣ i t = q i , λ ) \beta_t(i)=P(o_{t+1}, o_{t+2},....,o_T|i_t=q_i,\lambda) βt(i)=P(ot+1,ot+2,....,oTit=qi,λ)

我们同样可以通过递推的方式求得前向概率 β t ( i ) \beta_t(i) βt(i)及观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ),具体的算法步骤如下:

(1) 对于最后时刻T,规定 β T ( i ) = 1 \beta_T(i)=1 βT(i)=1

(2) 对于时刻t=T-1, T-2, … , 1:

β t ( i ) = ∑ j = 1 N a i j b j ( o t + 1 ) β t + 1 ( j ) , i = 1 , 2 , . . . , N \beta_t(i)=\sum^N_{j=1}a_{ij}b_j(o_{t+1})\beta_{t+1}(j), i=1,2,...,N βt(i)=j=1Naijbj(ot+1)βt+1(j),i=1,2,...,N

(3) P ( O ∣ λ ) = ∑ i = 1 N π i b i ( o 1 ) β 1 ( i ) P(O|\lambda)=\sum^N_{i=1}\pi_ib_i(o_1)\beta_1(i) P(Oλ)=i=1Nπibi(o1)β1(i)

这里我们可以这里理解 : β 1 ( i ) \beta_1(i) β1(i)表示时刻t=1的状态为 q 1 q_1 q1时,从时刻t=2到T的观测序列为 { o 2 , o 3 , . . . . , o T } \{o_{2}, o_{3},....,o_T\} {o2,o3,....,oT}的概率, π i b i ( o 1 ) \pi_ib_i(o_1) πibi(o1)当然就是时刻t=1的状态为 q 1 q_1 q1的概率了,那么 π i b i ( o 1 ) β 1 ( i ) \pi_ib_i(o_1)\beta_1(i) πibi(o1)β1(i)也就是时刻t=1的状态为 q 1 q_1 q1的条件下的条件概率了。

但是观测序列概率是没有限定观测序列的状态取值的,所以,要把所有状态下的观测序列概率累加起来才是最后的观测序列概率,即上式。

这里跟上面的前向算法求得的观测序列概率的思想是类似的。

3. 常用的概率计算

  1. 根据已知的隐马尔科夫模型 λ \lambda λ和观测序列O,在时刻 t 处于状态 q i q_i qi的概率:

    γ t ( i ) = P ( i t = q i ∣ O , λ ) \gamma_t(i)=P(i_t=q_i|O,\lambda) γt(i)=P(it=qiO,λ)

    并且,根据条件概率的公式进行推导可知:

    γ t ( i ) = P ( i t = q i ∣ O , λ ) = P ( i t = q i , O ∣ λ ) P ( O ∣ λ ) \gamma_t(i)=P(i_t=q_i|O,\lambda)=\frac{P(i_t=q_i,O|\lambda)}{P(O|\lambda)} γt(i)=P(it=qiO,λ)=P(Oλ)P(it=qi,Oλ)

    再结合前向和后向概率,可得到:

    P ( i t = q i , O ∣ λ ) = α t ( i ) β t ( i ) P(i_t=q_i,O|\lambda)=\alpha_t(i)\beta_t(i) P(it=qi,Oλ)=αt(i)βt(i)

    (这里多琢磨几遍前向概率和后向概率的定义,就可以理解为什么了)

    则:

    γ t ( i ) = α t ( i ) β t ( i ) P ( O ∣ λ ) = α t ( i ) β t ( i ) ∑ j = 1 N α t ( j ) β t ( j ) \gamma_t(i)=\frac{\alpha_t(i)\beta_t(i)}{P(O|\lambda)}=\frac{\alpha_t(i)\beta_t(i)}{\sum^N_{j=1}\alpha_t(j)\beta_t(j)} γt(i)=P(Oλ)αt(i)βt(i)=j=1Nαt(j)βt(j)αt(i)βt(i)

    (分母的转换是这么理解:在已知 λ \lambda λ的情况下,观测序列为O时,状态可以为任何一种状态,那么每一种状态下观测序列为O的概率累加,就是观测序列的概率了)

  2. 根据已知的隐马尔科夫模型 λ \lambda λ和观测序列O,在时刻 t 处于状态 q i q_i qi,并且在时刻t+1处于状态 q j q_j qj的概率:

    ξ t ( i , j ) = P ( i t = q i , i t + 1 = q j ∣ O , λ ) \xi_t(i,j)=P(i_t=q_i,i_{t+1}=q_j|O,\lambda) ξt(i,j)=P(it=qi,it+1=qjO,λ)

    跟上面的思路一致:

    ξ t ( i , j ) = P ( i t = q i , i t + 1 = q j , O ∣ λ ) P ( O ∣ λ ) = P ( i t = q i , i t + 1 = q j , O ∣ λ ) ∑ i = 1 N ∑ j = 1 N P ( i t = q i , i t + 1 = q j , O ∣ λ ) \xi_t(i,j)=\frac{P(i_t=q_i,i_{t+1}=q_j,O|\lambda)}{P(O|\lambda)}=\frac{P(i_t=q_i,i_{t+1}=q_j,O|\lambda)}{\sum^N_{i=1}\sum^N_{j=1}P(i_t=q_i,i_{t+1}=q_j,O|\lambda)} ξt(i,j)=P(Oλ)P(it=qi,it+1=qj,Oλ)=i=1Nj=1NP(it=qi,it+1=qj,Oλ)P(it=qi,it+1=qj,Oλ)

    P ( i t = q i , i t + 1 = q j , O ∣ λ ) = α t ( i ) a i j b j ( o t + 1 ) β t + 1 ( j ) P(i_t=q_i,i_{t+1}=q_j,O|\lambda)=\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j) P(it=qi,it+1=qj,Oλ)=αt(i)aijbj(ot+1)βt+1(j)

三、实际应用

可能看了上面隐马尔科夫模型的原理之后,很多人都有点懵,不知道能用来做什么?

我们举个例子:中文分词。

“我们是中国人”,这一句话分词之后应该是这样的:我(B)们(E)|是(O)|中(B)国(M)人(E)。

各个标签的含义——B:单词的第一个字,M:单词的中间字,E:单词的最后一个字,O:仅有一个字组成的词。

将隐马尔科夫模型应用到分词中,那么观测序列对应的是文本句子,隐藏状态对应则的是句子中每个字的标签。

四、模型训练(学习)

上面我们提到了,HHM的参数有三组 A , B , π {A,B,\pi} A,B,π,那么如何确定最优的参数呢?

1. 监督学习

当我们的样本数据是带有标签时,即训练数据包含观测序列以及对应的状态,我们就可以通过极大似然法来估计HHM的参数,计算方法如下:

(1) 状态转移概率A: a ^ i j = A i j ∑ k = 1 N A i k , 1 < = i , j < = N \hat{a}_{ij} = \frac{A_{ij}}{\sum_{k=1}^NA_{ik}},1<=i,j<=N a^ij=k=1NAikAij,1<=i,j<=N

A i j A_{ij} Aij表示样本中时刻t处于状态 q i q_i qi转移到时刻t+1处于状态 q j q_j qj的频次。

如上面分词的例子, A i j A_{ij} Aij可以理解为当前这个字的标签为 q i q_i qi(假如为B),下一个词的标签为 q j q_j qj(假如为E)的频次。

(2) 输出观测概率B: b ^ i j = B i j ∑ k = 1 N B i k , 1 < = i < = N , 1 < = j < = M \hat{b}_{ij} = \frac{B_{ij}}{\sum_{k=1}^NB_{ik}},1<=i<=N,1<=j<=M b^ij=k=1NBikBij,1<=i<=N,1<=j<=M

B i j B_{ij} Bij表示样本中t时刻的状态为 q i q_i qi时,观测值为 o j o_j oj的频次。

如当前的字为 o j o_j oj(假如为"我"),标签为 q i q_i qi(假如为B)的频次。

(3) 初设状态概率 π \pi π π ^ i \hat{\pi}_i π^i为初设状态为 q i q_i qi的频率。

2. Baum-Welch算法

如果样本数据时没有带标签的,即训练数据只包含观测序列O,但对应的状态 I I I未知。

那此时的隐马尔科夫模型是一个含有隐变量的概率模型:

P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) P(O|\lambda)=\sum_IP(O|I,\lambda)P(I|\lambda) P(Oλ)=IP(OI,λ)P(Iλ)

它的参数学习可以由Baum-Welch算法实现,本质还是EM。EM的基本思想是先将参数的初设估计值加入到似然函数Q中,然后对Q进行极大化(一般就是求导,令其等于0),得到新的参数估计值,一直重复,直到收敛。

此时,对数似然函数是 l o g P ( O , I ∣ λ ) logP(O,I|\lambda) logP(O,Iλ)

(1) EM算法的E步:求Q函数:

Q ( λ , λ ˉ ) = ∑ I l o g P ( O , I ∣ λ ) P ( O , I ∣ λ ˉ ) Q(\lambda,\bar{\lambda})=\sum_IlogP(O,I|\lambda)P(O,I|\bar{\lambda}) Q(λ,λˉ)=IlogP(O,Iλ)P(O,Iλˉ)

λ \lambda λ是要极大化的隐马尔科夫模型的参数, λ ˉ \bar{\lambda} λˉ是参数的当前估计值。

因为 P ( O , I ∣ λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 . . . a i T − 1 i T b i T ( o T ) P(O,I|\lambda)=\pi_{i1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}...a_{i_{T-1}i_T}b_{i_T}(o_T) P(O,Iλ)=πi1bi1(o1)ai1i2bi2...aiT1iTbiT(oT)

因此 Q ( λ , λ ˉ ) = ∑ I l o g π i 1 P ( O , I ∣ λ ˉ ) + ∑ I ( ∑ t = 1 T − 1 l o g α i t i t + 1 ) P ( O , I ∣ λ ˉ ) + ∑ I ( ∑ t = 1 T l o g b i t ( o t ) ) P ( O , I ∣ λ ˉ ) Q(\lambda,\bar{\lambda})=\sum_Ilog\pi_{i_1}P(O,I|\bar{\lambda})+\sum_I\left(\sum^{T-1}_{t=1}log\alpha_{i_ti_{t+1}}\right)P(O,I|\bar{\lambda})+\sum_I\left(\sum^T_{t=1}logb_{i_t}(o_t)\right)P(O,I|\bar{\lambda}) Q(λ,λˉ)=Ilogπi1P(O,Iλˉ)+I(t=1T1logαitit+1)P(O,Iλˉ)+I(t=1Tlogbit(ot))P(O,Iλˉ)

(2) EM算法的M步:极大化Q函数,得到新的参数估计值 A , B , λ A,B,\lambda A,B,λ

由于三个参数单独出现在Q函数的3个项中,那么我们可以对各项分别极大化。

a. 首先是第1项求 λ \lambda λ

∑ I l o g π i 1 P ( O , I ∣ λ ˉ ) = ∑ i = 1 N l o g π i P ( O , i 1 = i ∣ λ ˉ ) \sum_Ilog\pi_{i_1}P(O,I|\bar{\lambda})=\sum^N_{i=1}log\pi_iP(O,i_1=i|\bar{\lambda}) Ilogπi1P(O,Iλˉ)=i=1NlogπiP(O,i1=iλˉ)

为什么这个等式成立呢?因为当隐马尔科夫模型的参数确定后,时刻t=1的状态 i 1 i_1 i1确定了,那么O和 I I I都能确定,这里是把 i 1 i_1 i1的所有独立事件概率加起来

π i \pi_i πi满足约束条件 ∑ i = 1 N π = 1 \sum^N_{i=1}\pi=1 i=1Nπ=1,可以利用拉格朗日乘子法,拉格朗日函数为:

∑ i = 1 N l o g π i P ( O , i 1 = i ∣ λ ˉ ) + γ ( ∑ i = 1 N π i − 1 ) \sum^N_{i=1}log\pi_iP(O,i_1=i|\bar{\lambda})+\gamma\left(\sum^N_{i=1}\pi_i-1\right) i=1NlogπiP(O,i1=iλˉ)+γ(i=1Nπi1)

求偏导并令其等于0:

∂ ∂ π i [ ∑ i = 1 N l o g π i P ( O , i 1 = i ∣ λ ˉ ) + γ ( ∑ i = 1 N π i − 1 ) ] = 0 \frac{\partial}{\partial \pi_i}\left[\sum^N_{i=1}log\pi_iP(O,i_1=i|\bar{\lambda})+\gamma\left(\sum^N_{i=1}\pi_i-1\right)\right]=0 πi[i=1NlogπiP(O,i1=iλˉ)+γ(i=1Nπi1)]=0

得到: P ( O , i 1 = i ∣ λ ˉ ) + γ π i = 0 P(O,i_1=i|\bar{\lambda})+\gamma\pi_i=0 P(O,i1=iλˉ)+γπi=0

对所有i求和,得到: γ = − P ( O ∣ λ ˉ ) \gamma=-P(O|\bar{\lambda}) γ=P(Oλˉ)

因为 i 1 ∈ ( 1 , 2 , . . . , N ) i_1\in(1,2,...,N) i1(1,2,...,N),所以 P ( O , i 1 = i ∣ λ ˉ ) P(O,i_1=i|\bar{\lambda}) P(O,i1=iλˉ)中按 i i i从1到N累计起来其实就等于 P ( O ∣ λ ˉ ) P(O|\bar{\lambda}) P(Oλˉ)

最终, π i = P ( O , i 1 = i ∣ λ ˉ ) P ( O ∣ λ ˉ ) \pi_i=\frac{P(O,i_1=i|\bar{\lambda})}{P(O|\bar{\lambda})} πi=P(Oλˉ)P(O,i1=iλˉ)

b. Q函数的第2项求a:

∑ I ( ∑ t = 1 T − 1 l o g α i t i t + 1 ) P ( O , I ∣ λ ˉ ) = ∑ i = 1 N ∑ j = 1 N ∑ t = 1 T − 1 a i j P ( O , i t = i , i t + 1 = j ∣ λ ˉ ) \sum_I\left(\sum^{T-1}_{t=1}log\alpha_{i_ti_{t+1}}\right)P(O,I|\bar{\lambda})=\sum^N_{i=1}\sum^N_{j=1}\sum^{T-1}_{t=1}a_{ij}P(O,i_t=i,i_{t+1}=j|\bar{\lambda}) I(t=1T1logαitit+1)P(O,Iλˉ)=i=1Nj=1Nt=1T1aijP(O,it=i,it+1=jλˉ)

同样存在约束条件: ∑ j = 1 N a i j = 1 \sum^N_{j=1}a_{ij}=1 j=1Naij=1,类似上面的做法,可以求得:

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{\sum^{T-1}_{t=1}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})}{\sum^{T-1}_{t=1}P(O,i_t=i)|\bar{\lambda}} aij=t=1T1P(O,it=i)λˉt=1T1P(O,it=i,it+1=jλˉ)

c. Q函数的第3项求b:

∑ I ( ∑ t = 1 T l o g b i t ( o t ) ) P ( O , I ∣ λ ˉ ) = ∑ j = 1 N ∑ t = 1 T l o g b j ( o t ) i P ( O , i t = j ∣ λ ˉ ) \sum_I\left(\sum^T_{t=1}logb_{i_t}(o_t)\right)P(O,I|\bar{\lambda})=\sum^N_{j=1}\sum^T_{t=1}logb_j(o_t)_iP(O,i_t=j|\bar{\lambda}) I(t=1Tlogbit(ot))P(O,Iλˉ)=j=1Nt=1Tlogbj(ot)iP(O,it=jλˉ)

约束条件: ∑ k = 1 M b j ( k ) = 1 \sum^M_{k=1}b_j(k)=1 k=1Mbj(k)=1,这里需要注意只有当 o t = v k o_t=v_k ot=vk b j ( o t ) b_j(o_t) bj(ot) b j ( k ) b_j(k) bj(k)的偏导数才不等于0,用 I ( o t = v k ) I(o_t=v_k) I(ot=vk)表示,求得:

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{\sum^T_{t=1}P(O,i_t=j|\bar{\lambda})I(o_t=v_k)}{\sum^T_{t=1}P(O,i_t=j|\bar{\lambda})} bj(k)=t=1TP(O,it=jλˉ)t=1TP(O,it=jλˉ)I(ot=vk)

(3) 最后,用上面的概率表示:

a i j = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) a_{ij}=\frac{\sum^{T-1}_{t=1}\xi_t(i,j)}{\sum^{T-1}_{t=1}\gamma_t(i)} aij=t=1T1γt(i)t=1T1ξt(i,j)

b j ( k ) = ∑ t = 1 , o t = v k T γ t ( j ) ∑ t = 1 T γ t ( j ) b_j(k)=\frac{\sum^T_{t=1,o_t=v_k}\gamma_t(j)}{\sum^T_{t=1}\gamma_t(j)} bj(k)=t=1Tγt(j)t=1,ot=vkTγt(j)

π i = γ 1 ( i ) \pi_i=\gamma_1(i) πi=γ1(i)

五、模型预测

那么,通过训练,我们得到了最优的参数,也相当于我们得到了一个拟合效果最好的隐马尔科夫模型,此时我们如何预测观测序列的状态呢?即给定隐马尔科夫模型 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π],如何通过观测序列来推断对应的隐藏状态。

举个例子:例如我们这个模型用于语音识别中,那么观测序列就是语音了,隐藏状态即为文字。语音识别的作用就是将语音转化为对应的文字,那如果隐马尔科夫模型通过观测序列得到隐藏状态,不就是将语音转化为文字了。

这个时候就需要使用到维特比(Viterbi)算法,在这篇博客中有详细介绍。但在隐马尔科夫模型中需要稍作调整,下面我给出书上的一个例子。

维特比(Viterbi)算法

在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值