文章目录

  • 前言
  • 一、模型参数及意义:
  • 二、两个假设:
  • 三、三个问题:
  • 四、三个问题的对应求解过程:
    • ① Evaluation评估问题
    • ② Decoding解码问题:
    • ③ Learning学习问题:

前言

首先HMM解决的问题是基于序列的。

其中:

  • 状态序列 I=i1,i2,...,iTI=i_1,i_2,...,i_TI=i1​,i2​,...,iT​ ,满足 iT∈Qi_T \in QiT​∈Q ,QQQ 是状态序列的可能取值集合 Q={q1,q2,...,qN}Q=\{q_1,q_2,...,q_N\}Q={q1​,q2​,...,qN​} ;
  • 观测序列 O=o1,o2,...,oTO=o_1,o_2,...,o_TO=o1​,o2​,...,oT​ ,满足 oT∈Vo_T \in VoT​∈V , VVV 是观测序列的可能取值集合 V={v1,v2,...,vM}V=\{v_1,v_2,...,v_M\}V={v1​,v2​,...,vM​} 。

要点:

一、模型参数及意义:

一个HMM模型,可以由 隐藏状态初始概率分布 π\piπ 、状态转移概率矩阵 AAA 和观测状态概率矩阵 BBB 决定

可由如下三元组表示:
λ=(π,A,B)\lambda = (\pi,\;A,\;B) λ=(π,A,B)
其中:

  • π\piπ :表示初始概率分布;
  • AAA :转移矩阵 [aij][a_{ij}][aij​] , aij=P(it+1=qj∣it=qi)a_{ij}=P(i_{t+1}=q_j|i_t=q_i)aij​=P(it+1​=qj​∣it​=qi​) ,表示隐藏状态从 ttt 时刻的 qiq_iqi​ 转变为 t+1t+1t+1 时刻的 qjq_jqj​ 时的概率;
  • BBB :发射矩阵 [bj(k)][b_j(k)][bj​(k)] , bj(k)=P(ot=vk∣it=qj)b_j(k)=P(o_t=v_k|i_t=q_j)bj​(k)=P(ot​=vk​∣it​=qj​) ,表示时刻 ttt 时的隐藏状态为 qjq_jqj​ 时产生观测值为 vkv_kvk​ 的概率。

二、两个假设:

齐次Markov假设:任意时刻的隐藏状态只依赖于它前一时刻的隐藏状态。

即:
P(it+1∣i1,i2,...,it,o1,o2,...,ot)=P(it+1∣it)P(i_{t+1}|i_1,i_2,...,i_t,\;o_1,o_2,...,o_t)=P(i_{t+1}|i_t) P(it+1​∣i1​,i2​,...,it​,o1​,o2​,...,ot​)=P(it+1​∣it​)
观测独立性假设:任意时刻的观测状态只依赖于当前时刻的隐藏状态。

即:
P(ot∣i1,i2,...,it,o1,o2,...,ot)=P(ot∣it)P(o_t|i_1,i_2,...,i_t,\;o_1,o_2,...,o_t)=P(o_t|i_t) P(ot​∣i1​,i2​,...,it​,o1​,o2​,...,ot​)=P(ot​∣it​)

三、三个问题:

HMM解决的三个经典的问题:

① Evaluation评估问题:已知HMM模型 λ=(π,A,B)\lambda = (\pi,\;A,\;B)λ=(π,A,B) ,求给定观测序列 OOO 出现的可能性大小 P(O∣λ)P(O|\lambda)P(O∣λ) ,可使用(Forward-Backword)前向后向算法进行求解;

② Decoding解码问题:已知HMM模型 λ=(π,A,B)\lambda = (\pi,\;A,\;B)λ=(π,A,B) 和观测序列 OOO ,求解隐藏状态序列 I^\hat{I}I^ ,使得当前条件下出现该隐藏状态序列的可能性最大,即:
I^=argmax⏟IP(I∣O,λ)\hat{I}=\underbrace{arg\;max}_I\;P(I|O,\lambda) I^=Iargmax​​P(I∣O,λ)
可使用(Viterbi)维特比算法进行求解;

③ Learning学习问题:已知观测序列 OOO ,估计模型 λ=(π,A,B)\lambda = (\pi,\;A,\;B)λ=(π,A,B) 的参数,使得产生该观测序列的可能性最大,即:
λMLE=argmax⏟λP(O∣λ)\lambda_{MLE} = \underbrace{arg\;max}_{\lambda}\;P(O|\lambda) λMLE​=λargmax​​P(O∣λ)
可使用(Baum-Welch)鲍姆-韦尔奇算法进行求解。

