HMM隐马尔可夫--Viterbi算法案例讲解
隐马尔可夫模型HMM
概率图模型表
隐马尔科夫是:有向图,生成式模型,属于动态贝叶斯网络
本章简单介绍一下HMM
1.隐马尔可夫模型(Hidden Markov model,HMM)是可用于序列标注问题的统计学模型,描述了由隐马尔可夫链随机生成观察序列的过程,属于生成模型。
2.隐马尔可夫模型:隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观察而产生观察随机序列的过程。
- 隐藏的马尔可夫链随机生成的状态的序列称作状态序列。
- 每个状态生成一个观测,而由此产生的观测的随机序列称作观测序列。
- 序列的每一个位置又可以看作是一个时刻。
HMM 使用场景
HMM使用场景:使用HMM模型时我们的问题一般有这两个特征:
1)我们的问题是基于序列的,比如时间序列,或者状态序列。
2)我们的问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。
隐马科夫模型最多用于分词,例如:jieba分词
隐马有条件独立假设的说法: 假如我明天做一件事,只和今天有关系,和前天,大前天都没有关系
HMM 特点:
1.按照HMM 的假设,HMM模型是无记忆性的,不能利用上下文的信息。
因为它只与其前一个状态有关,如果想利用更多的已知信息,必须建立高阶的HMM 模型。
2.HMM学到的是状态和观察序列的联合分布P(Y,X),而预测问题中,我们需要的是条件概率P(Y|X)。
隐马尔科夫主要解决三个问题
1.概率计算问题
已知模型的所有参数,计算观测序列Y出现的概率,可 使用前向和后向算法求解
2.预测问题(解码问题)
已知模型所有参数和观测序列Y,计算最可能的隐状态序 列X,可使用经典的动态规划算法——**维特比算法(Viterbi)**来求解最可能的状态序列。
Viterbi算法是一种动态规划算法,用于决策过程当中的最优化问题
思想:动态规划就是吧大问题化成多个小问题,基于每一步的结果去寻找下一步的策略,局部最优去寻找全局最优。
假设有3个不同的葫芦,每个葫芦里有好药和坏药若干,现在从3个葫芦中按 以下规则倒出药来。
(1)随机挑选一个葫芦。
(2)从葫芦里倒出一颗药,记录是好药还是坏药后将药放回。
(3)从当前葫芦依照一定的概率转移到下一个葫芦。
(4)重复步骤(2)和(3)。
在整个过程中,用隐马尔可夫模型 来描述以上过程:
隐状态Y指取值空间为{葫芦1, 葫芦2,葫芦3},
观测状态X的取值空间为{好药,坏药},
初始状态派的概率分布就是 第(1)步随机挑选葫芦的概率分布,
隐状态间的转移概率A就是从当前葫芦转移到 下一个葫芦的概率,
Y–X输出的概率矩阵B就是每个葫芦里好药和坏药 的概率。
记录下来的药的顺序就是观测状态的序列,而每次拿到的葫芦的顺序就 是隐状态的序列。
3.学习问题
已知观测序列Y,求解使得该观测序列概率最大的模型参 数,包括隐状态序列、隐状态之间的转移概率分布以及从隐状态到观测状态的概 率分布,可使用Baum-Welch算法进行参数的学习。
Baum-Welch算法:又称为 向前向后算法,经常得到局部最优解
HMM隐马尔科夫优缺点
对过程的状态预测效果良好,可考虑用于生产现场危险状态的预测
1.HMM只依赖于每一个状态和它对应的观察对象序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。
2.目标函数和预测目标函数不匹配:HMM学到的是状态和观察序列的联合分布P(Y,X),而预测问题中,我们需要的是条件概率P(Y|X)。
3.不适宜用于系统中长期预测