HiddenMarkovModel에서의 state path 찾는방법의 한가지. Decoding의 한 방법.

ViterbiAlgorithm이 most probable path를 찾는 방법이긴 하나, 이것이 항상 적절하지는 않다.

주어진 서열 xi에 대한 state를 알기 원하나, 보다 일반적으로, 주어진 서열에 대해 state k로 부터 온 관측 xi의 Probability를 알기 원한다. 이것은 ConditionalProbability P(πi=k|x)이며, emitted sequence가 알려졌을 때, state k일 PosteriorProbability 이다.

ViterbiAlgorithm의 vk(i)와 대응되는 변수로 bk(i)사용.

bk(i) = P(x(i+1)...x(L) | πi=k)

BackwardAlgorithm

Initialisation (i=L) :       bk(L) = ak0 for all k.

Recursion (i=L-1,...,1) :    bk(i) = SUM(l){ akl el(x(i+1)) bl(i+1) }.

Termination:                 P(x) = SUM(l){ aol el(x1) bl(1) }.

ForwardAlgorithm의 fk(i)와의 관계. 여기서, P(x)는 forward or backward calculation의 결과.

               fk(i) bk(i)
P(πi=k | x) = ------------
                  P(x)
web biohackers.net