1.Baum Welch算法就是EM算法,用于求解隐马尔可夫模型的Learing问题
2.隐马尔可夫模型的Decoding问题是指给定X与λ,求使得概率最大的隐状态序列
3.Decoding问题采取Viterbi算法求解,思想借鉴自动态规划
我们在文章隐马尔可夫模型(背景介绍)介绍了HMM的三个问题:
上一篇隐马尔可夫模型(前向算法与后向算法)我们介绍了第一个问题,这一篇介绍后两个问题。
Baum Welch算法
对于第二个问题,也就是Learning问题,要求的是参数λ的最大似然估计,考虑到包含隐变量,自然而然的想到利用EM算法:
注:传送门EM算法
把HMM的参数λ、X和Z代进去,我们有:
根据上一篇求得的P(X|λ):
代入λ的迭代式:
于是有:
又因为平稳分布所有隐状态概率之和为1,上述是带约束的优化问题:
利用拉格朗日乘子法即可求解:
同理可以求解t+1时刻所有状态转移概率a以及发射概率b:
由此,Learning问题得到求解。
这个算法叫做Baum Welch算法,EM算法发表在它之后,当时称为Baum Welch算法,本质就是EM算法。
Viterbi算法
对于第三个Decoding问题,求解的方法称为Viterbi算法。我们也介绍一下。
HMM的Decoding问题是指在给定观测序列X和状态λ的条件下,求解使得联合概率最大的隐状态序列:
更形象的说,对于时间序列1~t个时刻,每一个时刻的隐状态都可以取k个中的一种
我们的任务是找到一个序列:
使得概率P(Z|X,λ)最大。
我们引入记号:
于是我们有:
这个式⼦就是从上⼀步到下⼀步的概率再求最⼤值。
至此,迭代式已经得出,我们记这个路径为:
这个就是Viterbi算法。