Iterative Viterbi decoding
- Iterative Viterbi decoding
Iterative Viterbi decoding is an algorithm that spots the subsequence "S" of an observation "O" = {"o"1, ..., "o""n"} having the highest average probability (i.e., probability scaled by the length of "S") 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" = "mn"2/2.
A faster algorithm consists of an iteration of calls to the Viterbi algorithm, reestimating a filler score until convergence.
The algorithm
A basic (non-optimized) version, finding the sequence "s" with the smallest normalized distance from some subsequence of "t" is:
// input is placed in observation s [1..n] , template t [1..m] ,// and
distance matrix d [1..n,1..m] // remaining elements in matrices are solely for internal computations(int, int, int) AverageSubmatchDistance(char s [0..(n+1)] , char t [0..(m+1)] , int d [1..n,0..(m+1)] ) { // score, subsequence start, subsequence end declare int e, B, E t' [0] := t' [m+1] := s' [0] := s' [n+1] := 'e'
e := random() do e' := e for i := 1 to n do d' [i,0] := d' [i,m+1] := e (e, B, E) := ViterbiDistance(s', t', d') e := e/(E-B+1) until (e = e')
return (e, B, E)}
The ViterbiDistance() procedure returns the tuple ("e", "B", "E"), i.e., the Viterbi score "e" for the match of "t" and the selected entry ("B") and exit ("E") 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".
References
* Silaghi, M., "Spotting Subsequences matching a HMM using the Average Observation Probability Criteria with application to Keyword Spotting", AAAI, 2005.
* Rozenknop, Antoine, and Silaghi, Marius; "Algorithme de décodage de treillis selon le critère de coût moyen pour la reconnaissance de la parole", TALN 2001.
Wikimedia Foundation.
2010.
Look at other dictionaries:
Viterbi algorithm — The Viterbi algorithm is a dynamic programming algorithm for finding the most likely sequence of hidden states ndash; called the Viterbi path ndash; that results in a sequence of observed events, especially in the context of Markov information… … Wikipedia
Error detection and correction — In mathematics, computer science, telecommunication, and information theory, error detection and correction has great practical importance in maintaining data (information) integrity across noisy channels and less than reliable storage… … Wikipedia
Keyword spotting — is a subfield of speech recognition that deals with the identification of keywords in utterances.There are several types of keyword spotting: * Keyword spotting in unconstrained speech * Keyword spotting in isolated word recognitionKeyword… … Wikipedia
Forward error correction — In telecommunication, information theory, and coding theory, forward error correction (FEC) or channel coding[1] is a technique used for controlling errors in data transmission over unreliable or noisy communication channels. The central idea is… … Wikipedia
Turbo code — In electrical engineering and digital communications, turbo codes (originally in French Turbocodes ) are a class of high performance error correction codes developed in 1993 which are finding use in deep space satellite communications and other… … Wikipedia
Concatenated error correction code — In coding theory, concatenated codes form a class of error correcting codes that are derived by combining an inner code and an outer code. They were conceived in 1966 by Dave Forney as a solution to the problem of finding a code that has both… … Wikipedia
Turbo-Convolutional-Code — Turbo Codes sind eine Gruppe von fehlerkorrigierenden Block oder Faltungs Codes, welche in der digitalen Signalverarbeitung zur gesicherten Datenübertragung, beispielsweise auf Satelliten Übertragungsstrecken, verwendet werden. Sie wurden 1993… … Deutsch Wikipedia
Turbocode — Turbo Codes sind eine Gruppe von fehlerkorrigierenden Block oder Faltungs Codes, welche in der digitalen Signalverarbeitung zur gesicherten Datenübertragung, beispielsweise auf Satelliten Übertragungsstrecken, verwendet werden. Sie wurden 1993… … Deutsch Wikipedia
Turbo-Code — Turbo Codes sind eine Gruppe von fehlerkorrigierenden Block oder Faltungs Codes, welche in der digitalen Signalverarbeitung zur gesicherten Datenübertragung, beispielsweise auf Satelliten Übertragungsstrecken, verwendet werden. Sie wurden 1993… … Deutsch Wikipedia
Cellular neural network — Cellular neural networks (CNN) are a parallel computing paradigm similar to neural networks, with the difference that communication is allowed between neighbouring units only. Typical applications include image processing, analyzing 3D surfaces,… … Wikipedia