四、三个问题的对应求解过程:

① Evaluation评估问题

已知HMM模型 λ=(π,A,B)\lambda = (\pi,\;A,\;B)λ=(π,A,B) ,求给定观测序列 OOO 出现的可能性大小 P(O∣λ)P(O|\lambda)P(O∣λ) :

  • 暴力求解法
    P(O∣λ)=∑IP(I,O∣λ)=∑IP(O∣I,λ)⋅P(I∣λ)P(O|\lambda) = \sum_I P(I,O|\lambda) = \sum_I P(O|I,\lambda)\cdot P(I|\lambda) P(O∣λ)=I∑​P(I,O∣λ)=I∑​P(O∣I,λ)⋅P(I∣λ)
    而:
    P(I∣λ)=P(i1,i2,...,iT∣λ)=P(iT∣i1,i2,...,λ)⋅P(i1,i2,...,iT−1∣λ)P(I|\lambda)=P(i_1,i_2,...,i_T|\lambda)=P(i_T|i_1,i_2,...,\lambda)\cdot P(i_1,i_2,...,i_{T-1}|\lambda) P(I∣λ)=P(i1​,i2​,...,iT​∣λ)=P(iT​∣i1​,i2​,...,λ)⋅P(i1​,i2​,...,iT−1​∣λ)

    =P(iT∣iT−1)⋅P(i1,i2,...,iT−1∣λ)= P(i_T|i_{T-1})\cdot P(i_1,i_2,...,i_{T-1}|\lambda) =P(iT​∣iT−1​)⋅P(i1​,i2​,...,iT−1​∣λ)

    =aT−1,T⋅P(i1,i2,...,iT−1∣λ)= a_{T-1,T}\cdot P(i_1,i_2,...,i_{T-1}|\lambda) =aT−1,T​⋅P(i1​,i2​,...,iT−1​∣λ)

    =aT−1,T⋅aT−2,T−1⋅P(i1,i2,...,iT−2∣λ)=a_{T-1,T}\cdot a_{T-2,T-1}\cdot P(i_1,i_2,...,i_{T-2}|\lambda) =aT−1,T​⋅aT−2,T−1​⋅P(i1​,i2​,...,iT−2​∣λ)

    =π(ai1)⋅∏t=2Tait−1,it= \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} =π(ai1​​)⋅t=2∏T​ait−1​,it​​

    P(O∣I,λ)=∏t=1Tbit(ot)P(O|I,\lambda)=\prod_{t=1}^T b_{i_t}(o_t) P(O∣I,λ)=t=1∏T​bit​​(ot​)

    所以:
    P(O∣λ)=∑Iπ(ai1)⋅∏t=2Tait−1,it∏t=1Tbit(ot)P(O|\lambda)=\sum_I \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} \prod_{t=1}^T b_{i_t}(o_t) P(O∣λ)=I∑​π(ai1​​)⋅t=2∏T​ait−1​,it​​t=1∏T​bit​​(ot​)

    =∑i1∑i2⋯∑iT⏞O(NT)π(ai1)⋅∏t=2Tait−1,it∏t=1Tbit(ot)= \overbrace{\sum_{i_1} \sum_{i_2} \cdots \sum_{i_T}}^{O(N^T)} \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} \prod_{t=1}^T b_{i_t}(o_t) =i1​∑​i2​∑​⋯iT​∑​​O(NT)​π(ai1​​)⋅t=2∏T​ait−1​,it​​t=1∏T​bit​​(ot​)

    看的出来时间复杂度很高,为 O(TNT)O(TN^T)O(TNT) 。

  • (Forword)前向算法

    我们将 ttt 时刻的观测序列 O=o1,o2,...,otO=o_1,o_2,...,o_tO=o1​,o2​,...,ot​ 与隐藏状态 iti_tit​ 的联合概率记为 αt(i)\alpha_t(i)αt​(i) :

    即:
    αt(i)=P(o1,o2,...,ot,it=qi∣λ)\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)=P(O,it=qi∣λ)\alpha_T(i) = P(O,\;i_t=q_i|\lambda) αT​(i)=P(O,it​=qi​∣λ)

    而:
    P(O∣λ)=∑i=1NP(O,it=qi∣λ)=∑i=1NαT(i)P(O|\lambda)= \sum_{i=1}^N P(O,\;i_t=q_i|\lambda)=\sum_{i=1}^N \alpha_T(i) P(O∣λ)=i=1∑N​P(O,it​=qi​∣λ)=i=1∑N​αT​(i)
    所以,知道了 αT(i)\alpha_T(i)αT​(i) 的递推公式,P(O∣λ)P(O|\lambda)P(O∣λ) 便可求解得出。
    αt+1(j)=P(o1,o2,...,ot+1,it+1=qj∣λ)\alpha_{t+1}(j)=P(o_1,o_2,...,o_{t+1},\;i_{t+1}=q_j|\lambda) αt+1​(j)=P(o1​,o2​,...,ot+1​,it+1​=qj​∣λ)

    =∑i=1NP(o1,o2,...,ot+1,it+1=qj,it=qi∣λ)=\sum_{i=1}^N P(o_1,o_2,...,o_{t+1},\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =i=1∑N​P(o1​,o2​,...,ot+1​,it+1​=qj​,it​=qi​∣λ)

    =P(ot+1∣o1,o2,...,ot,it=qi,it+1=qj,λ)⋅P(o1,o2,...,ot,it+1=qj,it=qi∣λ)=P(o_{t+1}|o_1,o_2,...,o_t,\;i_t=q_i,\;i_{t+1}=q_j,\;\lambda)\cdot P(o_1,o_2,...,o_t,\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =P(ot+1​∣o1​,o2​,...,ot​,it​=qi​,it+1​=qj​,λ)⋅P(o1​,o2​,...,ot​,it+1​=qj​,it​=qi​∣λ)

    =∑i=1NP(ot+1∣it+1=qj)⋅P(o1,o2,...,ot,it+1=qj,it=qi∣λ)=\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(o_1,o_2,...,o_t,\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =i=1∑N​P(ot+1​∣it+1​=qj​)⋅P(o1​,o2​,...,ot​,it+1​=qj​,it​=qi​∣λ)

    =∑i=1NP(ot+1∣it+1=qj)⋅P(it+1=qj∣o1,o2,...,ot,it=qi,λ)⋅P(o1,o2,...,ot,it=qi∣λ)=\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(i_{t+1}=q_j|o_1,o_2,...,o_t,\;i_t=q_i,\;\lambda)\cdot P(o_1,o_2,...,o_t,\;i_t=q_i|\lambda) =i=1∑N​P(ot+1​∣it+1​=qj​)⋅P(it+1​=qj​∣o1​,o2​,...,ot​,it​=qi​,λ)⋅P(o1​,o2​,...,ot​,it​=qi​∣λ)

    =∑i=1NP(ot+1∣it+1=qj)⋅P(it+1=qj∣it=qi)⋅P(o1,o2,...,ot,it=qi∣λ)=\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(i_{t+1}=q_j|i_t=q_i)\cdot P(o_1,o_2,...,o_t,\;i_t=q_i|\lambda) =i=1∑N​P(ot+1​∣it+1​=qj​)⋅P(it+1​=qj​∣it​=qi​)⋅P(o1​,o2​,...,ot​,it​=qi​∣λ)

    =∑i=1Nbj(ot+1)⋅aij⋅αt(i)=\sum_{i=1}^N b_j(o_{t+1})\cdot a_{ij}\cdot \alpha_t(i) =i=1∑N​bj​(ot+1​)⋅aij​⋅αt​(i)

  • (Backword)后向算法

    我们把在时刻 ttt 隐藏状态为 qiq_iqi​ 时产生观测序列 O=ot+1,ot+2,...,oTO=o_{t+1},o_{t+2},...,o_TO=ot+1​,ot+2​,...,oT​ 的条件概率记为 βt(i)=P(ot+1,ot+2,...,oT∣it=qi,λ)\beta_t(i)=P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\;\lambda)βt​(i)=P(ot+1​,ot+2​,...,oT​∣it​=qi​,λ) 。

    那么根据定义可知:β1(i)=P(o2,o3,...,oT∣i1=qi,λ)\beta_1(i)=P(o_2,o_3,...,o_T|i_1=q_i,\;\lambda)β1​(i)=P(o2​,o3​,...,oT​∣i1​=qi​,λ) 。

    此时:

P(O∣λ)=P(o1,o2,...,oT∣λ)P(O|\lambda)=P(o_1,o_2,...,o_T|\lambda) P(O∣λ)=P(o1​,o2​,...,oT​∣λ)

=∑i=1NP(o1,o2,...,oT,i1=qi∣λ)= \sum_{i=1}^N P(o_1,o_2,...,o_T,\;i_1=q_i|\lambda) =i=1∑N​P(o1​,o2​,...,oT​,i1​=qi​∣λ)

=∑i=1NP(o1,o2,...,oT∣i1=qi,λ)⋅P(i1=qi∣λ)=\sum_{i=1}^N P(o_1,o_2,...,o_T|i_1=q_i,\;\lambda)\cdot P(i_1=q_i|\lambda) =i=1∑N​P(o1​,o2​,...,oT​∣i1​=qi​,λ)⋅P(i1​=qi​∣λ)

=∑i=1NP(o1∣o2,...,oT,i1=qi,λ)⋅P(o2,...,oT∣i1=qi,λ)⋅πi= \sum_{i=1}^N P(o_1|o_2,...,o_T,\;i_1=q_i,\;\lambda)\cdot P(o_2,...,o_T|i_1=q_i,\;\lambda)\cdot \pi_i =i=1∑N​P(o1​∣o2​,...,oT​,i1​=qi​,λ)⋅P(o2​,...,oT​∣i1​=qi​,λ)⋅πi​

=∑i=1NP(o1∣i1=qi)⋅β1(i)⋅πi=\sum_{i=1}^N P(o_1|i_1=q_i)\cdot \beta_1(i) \cdot \pi_i =i=1∑N​P(o1​∣i1​=qi​)⋅β1​(i)⋅πi​

=∑i=1Nπibi(o1)β1(i)= \sum_{i=1}^N \pi_i b_i(o_1)\beta_1(i) =i=1∑N​πi​bi​(o1​)β1​(i)

​ 所以求出了 β1(i)\beta_1(i)β1​(i) ,则相应的 P(O∣λ)P(O|\lambda)P(O∣λ) 也就求出来了。

​ 而:
βt(i)=P(ot+1,ot+2,...,oT∣it=qi,λ)\beta_t(i) =P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\;\lambda) βt​(i)=P(ot+1​,ot+2​,...,oT​∣it​=qi​,λ)

=∑j=1NP(ot+1,ot+2,...,oT,it+1=qj∣it=qi,λ)= \sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T,\;i_{t+1}=q_j|i_t=q_i,\;\lambda) =j=1∑N​P(ot+1​,ot+2​,...,oT​,it+1​=qj​∣it​=qi​,λ)

