NLP入门 | 隐马尔科夫模型HMM(三)HMM模型
作者:刘建平Pinard
博客地址:https://www.cnblogs.com/pinard
原文链接,点击文末阅读全文直达:https://www.cnblogs.com/pinard/p/6972299.html
隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列
在本篇我们会讨论HMM模型参数求解的问题,这个问题在HMM三个问题里算是最复杂的。在研究这个问题之前,建议先阅读这个系列的前两篇以熟悉HMM模型和HMM的前向后向算法,以及EM算法原理总结,这些在本篇里会用到。在李航的《统计学习方法》中,这个算法的讲解只考虑了单个观测序列的求解,因此无法用于实际多样本观测序列的模型求解,本文关注于如何使用多个观测序列来求解HMM模型参数。
1.HMM模型参数求解概述
HMM模型参数求解根据已知的条件可以分为两种情况。
第一种情况较为简单,就是我们已知个长度为的观测序列和对应的隐藏状态序列,即是已知的,此时我们可以很容易的用最大似然来求解模型参数。
假设样本从隐藏状态转移到的频率计数是,那么状态转移矩阵求得为:
假设样本隐藏状态为且观测状态为的频率计数是,那么观测状态概率矩阵为:
假设所有样本中初始隐藏状态为的频率计数为,那么初始概率分布为:
可见第一种情况下求解模型还是很简单的。但是在很多时候,我们无法得到HMM样本观察序列对应的隐藏序列,只有个长度为的观测序列,即是已知的,此时我们能不能求出合适的HMM模型参数呢?这就是我们的第二种情况,也是我们本文要讨论的重点。它的解法最常用的是鲍姆-韦尔奇算法,其实就是基于EM算法的求解,只不过鲍姆-韦尔奇算法出现的时代,EM算法还没有被抽象出来,所以我们本文还是说鲍姆-韦尔奇算法。
2. 鲍姆-韦尔奇算法原理
鲍姆-韦尔奇算法原理既然使用的就是EM算法的原理,那么我们需要在E步求出联合分布基于条件概率的期望,其中
首先来看看E步,当前模型参数为
在M步,我们极大化上式,然后得到更新后的模型参数如下:
通过不断的E步和M步的迭代,直到
3. 鲍姆-韦尔奇算法的推导
我们的训练数据为,其中任意一个观测序列,其对应的未知的隐藏状态序列表示为:
首先看鲍姆-韦尔奇算法的E步,我们需要先计算联合分布
我们的E步得到的期望表达式为:
在M步我们要极大化上式。由于
我们将上面
我们的隐藏模型参数
首先我们看看对模型参数
由于
其中,
令
从上两式消去
利用我们在隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率里第二节中前向概率的定义可得:
因此最终我们在M步
现在我们来看看
由于
利用隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率里第二节中前向概率的定义和第五节
现在我们来看看
由于
其中
有了
这里我们概括总结下鲍姆-韦尔奇算法的流程。
输入:
输出:HMM模型参数
1)随机初始化所有的
对于每个样本
,用前向后向算法计算更新模型参数:
如果
的值已经收敛,则算法结束,否则回到第2)步继续迭代。
以上就是鲍姆-韦尔奇算法的整个过程。
个人微信:加时请注明 (昵称+公司/学校+方向)
也欢迎小伙伴加入NLP交流群,刚刚创的,想和大家讨论NLP!