Decoder has a copy of the encoder, compares received symbols with versions regenerated locally.
By "intelligent" trial and error, the decoder finds the data sequence that produces the best match between the locally regenerated symbols and the actual received sequence.
The decoder also produces a "metric", its estimate of the quality of the incoming symbol stream. Like an S-meter, only more useful.
Decoder is very fast when there are few errors because it doesn't have to back up very much; slows down considerably when error rate is very high.