The Viterbi learning algorithm (not to be confused with the Viterbi algorithm for state estimation) takes a set of training observations Or, with 1≤r≤R, and estimates the parameters of a single HMM by iteratively computing Viterbi alignments. When used to initialize a new HMM, the Viterbi segmentation is replaced by a uniform segmentation (that is, each training observation is divided into N equal segments) for the first iteration.
Other than the first iteration on a new model, each training sequence O is segmented using a state alignment procedure which results from maximizing:
for 1<i<N where:
And the initial ...