Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 估计高维Markov-Switching/HMM模型的似然函数的期望与直接数值优化_Algorithm_Hidden Markov Models_Markov Models - Fatal编程技术网

Algorithm 估计高维Markov-Switching/HMM模型的似然函数的期望与直接数值优化

Algorithm 估计高维Markov-Switching/HMM模型的似然函数的期望与直接数值优化,algorithm,hidden-markov-models,markov-models,Algorithm,Hidden Markov Models,Markov Models,我目前正在使用对数似然函数的直接优化(通过前向-后向算法)估计一个具有多个参数的马尔可夫切换模型。我使用matlab的遗传算法进行数值优化,因为其他方法,如fmincon和fminsearchbnd中的(主要是基于梯度或单纯形的)算法不是很有用,因为似然函数不仅具有很高的维数,而且还显示出许多局部极大值,并且是高度非线性的。 遗传算法似乎工作得很好。然而,我计划进一步扩大问题的范围。我读过关于估计马尔可夫切换模型的EM算法。据我所知,该算法释放了一系列增加的对数似然值。因此,它似乎适合估计具有很

我目前正在使用对数似然函数的直接优化(通过前向-后向算法)估计一个具有多个参数的马尔可夫切换模型。我使用matlab的遗传算法进行数值优化,因为其他方法,如fmincon和fminsearchbnd中的(主要是基于梯度或单纯形的)算法不是很有用,因为似然函数不仅具有很高的维数,而且还显示出许多局部极大值,并且是高度非线性的。 遗传算法似乎工作得很好。然而,我计划进一步扩大问题的范围。我读过关于估计马尔可夫切换模型的EM算法。据我所知,该算法释放了一系列增加的对数似然值。因此,它似乎适合估计具有很多参数的模型


我的问题是EM算法是否适用于我涉及多个参数的应用(可能更适合作为遗传算法)。速度不是主要限制(遗传算法非常慢),但我需要有一定的把握才能接近全局最优,而不是陷入众多局部最优。你对此有什么经验或建议吗?

EM算法可以找到局部最优解,但不能保证它们是全局最优解。事实上,如果你从一个HMM开始,其中一个转移概率为零,该概率通常不会从零开始改变,因为这些转移只会在期望步骤中以期望零出现,因此,这些起点没有希望找到一个全局最优解,它的转移概率不为零

标准的解决方法是从各种不同的随机参数设置开始,选择找到的最高局部最优值,并希望得到最好的结果。如果很大一部分运行收敛到找到的相同(或等效)最佳局部最优值,您可能会稍微放心,因为这不是非常可靠的理论,即至少从相同的随机启动部分可以找到更好的结果,因此现在应该已经出现了


我还没有详细研究过,但是EM算法解决了一系列的问题,我希望如果它能保证找到全局最优解,那么它就能够以前所未有的效率找到NP完全问题的解决方案。

你说的是校准,即估计模型的参数,不是基于一系列观察来估计状态的历史路径,对吗?是的,目标是参数估计,但这也会产生过滤和预测概率(平滑概率可以通过Kim的平滑算法获得)。谢谢你的回答。转移概率矩阵中的零概率是不可能的(我根本不会使用这些作为起始值)。我已经通过fmincon/fminsearchbnd尝试了许多随机起始值,但发现它们中的大多数会收敛到完全不同的解(具有一些类似的似然函数值)。这是否意味着似然函数的行为也会导致EM算法收敛到完全不同的解,或者从这个意义上说它更“稳健”?EM算法仍然在使用和教授,因此我认为在应用的情况下,它比FMINCO更有效,这似乎是一个通用优化程序,不需要或利用提供的衍生工具。我没有比较这两者,但我想EM算法可能允许您在相同的时间内进行更多的运行,因此,即使存在同样多的局部极小值,您也可能有更好的机会找到真正好的。两个可能性非常相似的解决方案在参数排列时可能真的是相同的。设置一个你知道正确答案的模拟问题并用它来测试你为解决这些问题而编写的程序也是值得的,这两个问题都有bug(简单的问题和明显的答案都有好处)以及统计能力。对于后者,您可以使用从实际问题中检索到的最佳答案作为模拟的正确答案。另请参见。感谢回到这里。我已经通过模拟验证了我现有的代码,但我想找出EM与目前为止尝试的算法相比如何的唯一方法是实际实现它并进行尝试。再次感谢!