Rabiner  lists three basic problems for HMMs:
Problem 1 is not a learning problem but rather one needed in evaluating the model. Its difficulty comes from the fact that one needs to calculate the sum over all the possible state sequences. This can be diverted by calculating the probabilities recursively with respect to the length of the observation sequence. This operation forms one half of the forward-backward algorithm and it is very typical for HMM calculations. The algorithm uses an auxiliary variable which is defined as
The algorithm to evaluate proceeds as follows:
The solution of Problem 2 is much more difficult. Rabiner uses classical statistics and interprets it as a maximum likelihood estimation problem for the state sequence, the solution of which is given by the Viterbi algorithm. A Bayesian solution to the problem can be found with a simple modification of the solution of the next problem which essentially uses the posterior of the hidden states.
Rabiner's statement of Problem 3 is more precise than ours and asks for the maximum likelihood solution optimising with respect to . This problem is solved by the Baum-Welch algorithm which is an application of the EM algorithm to the problem.
The Baum-Welch algorithm uses the complete forward-backward procedure with a backward pass to compute . This can be done very much like the forward pass:
The M-step of Baum-Welch algorithm can be expressed in terms of , the posterior probability that there was a transition between state and state at time step given and . This probability can be easily calculated with forward and backward variables and :