前言
在上一篇博文中,我简单地介绍了隐马尔科夫模型HMM,并且重点介绍了HMM的三个问题中的第一个,即概率计算问题。首先回顾一下这三个问题都是什么以及解决每个问题的主流算法:
概率计算问题即模型评价问题——前向算法和后向算法
学习问题即参数估计问题——Baum-Welch算法
预测问题即解码问题——Viterbi算法
在上一篇概率计算问题的最后,我列出了几个用前向概率和后向概率表示的一些有意义的概率值和期望的计算,它们的直接意义就是用于表示学习问题和预测问题公式推导中复杂的中间结果的表示。所以,要想彻底搞懂Baum-Welch算法和Viterbi算法算法,就必须清楚地明白这些概率和期望到底是怎么计算出来的。
然而,本博文并不打算将这两个算法全部的公式推导写下来,那太繁杂了。如果想窥探这两个算法的细节,直接看李航博士的《统计学习方法》对应的内容就好了。本文只是将这两个算法推导中的一些隐晦的地方做一个通俗的解释,希望能给像我一样数学功底一般的朋友带来帮助。
Baum-Welch算法
Baum-Welch算法是为了解决HMM的参数估计问题而提出的,而且是没有标注也就是HMM的状态序列未知的参数估计问题。具体来说,就是已知观测序列O=(o1,o2,...,oT),估计模型参数λ=(A,B,π),使得在该模型下观测序列概率P(O|λ)最大。由于状态序列未知,因此这可以看做是一个含有隐变量的参数估计问题,解决这一问题的经典算法就是EM算法。Baum-Welch算法就是EM算法在隐马尔科夫模型学习中的具体体现。下面简单叙述一下该算法。
首先按照EM算法,我们需要先写出Q函数。Q函数是完全数据的对数似然函数关于给定模型参数和观测变量的前提下对隐变量的条件概率分布的期望。如下&#