隐马尔科夫模型(Hidden Markov Models) 系列之三
隐马尔科夫模型(Hidden Markov Models) 系列之三
- 介绍(introduction)
- 生成模式(Generating Patterns)
- 隐含模式(Hidden Patterns)
- 隐马尔科夫模型(Hidden Markov Models)
- 前向算法(Forward Algorithm)
- 维特比算法(Viterbi Algorithm)
- 前向后向算法(Forward-Backward Algorithm)
- 总结
隐马尔科夫模型(Hidden Markov Models)
定义
隐马尔科夫模型可以用一个三元组(π,A,B)来定义:
- π 表示初始状态概率的向量
- A =(aij)(隐藏状态的)转移矩阵 P(Xit|Xj(t-1)) t-1时刻是j而t时刻是i的概率
- B =(bij)混淆矩阵 P(Yi|Xj)在某个时刻因隐藏状态为Xj而观察状态为Yi的概率
值得注意的是,在状态转移矩阵中的每个概率都是时间无关的,也就是说我们假设这个概率是固定的,不随时间变化。当然,这是马尔科夫模型最不切合实际的一个假设。
隐马尔科夫模型的使用
如果一个模型可以被 描述成一个隐马尔科夫模型,有三个问题可以得到解决。前两个是模式识别的问题:1)根据隐马尔科夫模型得到一个可观察状态序列的概率(评价);2)找到一 个隐藏状态的序列使得这个序列产生一个可观察状态序列的概率最大(解码)。第三个问题就是根据一个可以观察到的状态序列集产生一个隐马尔科夫模型(学习)。
1.评价
假设我们有很多隐马尔 科夫模型(也就是说一个三元组的集合)描述不同的系统和一个可观察状态序列集。我们也许想知道哪一个隐马尔科夫模型最可能产生某个可观察状态序列。比如 说,我们也许有一个海藻的“Summer”模型和一个“Winter”模型,因为海藻在夏天和冬天的状态应该是不同的,我们希望根据一个可观察状态(海藻 的潮湿与否)序列来判断现在是夏天还是冬天。
我们可以使用前向算法来计算在某个特定的HMM下一个可观察序列的概率,然后据此找到最可能的模型。
这种类型的应用通常出现在语音设别中,通常我们会使用很多HMM,每一个针对一个特别的单词。一个可观察状态的序列是从一个可以听到的单词向前得到的,然后这个单词就可以通过找到满足这个可观察状态序列的最大概率的HMM来识别。
2.解码
根绝可观察状态的序列找到一个最可能的隐藏状态序列。
和上面一个问题相似的并且更有趣的是根据可观察序列找到隐藏序列。在很多情况下,我们队隐藏状态更有兴趣,因为其包含了一些不能被直接观察到的有价值的信息。比如说在海藻和天气的例子中,一个隐居的人只能看到海藻的状态,但是他想知道天气的状态。这时候我们就可以使用Viterbi算法来根据可观察序列得到最优可能的隐藏状态的序列,当然前提是已经有一个HMM。
另一个广泛使用Viterbi算法的领域是自然语言处中标引词 性。句子中的单词是可以观察到的,词性是隐藏的状态。通过根据语句的上下文找到一句话中的单词序列的最有可能的隐藏状态序列,我们就可以得到一个单词的词 性(可能性最大)。这样我们就可以用这种信息来完成其他一些工作。
3.学习
从一个观察集中得到一个隐马尔科夫模型。
第三个问题也是最困难的问题,根绝观察到的序列集来找到一个最有可能的HMM,也就是说确定一个最有可能的三元组(π,A,B)。当A,B矩阵都不是直观可测量(通过经验得到)的的时候,可以使用前向后向算法来解决这个问题。
总结
尽管做出了一些不太符合实际的假设,但是用三元组描述的HMMs在描述真实系统并进行分析的时候具有很大的价值,并且可以解决下面这些问题:
- 用前向算法找到最有可能的隐马尔科夫模型
- 用Viterbi算法根据观察序列找到最有可能的隐藏序列
- 用前向后向算法决定最有可能产生某个观察集的隐马尔科夫模型的参数
隐马尔科夫模型(Hidden Markov Models) 系列之三相关推荐
- 隐马尔科夫模型(Hidden Markov Models) 系列之五
隐马尔科夫模型(Hidden Markov Models) 系列之五 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之四
隐马尔科夫模型(Hidden Markov Models) 系列之四 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之一
隐马尔科夫模型(Hidden Markov Models) 系列之一 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 机器学习算法之——隐马尔可夫模型(Hidden Markov Models,HMM) 代码实现
@Author:Runsen 隐形马尔可夫模型,英文是 Hidden Markov Models,就是简称 HMM. 既是马尔可夫模型,就一定存在马尔可夫链,该马尔可夫链服从马尔可夫性质:即无记忆性. ...
- 【大道至简】机器学习算法之隐马尔科夫模型(Hidden Markov Model, HMM)详解(3)---学习问题:Baum-Welch算法推导及Python代码实现
☕️ 本文系列文章汇总: (1)HMM开篇:基本概念和几个要素 (2)HMM计算问题:前后向算法 (3)HMM学习问题:Baum-Welch算法 (4) HMM预测问题:维特比算法 ☕️ 本文来自专栏 ...
- 隐含马尔可夫模型——Hidden Markov models (HMM)
本文首发于 算法社区 dspstack.com,转载请注明出处,谢谢. 写在前面# 统计学是个好东东,说它是个好东东,因为统计学不像其他有些学科,它不仅在科研领域应用广泛,在平常的生活中我们也会经常碰 ...
- 隐马尔科夫模型c#语言算法实现,HMM学习最佳范例四:隐马尔科夫模型
四.隐马尔科夫模型(Hidden Markov Models) 1.定义(Definition of a hidden Markov model) 一个隐马尔科夫模型是一个三元组(pi, A, B). ...
- python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法
1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...
- 隐马尔科夫模型 HMM 与 语音识别 speech recognition (1):名词解释
0.引言 想在 CSDN 上看一下隐马尔科夫模型,简称HMM(Hidden Markov Model)的例子,找了几篇博文,却发现大部分都是转载的,转载的还没有出处,文中的表述与逻辑也看的人晕头转向, ...
最新文章
- Intel汇编语言程序设计学习-第六章 条件处理-中
- PHP代码为什么不能直接保存HTML文件——PHP生成静态页面教程
- jQuery 快速入门教程
- python 怎么报错后再次启动?
- python django框架如何导出_python框架django的数据库的正向生成和反向生成
- js导入导出总结与实践
- linux查看主机端口进程命令
- 假期周进度总计(四)
- C语言,全局变量与局部变量问题
- UVA 10534 Wavio Sequence DP LIS
- python课程典范选优_python学生选课系统
- 实现一个简单的Tomcat 1
- Java宣言的时候,JAVA面向对象-对象宣言
- Python教学视频(一)Python基础环境的安装
- UltraEdit (最新版[25.10.0.62])安装破解
- FastJson解析错误:com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze
- C语言:寻找重复数字
- 上传图片到淘宝 API
- INTERVAL的使用
- 新手之使用FileZilla完整教程