【问题标题】:Baum Welch (EM Algorithm) likelihood (P(X)) is not monotonically convergingBaum Welch(EM 算法)似然性 (P(X)) 不是单调收敛的
【发布时间】:2018-06-26 22:03:35
【问题描述】:

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

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

我在另一个项目中解决了这个问题,在该项目中,我使用前馈神经网络实现了反向传播,方法是实现一个具有预设时期数的 for 循环,而不是一个 while 循环,其中新迭代的条件严格大于但我我想知道这是否是一种不好的做法。

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

任何建议将不胜感激。 谢谢。

【问题讨论】:

    标签: python algorithm machine-learning nlp expectation-maximization


    【解决方案1】:

    对于 EM 迭代,或任何其他被证明是非递减的迭代,您应该看到增加,直到增加的大小与浮点误差相比变得较小,此时浮点误差违反了证明中的假设,并且您可能不仅会看到没有增加,而且会看到非常小的减少 - 但这应该只是非常小。

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

    可能值得将您引用的论文与https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm#Proof_of_correctness 进行比较。我认为(11)和(12)之类的等式不是供您实际计算的,而是作为激发和证明最终结果的论据。我认为与您计算的传统 EM 步骤相对应的方程是方程 (15),它表示您在每个步骤中更改参数以增加预期的对数似然,这是计算的隐藏状态分布下的期望根据旧参数,这是标准的 EM 步骤。其实翻一下我看P 8上面有明确说明的。

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 2016-05-12
      • 2012-01-12
      • 2011-12-19
      • 2014-06-11
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多