1.隐含状态解码问题的描述
上一节我们讲完了概率估计问题,这里我们再来讲一下隐马尔科夫模型的状态解码问题。
解码: d e c o d i n g decoding decoding,就是给定一个已知的观测序列,求他最有可能对应的状态序列。那么用形式化的语言来说就是已知模型 λ = ( 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 ) P(I|O) P(I∣O)最大的隐状态序列 I = ( i 1 , i 2 , . . . , i T ) I=(i_1,i_2,...,i_T) I=(i1,i2,...,iT)。
我们一步一步的来,先不考虑输出观测,仅仅只考虑隐状态的转移,来体会一下思路,首先我们的目标是去找到路径概率最大的一条状态序列。
我们对着下面这幅图来说,会让大家更好理解一些:
图中展现的隐马尔科夫模型中的状态序列,其中一共包含 5 5 5种隐含状态,状态序列的长度为 7 7 7,那么图中很明显横轴是时间轴,纵轴是状态轴。
2.最大路径概率与维特比算法
我们从整个隐含状态序列的最后往前面看,在第 7 7 7个时间点,也就是最后一个时间点这,我们要考虑状态序列的最后一个状态是状态 [ 1 , 2 , 3 , 4 , 5 ] [1,2,3,4,5] [1,2,3,4,5]中的哪一个?实质上就是比较路径以谁为结束状态,整个路径的概率最大。
那怎么操作?我们首先关注的是最后一个时间节点 7 7 7,问题就落脚在如果状态转移路径以结束于状态 k k k的路径概率最大(可以是状态 1 1 1-状态 5 5 5中的任意一个,我们先不管他具体是哪一个了,只知道肯定是其中一个),那么这个概率该怎么表示呢?很显然,他依赖于时间节点 6 6 6可能选取的 5 5 5个状态。
实际上,时间节点 6 6 6取 5 5 5个状态中的任意一个都是有可能的,可能由时间节点 6 6 6处的状态 1 1 1转移到时间节点 7 7 7处的状态 k k k,也可能由状态 2 2 2转移到时间节点 7 7 7的状态 k k k,当然也可以是状态 3 3 3、状态 4 4 4或者状态 5 5 5。最终就看从哪里转移过去的路径概率最大,就选择从哪里转移过去,过程示意如下图所示:
我们令 X 6 i X_{6i} X6i表示到达时间节点 6 6 6时,此时状态为 i i i的最大路径概率,当然了,状态 i i i可以取 { 1 , 2 , 3 , 4 , 5 } \{1,2,3,4,5\} {1,2,3,4,5}中的任意一个,那么实际上就有 X 61 X_{61} X61, X 62 X_{62} X62, X 63 X_{63} X63, X 64 X_{64} X64, X 65 X_{65} X65五个不同的值。在上面这幅图中,就对应了虚线框中五种颜色示意的到达时间节点 6 6 6的五条路径,他们分别都是在时间节点 6 6 6时到达对应状态 i i i的最大概率路