首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Baum Welch (EM算法)似然(P(X))不是单调收敛的

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

Stack Overflow用户
提问于 2018-01-17 14:26:23
回答 1查看 818关注 0票数 0

在机器学习方面,我是个业余爱好者,我试图编写Baum算法,它是隐马尔可夫模型EM算法的派生。在我的程序中,我使用新模型中每个观测序列的概率来测试收敛性,然后在新模型小于或等于旧模型时终止。然而,当我运行该算法时,它似乎有点收敛,并给出了比随机结果好得多的结果,但在收敛时给出了的结果,在最后一次迭代上下降了。这是窃听器的迹象还是我做错了什么?

在我看来,我应该使用每个观测的概率的日志的求和来进行比较,因为它似乎是我正在最大化的函数。然而,我读到的这篇论文使用了概率之和的日志(我确信它与观测值(algorithm.pdf)的概率之和相同)。

我在另一个项目中修正了这个问题,我用前馈神经网络实现了反向传播,实现了一个具有预先设定的周期数的for循环,而不是一个while循环,其条件是新的迭代严格大于,但我想知道这是否是一个糟糕的实践。

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

如有任何建议,将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-18 21:58:39

对于EM迭代,或者任何其他的迭代被证明是不减少的,你应该看到增加的幅度比浮点误差小,在这个时候,浮点误差违反了证明中的假设,你可能不仅会看到增加的失败,而且会看到很小的减少--但是这应该很小。

检查这些基于概率的计算的一个好方法是创建一个小的测试问题,其中正确的答案是显而易见的--非常明显,您可以看到来自被测试代码的答案显然是正确的。

可能值得将您引用的论文与correctness进行比较。我认为像(11)和(12)这样的方程并不是为了让你实际计算,而是作为激发和证明最终结果的论据。我认为与传统EM步骤对应的方程是方程(15),它表示在每一步改变参数以增加期望的log-似然,这是根据旧参数计算的隐藏状态分布下的期望,这是标准的EM步骤。事实上,翻过来,我看到,这是明确说明在P8顶部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48311021

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文