[英]Baum-Welch many possible observations
我已经在python中实现了baum-welch算法,但是现在尝试训练HMM(隐马尔可夫模型)参数A
, B
和pi
时遇到问题。 问题是我有很多观察序列Y = (Y_1=y_1, Y_2=y_2,...,Y_t=y_t)
。 每个观察变量Y_t
可以具有K
可能的值,在我的情况下为K=4096
。 幸运的是,我只有两个状态N=2
,但是我的发射矩阵B
是N by K
所以2行×4096列。
现在,当您初始化B时,每一行的总和必须为1。由于两行中的每一行都有4096个值,因此数字非常小。 太小了,以至于当我计算alpha
和beta
随着t
增加,它们的行最终接近0。 这是一个问题,因为您无法在尝试计算x/0
或0/0
计算gamma
。 如何在不崩溃且不永久更改值的情况下运行算法?
这听起来像是标准的HMM缩放问题。 看一看“隐马尔可夫模型教程...”(Rabiner,1989年),第VA节“缩放”。
简而言之,您可以每次将alpha
重新缩放为1,然后使用与相应alpha
相同的因子重新缩放beta
,一切都会正常进行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.