我已经根据Rabiner教程针对单个观察序列(基于MFCC数据)实施了针对HMM的评估和训练算法。对于前向和后向算法,我还包括建议的缩放以处理下溢问题。对于Baum-Welch优化,我相应地计算概率为
log(P) = -sum(log(scaling coefficients))
Baum-Welch优化似乎可以在几次迭代中正常工作,直到我在计算密度时遇到下溢。我使用Matlab内置函数 mvnpdf 来计算密度。经过几次迭代后,Matlab开始将最低密度设置为0.对于Baum-Welch优化中的以下计算,Emission / PDF-Matrix中的零条目产生NaN,并且进一步优化失败。
我很感激有关如何规避或避免这个问题的任何帮助。