Viterbri算法理解

今天看了一下Viterbri算法,该算法用于输出隐式马尔科夫链(HMM)中的最具可能性的隐式状态转移序列。

根据wiki百科的资料,其算法流程可看作是

可直接将其看作是一个二维DP问题,一维是隐式的状态空间,另一维是时间。

我们最终要计算,对于给定的观察序列,计算最大可能性的隐式状态序列。而递归的形式为max[S][T]=max[S'][T-1]*A(S,S')*B(S',O(T))

理解该解法的关键在于:为了考虑T时间哪个状态的概率最大,只需要知道T-1时间到达每个状态的最大概率即可;当然,我不是说T-1时间最大概率的状态最大,T时间该状态的概率就一定最大,因为还要考虑状态转移矩阵和输出分布矩阵。

另外,我觉得这一方法一个比较奇怪的地方在于,在任一时间,到达每一状态的概率之和不为1,因为此处每一次迭代在max[S][T]中记录的概率是路径的概率(①此时处于S状态②且符合观察地点序列的概率最大的),而不是到达这一地点的概率;并且因为Markov的性质,之后的转移情况只和当前时间的状态有关,所以为了继续保持这一性质(①此时处于S状态②且符合观察地点序列的概率最大的),只需考虑上一时间的各状态的最大概率的路径即可。

猜你喜欢

转载自www.cnblogs.com/cool-breezer/p/10570834.html