Baum-Welch 许多可能的观察

Baum-Welch many possible observations

我已经在 python 中实现了 baum-welch 算法,但我现在在尝试训练 HMM(隐马尔可夫模型)参数 ABpi。问题是我有很多观察序列Y = (Y_1=y_1, Y_2=y_2,...,Y_t=y_t)。每个观察变量 Y_t 可以取 K 可能的值,在我的例子中是 K=4096。幸运的是我只有两个状态 N=2,但是我的发射矩阵 BN by K 所以 2 行乘 4096 列。

现在初始化B时,每一行的总和必须为1。由于两行各有4096个值,所以数字很小。如此之小,以至于当我去计算 alphabeta 时,随着 t 的增加,它们的行最终接近 0。这是一个问题,因为您无法计算 gamma,因为它试图计算 x/00/0。我怎样才能 运行 算法不崩溃并且不永久改变我的值?

这听起来像是标准的 HMM 缩放问题。看看 "A Tutorial on Hidden Markov Models ..."(Rabiner,1989),第 V.A "Scaling".

部分

简而言之,您可以每次重新缩放 alpha 以求和为 1,并使用与相应 [=10] 相同的 因子重新缩放 beta =],一切正常。