=∑j=1NP(ot+1,ot+2,...,oT∣it+1=qj,it=qi,λ)⋅P(it+1=qj∣ot+1,ot+2,...,oT,it=qi,λ)=\sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T|i_{t+1}=q_j,\;i_t=q_i,\;\lambda)\cdot P(i_{t+1}=q_j|o_{t+1},o_{t+2},...,o_T,\;i_t=q_i,\;\lambda) =j=1∑N​P(ot+1​,ot+2​,...,oT​∣it+1​=qj​,it​=qi​,λ)⋅P(it+1​=qj​∣ot+1​,ot+2​,...,oT​,it​=qi​,λ)

=∑j=1NP(ot+1,ot+2,...,oT∣it+1=qj)⋅aij=\sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T|i_{t+1}=q_j)\cdot a_{ij} =j=1∑N​P(ot+1​,ot+2​,...,oT​∣it+1​=qj​)⋅aij​

=∑j=1NP(ot+1∣ot+2,...,oT,it+1=qj)⋅P(ot+2,...,oT∣it+1=qj)⋅aij=\sum_{j=1}^N P(o_{t+1}|o_{t+2},...,o_T,\;i_{t+1}=q_j)\cdot P(o_{t+2},...,o_T|i_{t+1}=q_j)\cdot a_{ij} =j=1∑N​P(ot+1​∣ot+2​,...,oT​,it+1​=qj​)⋅P(ot+2​,...,oT​∣it+1​=qj​)⋅aij​

