学习 HMM
简介
HMM 中的变量可以分为两组.
- 第一组是状态变量 \(\{y_i,y_2,\cdots, y_n\}\), 其中 \(y_i \in \mathcal{Y}\) 表示第 \(i\) 时刻的系统状态. 通常假定状态变量是隐藏的、不可观测的, 因此状态变量亦被称为隐变量 (hidden variable).
- 第二组是观测变量 \(\{x_1,x_2,\cdots, x_n\}\), 其中 \(x_i \in \mathcal{X}\) 表示第 \(i\) 时刻的观测值. 在 HMM 中, 系统通常在多个状态 \(\{s_1,s_2,\cdots,s_N\}\) 之间转换, 因此状态变量 \(y_i\) 的取值范围 \(\mathcal{Y}\) 通常有 \(N\) 个可能的离散空间.
下图更加直观:
subgraph 状态变量或隐变量
y1 --now--> y2
y2 --now--> y3
y3 --now--> y4
ago --> now
end
subgraph 观测变量
y1 --> x1
y2 --> x2
y3 --> x3
y4 --> x4
end
上图的箭头表示了变量之间的依赖关系. 在任一时刻, 观测变量的取值仅仅依赖于状态变量, 即 \(x_t\) 由 \(y_t\) 确定, 与其他的状态变量及其观测变量的取值无关. 同时, \(t\) 时刻的状态 \(y_t\) 仅依赖于 \(t-1\) 时刻的状态, 与其余 \(n-2\) 个状态无关. 这就是所谓的『马尔可夫链』(Markov chain), 系统下一时刻的状态仅由当前状态决定, 不依赖于以往的任何状态. 这样, 便有
\[
P(x_1,y_1,\cdots,x_n,y_n) = P(y_1)P(x_1|y_1)\displaystyle\prod_{i=2}^n P(y_i|y_{i-1})P(x_i|y_i)
\]
除了结构信息外, 要确定一个 HMM 还需要以下三个参数:
- 状态转移概率: 模型在各个状态间转换的概率, 常记作矩阵 \(A=[a_{ij}]_{N\times N}\), 其中 \(a_{ij} = P(y_{t+1}=s_j|y_t=s_i), \text{ }\;\;1 \leq i,j \leq N\)
- 输出观测概率: 模型根据当前状态获得各个观测值的概率, 常常记作矩阵 \(B = [b_{ij}]_{N\times M},\) 其中 \(b_{ij} = P(x_t=o_j|y_t=s_i), \text{ }\;\;1\leq i \leq N, 1 \leq j \leq M\) 表示在任意时刻 \(t\), 若状态为 \(s_i\), 则观测值 \(o_j\) 被获取的概率.
- 初始状态概率: 模型在初始时刻各个状态出现的概率, 常常记作 \(\pi = (\pi_1, \pi_2, \cdots, \pi_N)\), 其中 \(\pi_i = P(y_1=s_i), \text{ }\;\;1\leq i \leq N\), 表示模型的初始状态为 \(s_i\) 的概率.
通过指定状态空间 \(\mathcal{Y}\), 观测空间 \(\mathcal{X}\) 和上述三组参数, 就能确定一个 HMM, 通常用其参数 \(\lambda = [A,B,\pi ]\) 来指代. 给定 \(\lambda\), 它按照如下过程产生观测序列 \(\{x_1,x_2,\cdots, x_n\}\)
- 设置 \(t=1\), 并根据初始化状态概率 \(\pi\) 选择初始状态 \(y_i\);
- 根据状态 \(y_t\) 和输出观测概率 \(B\) 选择观测变量取值 \(x_t\);
- 根据状态 \(y_t\) 和状态转移矩阵 \(A\) 转移模型状态, 即确定 \(y_{t+1}\);
- 若 \(t<n\), 设置 \(t=t+1\), 并转到第 2 步, 否则停止.
其中 \(y_t\in \{s_1,s_2,\cdots,s_N\}\) 和 \(x_t \in \{o_1,o_2,\cdots,o_M\}\), 分别为第 \(t\) 时刻的状态和观测值.
python 库: hmmlearn
学习 HMM的更多相关文章
- 用hmmlearn学习隐马尔科夫模型HMM
在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...
- 机器学习理论基础学习13--- 隐马尔科夫模型 (HMM)
隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的.隐含马尔可夫模型一直被认为是解决大多数自然语言处理问题最为 ...
- hmm学习笔记(二)
学习hmm近一周的时间,做个总结. 参考 李航的<统计学习方法>第9章,第10章 本文包含: 1.hmm模型 2.前向后向算法 3.Baum-Welch算法 4.维特比算法 1.hmm模 ...
- 【NLP】十分钟快览自然语言处理学习总结
十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文 ...
- 机器学习&数据挖掘笔记_25(PGM练习九:HMM用于分类)
前言: 本次实验是用EM来学习HMM中的参数,并用学好了的HMM对一些kinect数据进行动作分类.实验内容请参考coursera课程:Probabilistic Graphical Models 中 ...
- PRML读书会第十三章 Sequential Data(Hidden Markov Models,HMM)
主讲人 张巍 (新浪微博: @张巍_ISCAS) 软件所-张巍<zh3f@qq.com> 19:01:27 我们开始吧,十三章是关于序列数据,现实中很多数据是有前后关系的,例如语音或者DN ...
- 隐马尔科夫模型HMM(一)HMM模型
隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比 ...
- 标注-隐马尔可夫模型HMM的探究
1 HMM基本概念1.1 定义1.2 观测序列生成过程1.3 HMM的三个问题2 概率计算算法2.1 直接计算算法2.2 前向算法forward algorithm2.3 后向算法2.4 一些概率与期 ...
- HMM相关文章索引
HMM相关文章索引 1条回复 HMM系列文章是52nlp上访问量较高的一批文章,这里做个索引,方便大家参考. HMM学习 HMM学习最佳范例一:介绍 HMM学习最佳范例二:生成模式 HMM学习最佳范例 ...
随机推荐
- Eclipse中如何改变主题
童鞋们, eclipse主题太丑?想设置护眼的主题? 看看这些主题: 请移驾: Eclipse Color Themes 怎么设设置? 1. 打开”eclipse marketplace“, 如下图: ...
- react 带参数事件方法不立即执行
handleClick:()=>{this.to_step('to_step3_2')}}
- mysql 数据范围总结
MEDIUMINT 带符号的范围是-8388608到8388607,无符号的范围是0到16777215,使用3个字节. 一般情况下推荐使用 unsigned (无符号,即只接受正整数)
- local variables referenced from a Lambda expression must be final or effectively final------理解
前几天使用lamdba时,报了一个这个错,原因是在lamdba体中使用了一个变量,觉得很奇怪! 今天在读这本书的时候,又看到了这个解释,这里有了更深刻的理解,总结一下: 在jdk1.8之前在使用匿名内 ...
- torch.normal(means, std, out=None)
返回满足正态分布的张量 means和std分别给出均值和标准差
- Shell编写8点建议
这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生 ...
- Linux input子系统学习总结(一)---- 三个重要的结构体
一 . 总体架构 图 上层是图形界面和应用程序,通过监听设备节点,获取用户相应的输入事件,根据输入事件来做出相应的反应:eventX (X从0开始)表示 按键事件,mice 表示鼠标事件 Input ...
- 牛x的JavaScript编辑器你知道几个
英文:Martin Heller 译文:葡萄城控件 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群343599877,我们一起学前端! 对于JavaScript程序员来说,目前有很 ...
- WGS84转大地2000
1.创建自定义地理(坐标)变换: 2.选择源坐标系和目标坐标系: 3.自定义地理转换方法,选择COORDINATE_FRAME; 4.选择投影工具: 5.在地理变换处选择刚才自定义变换.
- Win2003不显示移动硬盘、U盘解决方法
Win2003已经识别出了“移动硬盘”,只是没有分配盘符. 解决方法:插入移动硬盘,右键单击“我的电脑”,选择“管理”,进入“计算机管理”,点击“存储”下面的“磁盘管理”.可以看到现在计算机中有两个磁 ...