紧接上篇博客,上文已经介绍了前向-后向算法。前向-后向算法是通过递推地计算前向-后向概率来高效地进行隐马尔可夫模型的概率计算。该算法的时间复杂度是 O(N2T) 。
五、学习算法
在很多实际的情况下,HMM 不能被直接地判断,这就变成了一个学习问题。因为对于给定的可观察状态序列 O 来说,没有任何一种方法可以精确地找到一组最优的 HMM 参数
Baum-Welch算法首先对于HMM的参数进行一个初始的估计,但这个很可能是一个错误的猜测,然后通过对于给定的数据评估这些参数的的有效性(比如交叉验证)并减少它们所引起的错误来更新HMM参数,使得和给定的训练数据的误差变小。
实际上,Baum-Welch算法是EM算法的一个特例。EM算法是解决无监督学习问题的一把“利器”。下面我们就使用这把“利器”解决HMM的参数学习问题。
1.首先我们需要定义两个辅助变量,这两个变量可以用前文介绍过的前向概率和后向概率进行定义。
(1)给定模型 λ 和观测序列 O ,在时刻
γt(i)=P(it=qi|O,λ)
可以通过前向-后向概率计算,事实上
γt(i)=P(it=qi|O,λ)=P(it=qi,O|λ)P(O|λ)
根据前向概率和后向概率的定义可知: αt(i)βt(i)=P(it=qi,O|λ) ,于是得到:
γt(i)=αt(i)βt(i)P(O|λ)=αt(i)βt(i)∑Nj=1αt(j)βt(j)
(2)给定模型 λ 和观测序列 O ,在时刻
ξt(i,j)=P(it=qi,it+1=qj|O,λ)
通过前向-后向概率计算得:
ξt(i,j)=αt(i)a