=∑j=1NP(ot+1∣it+1=qj)⋅βt+1(j)⋅aij= \sum_{j=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot \beta_{t+1}(j)\cdot a_{ij} =j=1∑N​P(ot+1​∣it+1​=qj​)⋅βt+1​(j)⋅aij​

=∑j=1Nbj(ot+1)aijβt+1(j)= \sum_{j=1}^N b_j(o_{t+1})a_{ij}\beta_{t+1}(j) =j=1∑N​bj​(ot+1​)aij​βt+1​(j)

​ 至此,我们就可以根据 βT(i)\beta_T(i)βT​(i) 递推出 βT−1(i),...,β1(i)\beta_{T-1}(i),...,\beta_1(i)βT−1​(i),...,β1​(i) 。

② Decoding解码问题:

已知HMM模型 λ=(π,A,B)\lambda = (\pi,\;A,\;B)λ=(π,A,B) 和观测序列 OOO ,求解隐藏状态序列 I^\hat{I}I^ ,使得当前条件下出现该隐藏状态序列的可能性最大。

使用(Viterbi)维特比算法进行求解:

本质上就是基于动态规划求解最短路径(最大概率)的问题。

这里我们将在时刻 ttt 隐藏状态为 iii 的所有可能的状态转移路径 i1,i2,...iti_1,i_2,...i_ti1​,i2​,...it​ 中的概率最大值记为 δt(i)\delta_t(i)δt​(i) ,则有:
δt(i)=max⏟i1,i2,...,it−1P(it=i,i1,i2,...,it−1,o1,o2,...,ot∣λ),i=1,2,...,N\delta_t(i) = \underbrace{max}_{i_1,i_2,...,i_{t-1}} P(i_t=i,\;i_1,i_2,...,i_{t-1},\;o_1,o_2,...,o_{t}|\lambda),\;i=1,2,...,N δt​(i)=i1​,i2​,...,it−1​max​​P(it​=i,i1​,i2​,...,it−1​,o1​,o2​,...,ot​∣λ),i=1,2,...,N
由 δt(i)\delta_t(i)δt​(i) 的定义可以得到 δ\deltaδ 的递推表达式:
δt+1(j)=max⏟i1,i2,...,itP(it+1=i,i1,i2,...,it,o1,o2,...,ot+1∣λ)\delta_{t+1}(j)=\underbrace{max}_{i_1,i_2,...,i_{t}} P(i_{t+1}=i,\;i_1,i_2,...,i_{t},\;o_1,o_2,...,o_{t+1}|\lambda) δt+1​(j)=i1​,i2​,...,it​max​​P(it+1​=i,i1​,i2​,...,it​,o1​,o2​,...,ot+1​∣λ)

=max⏟1≤i≤Nδt(i)aijbj(ot+1)=\underbrace{max}_{1 \le i \le N} \delta_t(i)a_{ij}b_j(o_{t+1}) =1≤i≤Nmax​​δt​(i)aij​bj​(ot+1​)

但是 δt+1(j)\delta_{t+1}(j)δt+1​(j) 表示的是最大的概率值,而不是状态转移路径,所以我们要在每次获取到最大概率值之后标记出此时的状态转移路径,即隐藏状态 iii 的取值。

我们定义在时刻 t+1t+1t+1 隐藏状态为 jjj 的所有单个状态转移路径 (i1,i2,...,it−1,it,jt+1)(i_1,i_2,...,i_{t-1},i_t,j_{t+1})(i1​,i2​,...,it−1​,it​,jt+1​) 中概率最大的转移路径中时刻为 ttt 的节点的隐藏状态为 ψt+1(j)\psi_{t+1}(j)ψt+1​(j) 。

那么:
ψt+1(j)=argmax⏟1≤i≤Nδt(i)aij\psi_{t+1}(j) = \underbrace{arg\;max}_{1\le i\le N}\;\delta_t(i)a_{ij} ψt+1​(j)=1≤i≤Nargmax​​δt​(i)aij​
现在,我们可以根据 δt+1(i)\delta_{t+1}(i)δt+1​(i) 递推得到 δt(i),δt−1(i),...,δ1(j)\delta_{t}(i),\delta_{t-1}(i),...,\delta_{1}(j)δt​(i),δt−1​(i),...,δ1​(j) ,那么根据上式,我们可以得到使得 δt(i)\delta_{t}(i)δt​(i) 最大的状态转移路径 I^=ψ1(i),ψ2(i),...,ψt(i)\hat{I} =\psi_{1}(i),\psi_{2}(i),...,\psi_{t}(i)I^=ψ1​(i),ψ2​(i),...,ψt​(i) 。

③ Learning学习问题:

已知观测序列 OOO ,估计模型 λ=(π,A,B)\lambda = (\pi,\;A,\;B)λ=(π,A,B) 的参数,使得产生该观测序列的可能性最大。

这样的学习问题我们可以使用(Baum-Welch)鲍姆-韦尔奇算法进行求解。

首先我们给出算法的求解公式:
θ(t+1)=argmax⏟θ∫ZlogP(X,Z∣Q)⋅P(Z∣X,θ(t))dZ\theta^{(t+1)}=\underbrace{arg\;max}_{\theta} \int_{Z} log\;P(X,Z|Q)\cdot P(Z|X,\theta^{(t)})dZ θ(t+1)=θargmax​​∫Z​logP(X,Z∣Q)⋅P(Z∣X,θ(t))dZ
其中:

  • XXX 表示观测值,等价于前面的观测序列 OOO ;
  • ZZZ 表示隐变量,等价于前面的隐藏状态序列 III (离散的);
  • θ\thetaθ 表示模型参数,等价于前面的 λ\lambdaλ 。

那么上式可以改写为:
λ(t+1)=argmax⏟λ∑IlogP(O,I∣λ)⋅P(I∣O,λ(t))\lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot P(I|O,\;\lambda^{(t)}) λ(t+1)=λargmax​​I∑​logP(O,I∣λ)⋅P(I∣O,λ(t))

=λ(t+1)=argmax⏟λ∑IlogP(O,I∣λ)⋅P(O,I∣λ(t))P(O∣λ(t))=\lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot \frac{P(O,I|\lambda^{(t)})}{P(O|\lambda^{(t)})} =λ(t+1)=λargmax​​I∑​logP(O,I∣λ)⋅P(O∣λ(t))P(O,I∣λ(t))​

上式中分母 P(O∣λ(t))P(O|\lambda^{(t)})P(O∣λ(t)) 是已知的常量,对结果不会产生影响,这里我们可以省略掉,即:
=λ(t+1)=argmax⏟λ∑IlogP(O,I∣λ)⋅P(O,I∣λ(t))=\lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot P(O,I|\lambda^{(t)}) =λ(t+1)=λargmax​​I∑​logP(O,I∣λ)⋅P(O,I∣λ(t))

现在是要找到 λ(t+1)\lambda^{(t+1)}λ(t+1) 和 λ(t)\lambda^{(t)}λ(t) 之间的关系式进行迭代更新, λ(t)\lambda^{(t)}λ(t) 可以这样表示:
λ(t)=(π(t),A(t),B(t))\lambda^{(t)}=(\pi^{(t)},\; A^{(t)},\; B^{(t)}) λ(t)=(π(t),A(t),B(t))
由于模型的三个参数的迭代过程都是使用类似的思想,而且关于 AAA 和 BBB 的推导相对比较麻烦,所以这里只演示 π\piπ 的推导求解过程:

可令:
Q(λ,λ(t))=∑IlogP(O,I∣λ)⋅P(O,I∣λ(t))Q(\lambda,\lambda^{(t)})=\sum_I log\;P(O,I|\lambda)\cdot P(O,I|\lambda^{(t)}) Q(λ,λ(t))=I∑​logP(O,I∣λ)⋅P(O,I∣λ(t))

=∑I[logπ(ai1)⋅∏t=2Tait−1,it⋅∏t=1Tbit(ot)⋅P(O,I∣λ(t))]=\sum_I \big[log\;\pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t}\cdot \prod_{t=1}^T b_{i_t}(o_t) \cdot P(O,I|\lambda^{(t)})\big] =I∑​[logπ(ai1​​)⋅t=2∏T​ait−1​,it​​⋅t=1∏T​bit​​(ot​)⋅P(O,I∣λ(t))]

