我目前正在使用Viterbi训练来解决图像分割问题。我想知道使用Baum-Welch算法而不是Viterbi训练有什么优点/缺点。
我目前正在使用Viterbi训练来解决图像分割问题。我想知道使用Baum-Welch算法而不是Viterbi训练有什么优点/缺点。
Answers:
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个数量级)。
当您要计算“看不见的东西”时,使用前向后向。例如,当使用EM通过不受监督的数据来改进模型时。我认为彼得罗夫的论文就是一个例子。在我考虑的技术中,您首先使用带有相当粗略注释(例如,“动词”的标记)的注释数据训练模型。然后,您可以将该状态的概率质量任意分成两个稍微不相等的量,然后重新训练,通过在两个状态之间重新分配质量来前后移动以最大化可能性。