繁体   English   中英

Baum Welch(EM算法)似然性(P(X))不是单调收敛

[英]Baum Welch (EM Algorithm) likelihood (P(X)) is not monotonically converging

因此,在机器学习方面,我是一个业余爱好者,我正在尝试对Baum Welch算法进行编程,该算法是针对隐马尔可夫模型的EM算法的衍生。 在我的程序中,我正在使用新模型中每个观察序列的概率测试收敛性,然后在新模型小于或等于旧模型时终止。 但是,当我运行该算法时,它似乎收敛了一些,并且给出的结果远好于随机结果,但是收敛时,它在最后一次迭代中下降了 这是错误的征兆还是我做错了什么?

在我看来,我应该一直使用每个观察值的概率的总和来进行比较,因为这似乎是我正在使函数最大化。 但是,我读过的论文说使用观测值的概率之和的对数 (我敢肯定与概率之和相同)( https://www.cs.utah.edu/~piyush /teaching/EM_algorithm.pdf )。

我在另一个项目上解决了这个问题,在该项目中,我通过使用具有预先设定的时期数的for循环而不是while循环来实现带有前馈神经网络的反向传播,条件是新迭代必须严格大于,但是我想知道是否这是一个坏习惯。

我的代码位于nlp.py文件中的https://github.com/icantrell/Natural-Language-Processing

任何意见,将不胜感激。 谢谢。

对于EM迭代,或证明其他任何迭代都没有减少的迭代,您应该会看到增加,直到与浮点误差相比增加的大小变小为止,此时浮点误差违反了证明中的假设,您可能会看到不仅增加失败,而且减少幅度很小-但这应该很小。

检查这些基于概率的计算的一种好方法是创建一个小的测试问题,在该问题上显而易见的正确答案非常明显,以至于您可以看到被测代码的答案是否显然完全正确。

可能值得将您参考的论文与https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm#Proof_of_correctness进行比较。 我认为方程式(11)和(12)并非供您实际计算,而是作为激励和证明最终结果的参数。 我认为您要计算的与传统EM步骤相对应的方程式是方程式(15),该方程式表示您在每一步更改参数以增加预期的对数似然性,这是在计算的隐藏状态分布下的预期根据旧参数,这是标准的EM步骤。 实际上,翻身我看到这是在P 8的顶部明确声明的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM