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

서열 x에 대해, 많은 다른 state path가 존재할 수 있기때문에 이들 모든 가능한 path들의 더하여, full Probability of x를 다음처럼 구한다.

P(x) = SUM { P(x,π) }

가능한 path π는 서열의 길이가 증가함에 따라 지수적으로 증가함으로 모든 path를 고려하는 것은 불가능하다. 따라서, most probable path π*를 구한후, P(x)를 approximation한다. 사실 P(x)는 approximation할 필요가 없는데, ViterbiAlgorithmDynamicProgramming절차와 유사한 방법으로 계산될 수 있기 때문이다. 이것이 ForwardAlgorithm.

ViterbiAlgorithm의 vk(i)와 대응되는 변수로 fk(i)사용. 이것은 πi=k인 xi까지의 서열들이 관측될 JointProbability이다.

fk(i) = P(x1...xi, πi=k)

Recursion방법으로 다음식을 사용한다.

fl(i+1) = el(x(i+1)) SUM(k){ fk(i)akl }.

ForwardAlgorithm

Initialisation (i=0) :    f0(0)=1, fk(0)=0 for k>0.

Recursion (i=1...L) :     fl(i) = el(xi) SUM(k){ fk(i-1)akl }.

Termination :             P(x) = SUM(k){ fk(L)ak0 }.

See also: BackwardAlgorithm

web biohackers.net