学习 HMM

时间:2022-12-28 17:34:57

简介

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\) 个可能的离散空间.

下图更加直观:

graph LR;
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\}\)

  1. 设置 \(t=1\), 并根据初始化状态概率 \(\pi\) 选择初始状态 \(y_i\);
  2. 根据状态 \(y_t\) 和输出观测概率 \(B\) 选择观测变量取值 \(x_t\);
  3. 根据状态 \(y_t\) 和状态转移矩阵 \(A\) 转移模型状态, 即确定 \(y_{t+1}\);
  4. 若 \(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的更多相关文章

  1. 用hmmlearn学习隐马尔科夫模型HMM

    在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...

  2. 机器学习理论基础学习13--- 隐马尔科夫模型 &lpar;HMM&rpar;

    隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的.隐含马尔可夫模型一直被认为是解决大多数自然语言处理问题最为 ...

  3. hmm学习笔记(二)

    学习hmm近一周的时间,做个总结. 参考  李航的<统计学习方法>第9章,第10章 本文包含: 1.hmm模型 2.前向后向算法 3.Baum-Welch算法 4.维特比算法 1.hmm模 ...

  4. 【NLP】十分钟快览自然语言处理学习总结

    十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文 ...

  5. 机器学习&amp&semi;数据挖掘笔记&lowbar;25(PGM练习九:HMM用于分类)

    前言: 本次实验是用EM来学习HMM中的参数,并用学好了的HMM对一些kinect数据进行动作分类.实验内容请参考coursera课程:Probabilistic Graphical Models 中 ...

  6. PRML读书会第十三章 Sequential Data(Hidden Markov Models,HMM)

    主讲人 张巍 (新浪微博: @张巍_ISCAS) 软件所-张巍<zh3f@qq.com> 19:01:27 我们开始吧,十三章是关于序列数据,现实中很多数据是有前后关系的,例如语音或者DN ...

  7. 隐马尔科夫模型HMM(一)HMM模型

    隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比 ...

  8. 标注-隐马尔可夫模型HMM的探究

    1 HMM基本概念1.1 定义1.2 观测序列生成过程1.3 HMM的三个问题2 概率计算算法2.1 直接计算算法2.2 前向算法forward algorithm2.3 后向算法2.4 一些概率与期 ...

  9. HMM相关文章索引

    HMM相关文章索引 1条回复 HMM系列文章是52nlp*问量较高的一批文章,这里做个索引,方便大家参考. HMM学习 HMM学习最佳范例一:介绍 HMM学习最佳范例二:生成模式 HMM学习最佳范例 ...

随机推荐

  1. DDD设计中的Unitwork与DomainEvent如何相容?

    最近在开发过程中,遇到了一个场景,甚是棘手,在这里分享一下.希望大家脑洞大开一起来想一下解决思路.鄙人也想了一个方案拿出来和大家一起探讨一下是否合理. 一.简单介绍一下涉及的对象概念 工作单元:维护变 ...

  2. SQL SERVER CHAR &lpar; integer&lowbar;expression &rpar;各版本返回值差异的案例

    我们都知道CHAR(integer_expression)将ASCII代码转换为字符.当integer_expression介于 0 和 255 之间的整数.如果该整数表达式不在此范围内,将返回 NU ...

  3. 采用get的方式提交数据到服务器

    1  效果演示:

  4. YTU 3004&colon; 栈的基本运算(栈和队列)

    3004: 栈的基本运算(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 32  解决: 10 题目描述 编写一个程序,实现顺序栈的各种基本运算,主函数已给出,请补充每一种方法 ...

  5. swift:创建九宫格

    九宫格的创建是有规律可循的,每一个格子的水平和竖直方向的间隔是固定的,通过计算每一个格子的位置,然后把它们依次放到视图中即可. 一般的步骤为: 1.设置格子的总个数和每一列的格子数 2.求格子的间隔: ...

  6. BZOJ 1827 奶牛大集会

    树型DP. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...

  7. CentOS 6&period;4 下搭建 MongoDB 2&period;4&period;9 环境

    一.下载MongoDB2.4.9版 下载MongoDB wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz 解压Mo ...

  8. 硬盘安装windows7

    微软已经发表声明 Windows XP 操作系统将于2014年4月8日停止提供补丁和安全更新,提醒用户尽快升级现有的XP操作系统.Windows XP曾在2001年10月25日正式发布的,已经走过了十 ...

  9. Mysql5&period;7&period;20使用group by查询(select &ast;)时出现错误--修改sql mode

    使用select * from 表 group by 字段 时报错 错误信息说明: 1055 - Expression #1 of SELECT list is not in GROUP BY cla ...

  10. error&lowbar;Could not load file or assembly

    原文链接 Could you be missing the loaded assembly from your configuration file? Ensure you have somethin ...