=∑I[(logπ(ai1)+∑t=2Tlogait−1,it+∑t=1Tlogbit(ot))⋅P(O,I∣λ(t))]=\sum_I \big[\big(log\;\pi(a_{i_1}) + \sum_{t=2}^T log\;a_{i_{t-1},i_t} + \sum_{t=1}^T log\;b_{i_t}(o_t)\big) \cdot P(O,I|\lambda^{(t)})\big] =I∑​[(logπ(ai1​​)+t=2∑T​logait−1​,it​​+t=1∑T​logbit​​(ot​))⋅P(O,I∣λ(t))]

由于小括号中的第二、三项与 π\piπ 没有关系,所以上式可以进一步简化:
π(t+1)=argmax⏟πQ(λ,λ(t))\pi^{(t+1)}=\underbrace{arg\;max}_{\pi}\;Q(\lambda,\lambda^{(t)}) π(t+1)=πargmax​​Q(λ,λ(t))

=argmax⏟π∑I[logπi1⋅P(O,I∣λ(t))]=\underbrace{arg\;max}_{\pi}\;\sum_I \big[log\;\pi_{i_1}\cdot P(O,I|\lambda^{(t)})\big] =πargmax​​I∑​[logπi1​​⋅P(O,I∣λ(t))]

=argmax⏟π∑i1⋯∑iT[logπi1⋅P(O,i1,i2,...,iT∣λ(t))]=\underbrace{arg\;max}_{\pi}\;\sum_{i_1} \cdots \sum_{i_T} \big[log\;\pi_{i_1}\cdot P(O,\;i_1,i_2,...,i_T|\lambda^{(t)})\big] =πargmax​​i1​∑​⋯iT​∑​[logπi1​​⋅P(O,i1​,i2​,...,iT​∣λ(t))]

