Baum-Welch算法和Viterbi训练之间有什么区别?


18

我目前正在使用Viterbi训练来解决图像分割问题。我想知道使用Baum-Welch算法而不是Viterbi训练有什么优点/缺点。


3
“维特比训练”到底是什么意思?
bmargulies

2
在我的问题中,我有一个实值数据数组,我将它们建模为HMM(具体来说是多个密度函数的混合,每个都有未知的参数)。现在,我假设我知道状态转换的概率。Viterbi Trainig的意思是以下算法。1)对每个数据点任意分配状态(初始化)2)对密度函数参数执行MLE。3)重新估计每个点的状态(可以使用Viterbi Alg完成)。4)转到步骤2,然后重复执行,除非满足停止条件。
Digital Gal

1
在堆栈溢出时也提出了相同的问题:维特比训练与baum-welch算法
Franck Dernoncourt

Answers:


21

Baum-Welch算法和Viterbi算法计算不同的事物。

如果您知道模型的隐藏部分的转移概率以及模型的可见输出的发射概率,那么维特比算法会根据您的输出和模型规格为您提供最可能的完整隐藏状态序列。

Baum-Welch算法仅在模型的观察状态(通常是隐藏状态数的上限)的情况下,为您提供最可能的隐藏过渡概率以及最可能的发射概率集。您还会在隐藏状态下获得“逐点”最高似然点,该点通常与总体上最有可能出现的单个隐藏序列略有不同。

如果您知道模型并且只想要潜在状态,那么就没有理由使用Baum-Welch算法。如果您不知道您的模型,那么您将无法使用Viterbi算法。

编辑添加:参见Peter Smit的评论;术语中有些重叠/模糊。戳了戳之后,我进入了Luis JavierRodrıguez和Ines Torres撰写的“模式识别和图像分析”(ISBN 978-3-540-40217-6,第845-857页)中的一章,该章讨论了速度与精度之间的取舍。两种算法。

简而言之,Baum-Welch算法本质上是应用于HMM的Expectation-Maximization(EM)算法。作为严格的EM类型算法,您可以保证至少收敛到局部最大值,因此对于单峰问题,请找到MLE。但是,它需要为每个步骤进行两次数据遍历,并且数据的长度和训练样本的数量变得非常复杂。但是,您最终将获得隐藏参数的全部条件可能性。

维特比训练算法(与“维特比算法”相对)使MLE近似,从而以准确性为代价获得了速度上的提高。它对数据进行分段,然后应用Viterbi算法(据我所知)以获取分段中最可能的状态序列,然后使用该最可能的状态序列重新估计隐藏参数。与Baum-Welch算法不同,这没有给出隐藏参数的全部条件似然,因此最终会降低准确性,同时节省了大量的计算时间(本章报告了1-2个数量级)。


7
如果我是对的,您会混淆维特比训练和维特比解码。
Peter Smit 2010年

1
你是对的。我不知道有一个过程仅使用Viterbi算法来计算转移概率。在进一步阅读时,它看起来像离散时间/离散状态HMM分析与使用高斯混合分布的离散时间/连续状态分析之间的术语有些重叠。我的答案与DTDS HMM设置有关,而不与混合模型设置有关。
Rich

@Rich:您能给我介绍一些有关Viterbi培训的易于理解的资料(例如Rabiner的原始HMM教程)吗?
Jacob

4
@Jacob Viterbi培训也被称为“分段K均值”,请参见Juang和Rabiner撰写的这篇论文
高音

1
@Anoldmaninthesea。查看时间间隔之间的可能性是评估收敛的正常方法(可能性应该始终在每个时间间隔增加,然后在达到局部最大值时停止)。您可以做的另一件事是通过监视EM期间未使用数据的可能性来提前停止。
高音2014年

0

当您要计算“看不见的东西”时,使用前向后向。例如,当使用EM通过不受监督的数据来改进模型时。我认为彼得罗夫的论文就是一个例子。在我考虑的技术中,您首先使用带有相当粗略注释(例如,“动词”的标记)的注释数据训练模型。然后,您可以将该状态的概率质量任意分成两个稍微不相等的量,然后重新训练,通过在两个状态之间重新分配质量来前后移动以最大化可能性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.