首先我们来研究HMM的第一个问题 – 估计问题。给定一个HMM模型μ=(S,K,A,B,π)\mu =\left ( S,K,A,B,\pi \right )μ=(S,K,A,B,π)和观察序列O=O1O2O3...OTO=O_{1}O_{2}O_{3}...O_{T}O=O1O2O3...OT,如何快速地计算出给定模型μ\muμ的情况下,观察序列O的概率,即P(O∣μ)P\left ( O|\mu \right )P(O∣μ)?这就是解码问题,这里介绍穷尽所有可能的状态序列、前向算法、后向算法以及前向后向相结合的算法四种方法。
一、穷尽法
此种方法是穷尽所有的状态序列,计算出观察序列O=O1O2O3...OTO=O_{1}O_{2}O_{3}...O_{T}O=O1O2O3...OT出现的概率。对于任意的状态序列Q=q1q2q3...qTQ=q_{1}q_{2}q_{3}...q_{T}Q=q1q2q3...qT,有P(O∣Q,μ)=∏t=1T−1P(Ot∣qt,qt+1,μ)=bq1(O1)×bq2(O2)×...bqT(OT)P\left ( O|Q,\mu \right )=\prod_{t=1}^{T-1}P\left ( O_{t}|q_{t},q_{t+1},\mu \right )\\=b_{q_{1}}\left ( O_{1} \right )\times b_{q_{2}}\left ( O_{2} \right )\times ...b_{q_{T}}\left ( O_{T} \right )P(O∣Q,μ)=t=1∏T−1P(Ot∣qt,qt+1,μ)=bq1(O1)×bq2(O2)×...bqT(OT)
并且P(Q∣μ)=πq1aq1q2aq2q3...aqT−1qTP\left ( Q|\mu \right )=\pi _{q_{1}}a_{q_{1}q_{2}}a_{q_{2}q_{3}}...a_{q_{T-1}q_{T}}P(Q∣μ)=πq1aq1q2aq2q3...aqT−1qT
由于P(O,Q∣μ)=P(O∣Q,μ)P(Q∣μ)P\left ( O,Q|\mu \right )=P\left ( O|Q,\mu \right )P\left ( Q|\mu \right )P(O,Q∣μ)=P(O∣Q,μ)P(Q∣μ)
因此P(O∣μ)=∑QP(O,Q∣μ)=∑QP(O∣Q,μ)P(Q∣μ)=∑Qπq1bq1(O1)∏t=1T−1aqtqt+1bqt+1(Ot+1)P\left ( O|\mu \right )=\sum_{Q}P\left ( O,Q|\mu \right )\\ =\sum_{Q}P\left ( O|Q,\mu \right )P\left ( Q|\mu \right )\\ =\sum_{Q}\pi _{q_{1}}b_{q_{1}}\left ( O_{1} \right )\prod_{t=1}^{T-1}a_{q_{t}q_{t+1}}b_{q_{t+1}}\left ( O_{t+1} \right )P(O∣μ)=Q∑P(O,Q∣μ)=Q∑P(O∣Q,μ)P(Q∣μ)=Q∑πq1bq1(O1)t=1∏T−1aqtqt+1bqt+1(Ot+1)
上述推导方法很直接,但是面临一个很大的困难,必须穷尽所有可能的状态序列,如果模型μ=(S,K,A,B,π)\mu =\left ( S,K,A,B,\pi \right )μ=(S,K,A,B,π)中有N个不同的状态,观察序列的长度为T,那么将有NTN^{T}