我们发现前面的连续积分从 i2i_2i2​ 到 iTi_TiT​ 与 logπi1log\;\pi_{i_1}logπi1​​ 无关,与第二项连续积分的结果是一个边缘概率,即:
=argmax⏟π∑i1[logπi1⋅P(O,i1∣λ(t))]=\underbrace{arg\;max}_{\pi}\;\sum_{i_1} \big[log\;\pi_{i_1}\cdot P(O,\;i_1|\lambda^{(t)})\big] =πargmax​​i1​∑​[logπi1​​⋅P(O,i1​∣λ(t))]
到这里则变成了有约束条件下的求极值问题,由前面的条件可知,初始概率分布满足如下条件:
∑i=1Nπi=1\sum_{i=1}^N \pi_i = 1 i=1∑N​πi​=1
此时,我们使用拉格朗日乘子法来求解它,引入 η≥0\eta \ge 0η≥0 使得:
L(π,η)=∑i=1Nlogπi⋅P(O,i1=qi∣λ(t))+η(∑i=1Nπi−1)L(\pi, \eta) = \sum_{i=1}^N log\;\pi_i \cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta \big(\sum_{i=1}^N \pi_i -1\big) L(π,η)=i=1∑N​logπi​⋅P(O,i1​=qi​∣λ(t))+η(i=1∑N​πi​−1)
对拉格朗日函数求关于 πi\pi_iπi​ 的偏导,并令其为0:
∂L(π,η)∂πi=1πi⋅P(O,i1=qi∣λ(t))+η=0⋯①\frac{\partial L(\pi, \eta)}{\partial \pi_i} = \frac{1}{\pi_i}\cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta = 0 \quad \cdots \text{①} ∂πi​∂L(π,η)​=πi​1​⋅P(O,i1​=qi​∣λ(t))+η=0⋯①

