Iterative Viterbi decoding


Iterative Viterbi decoding is an algorithm that spots the subsequence S of an observation O = having the highest average probability of being generated by a given hidden Markov model M with m states. The algorithm uses a modified Viterbi algorithm as an internal step.
The scaled probability measure was first proposed by John S. Bridle. An early algorithm to solve this problem, sliding window, was proposed by Jay G. Wilpon et al., 1989, with constant cost T = mn2/2.
A faster algorithm consists of an iteration of calls to the Viterbi algorithm, reestimating a filler score until convergence.

The algorithm

A basic version, finding the sequence s with the smallest normalized distance from some subsequence of t is:

// input is placed in observation s, template t,
// and distance matrix d
// remaining elements in matrices are solely for internal computations
AverageSubmatchDistance], char t, int d1..n,0..

The ViterbiDistance procedure [returns
the tuple, i.e., the Viterbi score "e" for the match of t and the selected entry and exit points from it. "B" and "E" have to be recorded using a simple modification to Viterbi.
A modification that can be applied to CYK tables, proposed by Antoine Rozenknop, consists in subtracting e from all elements of the initial matrix d.