Hey all,

I am having some issues with NaNs in my HMM implementation and wonder if anybody has come across this or even better knows a solution. I pretty much follow Stamp's tutorial to the letter but sometimes I get a situation where during the last iteration of the alpha pass, either all alphas or values of B for this step are zero, resulting in a zero sum of all alphas, which in turn results in an infinite scaling factor.

Now in the alpha pass I don't really notice this since 0 * infinity = 0.

This problem only shows up further down the line where I use the scaling factor in the beta pass, multiplying with it and getting an all-NaN beta array.

I found this post from 2004 with someone having the very same problem while using the stamp pseudocode. This suggests to me that ...

  • The pseudocode still has a problem/bug regarding numerical stability OR
  • This is to be expected OR
  • I made the same mistake as other people ( I know of at least two).

Using this implementation I am still able to get a 200points score though since it doesn't happen every time.

Does anybody have pointers to where the problem might lie?