⇒πi=−P(O,i1=qi∣λ(t))η⋯②\Rightarrow \pi_i = -\frac{P(O,\;i_1=q_i|\lambda^{(t)})}{\eta} \quad \cdots \text{②} ⇒πi​=−ηP(O,i1​=qi​∣λ(t))​⋯②

我们对式①等号两边的式子对 iii 在 1,2,...,N1,2,...,N1,2,...,N 上求和,即得:
∑i=1N[1πi⋅P(O,i1=qi∣λ(t))+η]=0\sum_{i=1}^N \big[\frac{1}{\pi_i}\cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta\big] = 0 i=1∑N​[πi​1​⋅P(O,i1​=qi​∣λ(t))+η]=0

⇒∑i=1N[P(O,i1=qi∣λ(t))+πiη]=0\Rightarrow \sum_{i=1}^N \big[P(O,\;i_1=q_i|\lambda^{(t)}) + \pi_i \eta\big] = 0 ⇒i=1∑N​[P(O,i1​=qi​∣λ(t))+πi​η]=0

⇒P(O∣λ(t))+η=0\Rightarrow P(O|\lambda^{(t)}) + \eta = 0 ⇒P(O∣λ(t))+η=0

⇒η=−P(O∣λ(t))⋯③\Rightarrow \eta = -P(O|\lambda^{(t)}) \quad \cdots \text{③} ⇒η=−P(O∣λ(t))⋯③

将式③代入到式②中,可得:
πi(t+1)=P(O,i1=qi∣λ(t))P(O∣λ(t))\pi_i^{(t+1)} = \frac{P(O,\;i_1=q_i|\lambda^{(t)})}{P(O|\lambda^{(t)})} πi(t+1)​=P(O∣λ(t))P(O,i1​=qi​∣λ(t))​
这样我们就得到了 t+1t+1t+1 时刻的参数 πi\pi_iπi​ 由时刻 ttt 的模型参数更新的表达式。

