HMM模型和Viterbi算法
https://www.cnblogs.com/Denise-hzf/p/6612212.html
一、隐含马尔可夫模型(Hidden Markov Model)
1、简介
隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的。隐含马尔可夫模型一直被认为是解决大多数自然语言处理问题最为快速、有效的方法。
2、马尔可夫假设
随机过程中各个状态St的概率分布,只与它的前一个状态St-1有关,即P(St|S1,S2,S3,…,St-1) = P(St|St-1)。
比如,对于天气预报,硬性假定今天的气温只与昨天有关而和前天无关。当然这种假设未必适合所有的应用,但是至少对以前很多不好解决的问题给出了近似解。
3、马尔可夫链
符合马尔可夫假设的随机过程称为马尔可夫过程,也称为马尔可夫链。
图:马尔可夫链
在这个马尔可夫链中,四个圈表示四个状态,每条边表示一个可能的状态转换,边上的权值是转移概率。隐含马尔可夫链是上述马尔可夫链的一个扩展:任一时刻t的状态St是不可见的。所以观察者没法通过观察到一个状态序列S1,S2,S3,…,ST来推测转移概率等参数。但是隐含马尔可夫模型在每个时刻t会输出一个符号Ot,而且Ot和St相关且仅和St相关。这称为独立输出假设。隐含马尔可夫模型的结构如下图,其中隐含的状态S1,S2,S3,…是一个典型的马尔可夫链。鲍姆把这种模型称为“隐含”马尔可夫模型。
图:隐含马尔可夫模型
4、隐含马尔可夫模型的三个基本问题
(1)给定一个模型,如何计算某个特定的输出序列的概率?
Forward-Backward算法
(2)给定一个模型和某个特定的输出序列,如何找到最可能产生这个输出的状态序列?
维特比算法
(3)给定足够量的观测数据,如何估计隐含马尔可夫模型的参数?
训练隐含马尔可夫模型更实用的方式是仅仅通过大量观测到的信号O1,O2,O3,….就能推算模型参数的P(St|St-1)和P(Ot|St)的方法(无监督训练算法),其中主要使用鲍姆-韦尔奇算法。
5、隐含马尔可夫模型的五元组
HMM是一个五元组(O , Q , O0,A , B):
O:{o1,o2,…,ot}是状态集合,也称为观测序列。
Q:{q1,q2,…,qv}是一组输出结果,也称为隐序列。
Aij = P(qj|qi):转移概率分布
Bij = P(oj|qi):发射概率分布
O0是初始状态,有些还有终止状态。
二、维特比算法(Viterbi)
1、简介
维特比算法是一个特殊但应用最广的动态规划算法,它是针对篱笆网络的有向图(Lattice)的最短路径问题而提出的。凡是使用隐含马尔可夫模型描述的问题都可以用维特比算法来解码,包括今天的数字通信、语音识别、机器翻译、拼音转汉字、分词等。
图:篱笆网络
2、维特比算法的基础
(1)如果概率最大的路径P(或叫最短路径)经过某个点,比如下图中的X22,那么这条路径上从起始点S到X22的这一段子路径Q,一定是S到X22之间的最短路径。否则,用S到X22的最短路径R替代Q,便构成了一条比P更短的路径,这显然是矛盾的。
(2)从S到E的路径必定经过第i时刻的某个状态,假定第i时刻有k个状态,那么如果记录了从S到第i个状态的所有k个节点的最短路径,最终的最短路径必经过其中的一条。这样,在任何时刻,只需要考虑非常有限条最短路径即可。
(3)结合上述两点,假定当我们从状态i进入状态i+1时,从S到状态i上各个节点的最短路径已经找到,并且记录在这些节点上,那么在计算从起点S到前一个状态i所有的k个结点的最短路径,以及从这k个节点到Xi+1,j的距离即可。
3、维特比算法总结
(1)从点S出发,对于第一个状态X1的各个节点,不妨假定有n1个,计算出S到它们的距离d(S,X1i),其中X1i代表任意状态1的节点。因为只有一步,所以这些距离都是S到它们各自的最短距离。
(2)对于第二个状态X2的所有节点,要计算出从S到它们的最短距离。对于特点的节点X2i,从S到它的路径可以经过状态1的n1中任何一个节点X1i,对应的路径长度就是d(S,X2i) = d(S,X1i) + d(X1i,X2i)。由于j有n1种可能性,我们要一一计算,找出最小值。即:
d(S,X2i) = minI=1,n1 d(S,X1i) + d(X1i,X2i)
这样对于第二个状态的每个节点,需要n1次乘法计算。假定这个状态有n2个节
点,把S这些节点的距离都算一遍,就有O(n1·n2)次计算。
(3)接下来,类似地按照上述方法从第二个状态走到第三个状态,一直走到最后一个状态,就得到了整个网格从头到尾的最短路径。每一步计算的复杂度都和相邻两个状态Si和Si+1各自的节点数目ni,ni+1的乘积成正比,即O(ni·ni+1)
(4)假设这个隐含马尔可夫链中节点最多的状态有D个节点,也就是说整个网格的宽度为D,那么任何一步的复杂度不超过O(D2),由于网格长度是N,所以整个维特比算法的复杂度是O(N·D2)。
三、HMM模型+维特比算法实例
1、问题描述
假设连续观察3天的海藻湿度为(Dry,Damp,Soggy),求这三天最可能的天气情况。
2、已知信息
①天气只有三类(Sunny,Cloudy,Rainy),海藻湿度有四类{Dry,Dryish, Damp,Soggy },而且海藻湿度和天气有一定的关系。
②隐藏的状态:Sunny, Cloudy, Rainy;
③观察状态序列:{Dry, Damp, Soggy}
④初始状态序列:
Sunny |
Cloudy |
Rainy |
0.63 |
0.17 |
0.20 |
⑤状态转移矩阵:
Sunny |
Cloudy |
Rainy |
|
Sunny |
0.5 |
0.375 |
0.125 |
Cloudy |
0.25 |
0.125 |
0.625 |
Rainy |
0.25 |
0.375 |
0.375 |
⑥发射矩阵:
Dry |
Dryish |
Damp |
Soggy |
|
Sunny |
0.6 |
0.2 |
0.15 |
0.05 |
Cloudy |
0.25 |
0.25 |
0.25 |
0.25 |
Rainy |
0.05 |
0.10 |
0.35 |
0.5 |
3、分析
由一阶HMM可知,Day2的天气仅取决于Day1;Day3的天气又只取决于Day2的天气。
4、计算过程
(1)Day1由于是初始状态,我们分别求
P(Day1-Sunny)=0.63*0.6;
P(Day1-Cloudy)=0.17*0.25;
P(Day1-Rain)=0.20*0.05;
Choose max{ P(Day1-Sunny) , P(Day1-Cloudy),P(Day1-Rainy)}, 得到P(Day1-Sunny)最大,得出第1天Sunny的概率最大。
(2)Day2的天气又取决于Day1的天气状况,同时也受Day2观察的海藻情况影响。
P(Day2-Sunny)= max{ P(Day1-Sunny)*0.5, P(Day1-Cloudy)*0.25, P(Day1-Rainy)*0.25} *0.15;
P(Day2-Cloudy)= max{ P(Day1-Sunny)*0.375, P(Day1-Cloudy)*0.125, P(Day1-Rainy)*0.625} *0.25;
P(Day2-Rainy)= max{ P(Day1-Sunny)*0.125, P(Day1-Cloudy)*0.625 , P(Day1-Rainy)*0.375} *0.35;
Choosemax{ P(Day2-Sunny) , P(Day2-Cloudy), P(Day2-Rainy)},得到P(Day2-Rainy)最大,得出第2天Rainy的概率最大。
故{Sunny,Rainy}是前两天最大可能的天气序列。
(3)Day3的天气又取决于Day2的天气状况,同时也受Day3观察的海藻情况影响。
P(Day3-Sunny)= max{ P(Day2-Sunny)*0.5, P(Day2-Cloudy)*0.25, P(Day2-Rainy)*0.25} *0.05;
P(Day3-Cloudy)= max{ P(Day2-Sunny)*0.375, P(Day2-Cloudy)*0.125, P(Day2-Rainy)*0.625} *0.25;
P(Day3-Rainy)= max{ P(Day2-Sunny)*0.125, P(Day2-Cloudy)*0.625, P(Day2-Rainy)*0.375} *0. 05;
Choosemax{ P(Day3-Sunny) , P(Day3-Cloudy), P(Day3-Rainy)},得到P(Day3-Rainy)最大,得出第3天Rainy的概率最大。故{Sunny,Rainy,Rainy}是这三天最可能的天气序列。
HMM模型和Viterbi算法的更多相关文章
- 隐马尔可夫模型(HMM)及Viterbi算法
HMM简介 对于算法爱好者来说,隐马尔可夫模型的大名那是如雷贯耳.那么,这个模型到底长什么样?具体的原理又是什么呢?有什么具体的应用场景呢?本文将会解答这些疑惑. 本文将通过具体形象的例子来引 ...
- 混合高斯模型和EM算法
这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示 ...
- 高斯混合模型和EM算法
使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示.与k- ...
- 最大熵模型和EM算法
一.极大似然已经发生的事件是独立重复事件,符合同一分布已经发生的时间是可能性(似然)的事件利用这两个假设,已经发生时间的联合密度值就最大,所以就可以求出总体分布f中参数θ 用极大似然进行机器学习有监督 ...
- Viterbi算法和隐马尔可夫模型(HMM)算法
隐马尔可夫模型(HMM)及Viterbi算法 https://www.cnblogs.com/jclian91/p/9954878.html HMM简介 对于算法爱好者来说,隐马尔可夫模型的大名那 ...
- 隐马尔可夫模型(HMM)及Viterbi算法
HMM简介 对于算法爱好者来说,隐马尔可夫模型的大名那是如雷贯耳.那么,这个模型到底长什么样?具体的原理又是什么呢?有什么具体的应用场景呢?本文将会解答这些疑惑. 本文将通过具体形象的例子来引入该模型 ...
- HMM Viterbi算法 详解
HMM:隐式马尔可夫链 HMM的典型介绍就是这个模型是一个五元组: 观测序列(observations):实际观测到的现象序列 隐含状态(states):所有的可能的隐含状态 初始概率(start ...
- 隐马尔可夫(HMM)、前/后向算法、Viterbi算法
HMM的模型 图1 如上图所示,白色那一行描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,蓝紫色那一行是各个状态生成可观测的随机序列 话说,上面也是个贝叶斯网络,而贝叶斯网络中有这么一种,如下 ...
- (转载)OSI七层参考模型和TCP/IP四层参考模型
Mallory 网络模型概念浅析 网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型. #只是一种设计==模型# Open System Interconnect的缩写,意为开放式系统互 ...
随机推荐
- C++设计模式 之 “单一职责”模式:Decorator、Bridge
part 1 “单一职责”模式 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任. 典型模式 Decorato ...
- 02: css常用属性
目录: 1.1 设置样式的七个选择器 1.2 css常见属性浅析 1.3 css布局中常用方法 1.1 设置样式的七个选择器返回顶部 1.其中选择器介绍 1. 直接在标签里的style标签写样式 2. ...
- QtQuickcontrols2控件使用参考
随着Qt的版本升级,其自带的controls控件库也不断升级,目前已经到了2.3的版本.本文通过解读Qt自带的gallery例程,说明新版本controls控件库的相关特性.其具体位置于: 因为相关的 ...
- 20145127《java程序设计》第八周学习总结
一.教材学习内容总结 第十四章 NIO与NIO2 NIO(New IO)-from JDK1.4 NIO2 -from Java SE 7 14.1 认识NIO Channel: 衔接数据节点(与IO ...
- Windows10 蓝屏 DRIVER_IRQL_NOT_LESS_OR_EQUAL (vfilter.sys)的可能解决方法
早上我的笔记本从休眠中开机的时候突然出现了蓝屏,这个蓝屏在前几天出现过了.两次提示的终止代码都一样.我的笔记本型号是DELL XPS15 9560 我的笔记本配置: 类别 型号 内存 16GB DDR ...
- Cron表达式详解和表达式的验证
本篇不算原创,因为主要内容来自网上的博客,所以给出我参考文章的链接. 本文cron表达式详解的大部分内容参考了[cron表达式详解]和Quartz使用总结.Cron表达式 这两篇文章. cron校验的 ...
- 如何写出格式优美的javadoc?
如果你读过Java源码,那你应该已经见到了源码中优美的javadoc.在eclipse 中鼠标指向任何的公有方法都会显示出详细的描述,例如返回值.作用.异常类型等等. 本文主要来自<Thinki ...
- windows10下使用source insight出现"source insight program editor已停止工作"的问题
一.背景 1.1 OS 版本 windows 10 1.2 source insight版本 source insight 3.50.0034 二.解决方案 删除"我的文档"下面的source ins ...
- BZOJ3942: [Usaco2015 Feb]Censoring 栈+KMP
Description Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so ...
- Tomcat Connector
转自: http://blog.csdn.net/aesop_wubo/article/details/7617416 如下图所示,Tomcat服务器主要有两大核心模块组成:连接器和容器,本节只分析连 ...