HMM隐马尔可夫模型解决的问题及推导过程相关推荐

  1. 李航《统计学习方法》之HMM隐马尔可夫模型

    李航<统计学习方法>之HMM隐马尔可夫模型 文章目录 前言 一.基本概念 1.语言描述: 2.符号表示 3.基本假设 4.例子 5.隐马尔可夫模型解决的三个基本问题 二.概率计算算法 1. ...

  2. NLP基础 : HMM 隐马尔可夫模型

    Hidden Markov Model, HMM 隐马尔可夫模型,是一种描述隐性变量(状态)和显性变量(观测状态)之间关系的模型.该模型遵循两个假设,隐性状态i只取决于前一个隐性状态i-1,而与其他先 ...

  3. HMM隐马尔科夫模型(附维特比代码)

    背景知识:马尔科夫模型 1 马尔科夫的局限性 在一些情况下,我们并不能直接得到观测的结果,比如在天气系统中,我们不能直接得到天气的状态,但是我们有一堆蚂蚁,可以从蚂蚁的行为状态找到天气变化的关系规律. ...

  4. 第五篇:HMM 隐马尔可夫模型

    目录 概览 训练 预测(维特比算法) 概览 HMM本身也是用于序列标注,为什么需要HMM? POS 标记,我们按照一句话为一个类别,也就是将该句子中的每个词的对应的类别,连起来作为一个类别,比如NN_ ...

  5. HMM隐马尔科夫模型浅析

    http://www.zhihu.com/question/20962240 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Yang Eninala 链接:http:/ ...

  6. HMM隐马尔可夫模型(HMM)攻略

    隐马尔可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些学者发表在一系列的统计学论文中,随后在语言识别,自然语言处理以及生物信息等领域体现了很大的价 ...

  7. HMM隐马尔可夫模型进行中文文本分词

    文章目录 一.HMM简述 1.引入 2.隐马尔科夫模型 (1)定义(Definition of a hidden Markov model) (2)应用 3.前向算法(了解) 4. 维特比算法 5.前 ...

  8. HMM隐马尔科夫模型 学习总结

    隐马尔可夫模型(Hidden Markov Model,简称HMM)是结构最简单的动态贝叶斯网(dynamic Bayesian network),这是一种著名的有向图模型,主要用于时序数据建模,在语 ...

  9. HMM(隐马尔科夫模型)

    HMM模型基础 介绍 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.当然,随着目前深度学 ...

最新文章

  1. 教你用机器学习匹配导师 !(附代码)
  2. Spring Boot 搭载属于你的网站框架(一)
  3. ThreadLocal原理与使用
  4. 《Docker——容器与容器云》:第一章 从容器到容器云
  5. [NOTE] sqli-labs Adv Injections
  6. python 子串是否在字符串中_python七种方法判断字符串是否包含子串
  7. java 获取打印机缺纸_JAVASE 语言概述和JAVA
  8. mysql索引类型和区别是什么意思_mysql主键索引和普通索引之间的区别是什么
  9. “出道” 5 年采用率达 78%,Kubernetes 为何如此成功?
  10. 编译安装Nginx-1.0.1
  11. ros melodic控制真实机械臂之moveit_setup_assistant配置
  12. MySQL prompt提示符总结
  13. Cisco思科交换机Vlan划分
  14. 原生JavaScript实现查找汉字首字母
  15. 微信小程序 tab点击切换(不滑动)
  16. 河北专升本经验总结分享
  17. C++(18)——温度表达转化
  18. 7-1 厘米换算英尺英寸(基础编程题)
  19. 一篇文章带你认识数学建模中的二维插值
  20. IDA动态调试两种方式

热门文章

  1. Twitter爬虫Python库Tweepy 附中英文官方文档
  2. asm 多工 控制文件
  3. STVD使用printf输出数据错误
  4. 最大信息熵增益_信息熵(Entropy)、信息增益(Information Gain)
  5. [USACO 2.2.1] Preface Numbering
  6. graylog+kafka+zookeeper(单机测试及源码),graylog测试用例及源码(三)
  7. MediaInfo与wmv3 wma3 的解码器
  8. host文件位置 修改ip映射地址
  9. 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
  10. 【IDE】AndroidStudio关闭Related problems提示