60分钟看懂HMM的基本原理

AI大语音(五)——隐马尔科夫模型(HMM)(深度解析) 1HMM基础 一模型、两假设、三问题 1)一个模型 随机过程:是依赖于参数的一组随机变量的全体,参数通常是时间。随机变量是随机现象的数量表现,其取值随着偶然因素的影响而改变。 例如,某商店在从时间t0到时间tK这段时间内接待顾客的人数,就是依赖于时间t的一组随机变量,即随机过程。 马尔科夫过程:随机过程的一类,系统下一时刻的状态仅与单前状态有关。 隐马尔科夫模型(HMM):用来描述一个含有未知参数的马尔科夫过程。 隐马尔可夫模型是关于时间序列的概率模型,描述由一个隐藏的马尔可夫链随机生成不可. 阅读详情

HMM模型,韩梅梅的中文拼音的缩写,所以又叫韩梅梅模型,由于这个模型的作者是韩梅梅的粉丝,所以给这个模型取名为HMM。开玩笑!

HMM模型,也叫做隐马尔科夫模型,是一种经典的机器学习序列模型,实现简单,计算快速,广泛用于语音识别,中文分词等序列标注领域。

公众号后台回复关键字:源码,获取本文包含全部公式和插图的md源文件。

下面通过一个村民看病的故事理解什么是HMM模型。

想象一个乡村诊所,村民的身体状况要么健康要么发烧,他们只有问诊所的医生才能知道是否发烧。

医生通过询问村民的感觉去诊断他们是否发烧。村民自身的感觉有正常、头晕或冷。

假设一个村民每天来到诊所并告诉医生他的感觉。村民的感觉只由他当天的健康状况决定。

村民的健康状态有两种:健康和发烧,但医生不能直接观察到,这意味着健康状态对医生是不可见的。

每天村民会告诉医生自己有以下几种由他的健康状态决定的感觉的一种:正常、冷或头晕。

于是医生会得到一个村民的感觉的观测序列,例如这样:{正常,冷,冷,头晕,冷,头晕,冷,正常,正常}。

但是村民的健康状态这个序列是需要由医生根据模型来推断的,是不可直接观测的。

这个村民看病的故事中由村民的健康状态序列和村民的感觉序列构成的系统就是一个隐马尔科夫模型(HMM)。

其中村民的健康状态序列构成一个马尔科夫链。其每个序列值只和前一个值有关,和其它值无关。由于这个马尔科夫链是隐藏的,不可以被直接观测到,只能由其关联的村民的感觉序列来进行推断,因此叫做隐马尔科夫模型(HMM)。

一,HMM模型的上帝视角

HMM模型是一个生成模型,描述了两个相关序列的依赖关系。

这两个相关序列称为状态序列 和 观测序列 .

其中状态序列在t时刻的值只和t-1时刻状态序列的取值有关,观测序列在t时刻的值只和t时刻观测序列的取值有关。

其联合概率函数如下:

如果能够确定联合概率函数中的各个参数,那么HMM模型也就完全地确定了,我们就拥有了HMM模型描述的这个体系的上帝视角,可以用来计算任何关心的事件的概率,从而解决我们感兴趣的问题。

二,HMM的三大假设

1,马尔科夫性假设:t时刻的状态出现的概率只和t-1时刻的状态有关。 

2,齐次性假设:可以理解为时间平移不变性

如果且

3,观测独立性假设:某个时刻t的观测值只依赖于该时刻的状态值,与任何其它时刻的观测值和状态值无关。

上述HMM的联合概率函数中,实际上就用到了HMM的三大假设。 

三,HMM的三要素

观察HMM的联合概率函数:

可以看到只依赖于三种概率值参数

, ,

分别是初始状态概率,状态值转移概率,观测值输出概率(发射概率)

这就是HMM的三要素,也就是HMM的全部参数,确定了这三种概率,HMM模型就完全确定下来了。

对于状态值取值和观测值取值为离散值的情况下,这三种概率可以表示为矩阵。

假定状态值可能的取值为  ,一共有M种可能取值。观测值可能的取值为 ,一共有N种可能取值。

则HMM的全部参数可以表示为三个矩阵

其中 叫做初始概率矩阵,是一个M维向量,

叫做转移概率矩阵,是一个M×M维矩阵,

叫做发射概率矩阵,是一个M×N维矩阵,

以上面村民看病的例子为例,假设这三个矩阵分别为:

pi = {'Healthy': 0.6, 'Fever': 0.4} #初始状态矩阵


A = {
   'Healthy' : {'Healthy': 0.7, 'Fever': 0.3},
   'Fever' : {'Healthy': 0.4, 'Fever': 0.6},
   } #状态矩阵

B =  {
   'Healthy' : {'normal': 0.5, 'cold': 0.4, 'dizzy': 0.1},
   'Fever' : {'normal': 0.1, 'cold': 0.3, 'dizzy': 0.6},
} # 发射矩阵


四,HMM的三个基本问题

HMM模型相关的应用问题一般可以归结为这三个基本问题中的一个:

1,评估问题:已知模型参数 ,和观测序列 , 计算观测序列出现的概率。以村民看病问题为例, 计算一个村民连续出现 {正常,冷,头晕} 感觉的概率。评估问题一般使用前向算法或者后向算法进行解决,其中前向算法相对简单,容易理解一些。后向算法较难理解。设想有两个描述两人语音的HMM模型,那么给一个新的语音序列,利用前向算法或者后向算法就可以计算这个语音序列更可能是哪个人的。

2,预测问题:也叫做解码问题。已知模型参数 ,和观测序列 , 计算该观测序列对应的最可能的状态序列。以村民看病问题为例,假设一个病人连续出现 {正常,冷,头晕} 的感觉,计算病人对应的最可能的健康状态序列。预测问题一般使用贪心近似算法或者维特比算法解决。其中贪心近似算法相对简单一些,但不一定能找到全局最优解。维特比算法可以找到全局最优,是一种动态规划算法。

3,学习问题:模型参数 未知,推断模型参数。有两种可能的场景,一种是监督学习的场景,已知诸多观测序列和对应的状态序列,推断模型参数,第二种是非监督学习的场景,只知道诸多观测序列,推断模型参数。监督学习的场景,学习方法相对简单。非监督学习的场景,一般使用EM期望最大化方法进行迭代求解。

五, 三个基本问题的简单解法

1,评估问题的简单解法

已知模型参数 ,和观测序列 , 计算观测序列出现的概率。

评估问题一般使用前向算法或者后向算法进行解决,其中前向算法相对简单。

如果暴力求解,这个概率可以计算如下:

计算复杂度大约为

前向算法是一种递推算法,可以大大减少重复计算,降低计算复杂度。

构造序列

则初始值如下:

而:

不难发现存在递推公式如下:

通过, 我们可以计算

计算复杂度已经降低为

2,预测问题的简单解法

已知模型参数 ,和观测序列 , 计算该观测序列对应的最可能的状态序列。

预测问题一般使用贪心近似算法或者维特比算法解决。较常用的是维特比算法。但贪心近似算法更加简单,很多时候就已经足够使用。

其基本思想是贪心思想,每一个步骤都取相应的, 使得对应输出的概率最大。

3, 学习问题的简单解法

模型参数 未知,推断模型参数。监督学习的场景,学习方法相对简单。已知诸多观测序列和对应的状态序列,推断模型参数。

这种情况下可以统计相应的频率作为, , 中各个概率的估计值。

六, 三个基本问题的复杂解法

1,评估问题的复杂解法

已知模型参数 ,和观测序列 , 计算观测序列出现的概率。

除了前向算法,还有一种后向算法,功能和前向算法相当,也是使用递推法实现的,但没有前向算法那么直观。

构造序列

我们规定 对任何都成立。

类似地我们可以发现后向递推关系:

通过, 我们可以计算

2,预测问题的复杂解法

已知模型参数 ,和观测序列 , 计算该观测序列对应的最可能的状态序列。

解决这一预测问题较常用的方法是维特比算法,是一种动态规划算法,也可以理解成一种搜索空间的剪枝方法,可以保证找到全局最优路径。

不同于贪心近似算法在每个步骤只保留一条当前最优路径,维特比算法在每个步骤会保留若干条当前最优路径,这些最优路径和每个步骤的最后一个隐含状态值的可能取值相对应,如果状态值有M个可能取值,则每个步骤保留M条当前最优路径。

由于HMM的马尔科夫性质,之后的概率计算只和最后一个隐藏状态取值相关,因此全局的最优路径必定在这M条当前最优路径中,如此递推不断向前寻找M个隐状态值对应的M条当前最优路径,最后取最终得到的M条当前最优路径中概率最大的那条作为全局最优路径。

3,学习问题的复杂解法

模型参数 未知,推断模型参数。

这是一个存在隐变量的概率模型的参数估计问题,一般使用EM期望最大化算法进行求解。

原始问题可以定义为

根据期望最大化算法的算法原理,可以得到迭代条件如下:

于是可以得到三个参数 的 迭代条件:

其中 不含待优化参数,求导为0,考虑概率之和为1的约束,可以构造拉格朗日乘子法进行求解,过程较为繁琐,从略。

参考文章:

《一站式解决:隐马尔可夫模型(HMM)全过程推导及实现》:https://zhuanlan.zhihu.com/p/85454896

《机器学习:HMM原理及其实践》:https://www.cnblogs.com/zhangxinying/p/12071061.html

《概率图模型体系:HMM、MEMM、CRF》:https://zhuanlan.zhihu.com/p/33397147

机器学习 HMM 参考B站 手写AI 一、中文分词 已分好的词 <==> 每个词的状态 已分好的词: 麻辣肥牛 真 好吃 ! 每个词的状态: BMME S BE S 二、HMM分词训练与预测 2.1 HMM之初始矩阵 初始矩阵:统计每篇文章(每行)的第一个字是什么状态(一开始统计的数值都是频次) 今天 天气 真 不错 。 麻辣肥牛 好吃 ! 我 喜欢 吃 好吃 的 ! 以上的三行句子中,第一个字的状态:一二句为B,第三句为S 2.2 HMM之状态转移矩阵 . 阅读详情

相关推荐

SHMM模型中各层HMM的具体参数设置和训练过程

本文提出了一种堆叠隐马尔科夫模型(SHMM)的多层市场状态建模方法。该方法采用三层HMM结构:底层(分钟级)捕捉微观波动,中层(小时级)识别趋势,顶层(日级)解析宏观市场结构。模型通过分层训练流程(包括Baum-Welch算法、VAE预训练和交替优化)实现参数优化,并引入跨层信息传递、注意力机制等技术提升性能。实验表明,该模型在加密货币市场中各层预测精度分别达到89.7%、82.4%和76.9%,实现了从微观到宏观的全尺度市场状态建模。

从技术实践立足,从项目管理方法论延伸思考 1044

HMM的介绍及实现

HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程。马尔可夫链是时间和状态参数都离散的马尔可夫过程。HMM是在Markov链的基础上发展起来的,由于实际问题比Markov链模型所描述的更为复杂,观察到的时间并不是与状态一一对应的,而是通过一组概率分布相联系,这样的模型称为HMM。HMM是双重随机过程:其中之一是M...

weixin_34187822的博客 638

金融建模中Markov链、过程与HMM的本质区别与实操指南

马尔可夫模型是金融时序建模的核心范式,其本质在于刻画系统‘无记忆性’的状态演化规律。Markov chain适用于离散时间、显式状态(如信贷五级分类)的迁移建模;Markov process则面向连续时间、事件驱动场景(如毫秒级流动性跳变),由generator矩阵描述瞬时转移速率;而Hidden Markov Model(HMM)在状态不可观测时提供反推框架,广泛用于市场态识别、波动率regime切换等任务。三者共用Markov property这一底层约束,但适用前提、参数结构与业务解释力差异显著。本文

weixin_33725270的博客 464

一站式解决:隐马尔可夫模型(HMM)全过程推导及实现

作者 |永远在你身后转载自知乎用户永远在你身后【导读】隐马尔可夫模型(Hidden Markov Model,HMM)是关于时许的概率模型,是一个生成模型,描述由一个隐...

AI科技大本营 9741

别再死记公式了!用‘朋友推特猜天气’这个例子,5分钟搞懂维特比算法(HMM实战)

本文通过‘朋友推特猜天气’的生活化案例,生动讲解维特比算法在隐马尔可夫模型(HMM)中的应用。从概率矩阵构建到路径剪枝策略,逐步演示如何通过活动序列推断隐藏天气状态,并对比暴力枚举法的效率差异。文章还提供Python实现示例,并列举该算法在自然语言处理、生物信息学等领域的实际应用场景。

weixin_42648844的博客 178

手写HMM实现:从原理到美赛C题实战

隐马尔可夫模型(HMM)是时序建模与状态推断的基础概率框架,其核心在于前向-后向算法、Baum-Welch参数学习与Viterbi解码三大机制。理解HMM不能止步于调用hmmlearn等封装库,而需深入α_t(i)、γ_t(i)、ξ_t(i,j)等中间变量的数值演化过程,尤其在GPS轨迹、加速度计等多源异构时序分析中,模型透明性直接决定行为识别的可解释性与鲁棒性。本文以2024美赛C题真实野生动物数据为驱动,聚焦NumPy手写实现、log域数值稳定、GMM耦合观测建模等关键技术点,覆盖从坐标投影、特征工程到

weixin_30770783的博客 397

16.12.21小程序0.11.122100版本更新问题

官方更新了122100版本,一共有90几处改动。这里先不一一列举了。放在另外的文章里。这里主要指出本次更新后对我们项目的影响。

Beta007的博客 1356

AMG8833红外测温实战:在STM32F103上做个简易人体感应与温度报警器

本文详细介绍了如何在STM32F103上使用AMG8833红外测温传感器构建人体感应与温度报警系统。通过硬件连接方案、驱动代码开发、人体检测算法实现及报警系统设计,展示了如何利用8x8红外温度矩阵实现智能监测功能。文章包含实用的初始化流程、温度数据读取优化和低功耗策略,为创客项目提供完整解决方案。

weixin_33725239的博客 393

小孩都看得懂的 HMM

全文共 7043字,75幅图,预计阅读时间36分钟。本文是「小孩都看得懂」系列的第十九篇,本系列的特点是内容不长,碎片时间完全可以看完,但我背后付出的心血却不少。喜欢就好!小孩都看...

weixin_38753422的博客 852

IC版图设计之OASIS文件格式详解

OASIS(Open Artwork System Interchange Standard)是继GDSII之后新一代的集成电路版图数据交换标准,由SEMI在2004年正式发布(SEMI标准号:SEMI P39)。高压缩率:相比GDSII可减少3-10倍文件体积扩展性强:支持纳米级工艺的复杂图形描述跨平台兼容:独立于EDA工具和操作系统安全增强:内置校验和与加密支持。

ZZcppc的博客 2440

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

伶俐角少儿编程 818

以村民看病为例,理解隐马尔可夫模型HMM

一、什么是隐马尔可夫模型HMM? 下面这段话摘自李航老师的《统计学习方法》P192 隐马尔可夫模型是关于时序的概率模型,描述一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。隐藏的马尔可夫链随机产生状态的序列,称为状态序列(state sequence);每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequence)。序列的每一个位置又可以看作是一个时刻。 通俗地说,HMM 是一个时序的概率模型,可以通过观

ywm_up 468

AgentScope深入分析-ReActAgent

ReActAgent 是 AgentScope 框架中最核心的智能体实现,它完美诠释了"推理-行动"(Reasoning-Acting)循环的精髓。本文将深入分析 ReActAgent 的类继承关系、核心执行流程,以及状态管理、钩子机制、实时介入等关键技术点。通过阅读本文,你会理解智能体如何与模型交互、如何执行工具、如何处理中断,以及这些机制背后的设计考量。模块化:通过组合不同的组件(模型、格式化器、工具集、记忆)来构建智能体透明性:所有关键流程都对开发者可见,可以精确控制可扩展性。

842

机器学习算法——HMM 隐马尔可夫模型学习笔记(2)

上一篇我们简单的回顾了下马尔科夫链,这一章我们来详细介绍隐马尔可夫模型。

凉意的博客 1903

升级最新IDEA版本(2022.1.1)

升级最新IDEA版本(2022.1.1)

软件老王 3万+

SAP 批次管理

批次管理: 业务场景: 批次常用于:采购、生产、SD等: 1、先进先出,先入库的先出库(如何实现),基于入库时间来自动确定出库策略。 2、追塑:基于批次进行产品质量追溯 例如订单MTO ---> PP ----> MM(批次关联)。SO—>PP工单 --> 预留 --> 发料(基于批次A\B\C)-->产成品入库-->批次入库D--> ...

willieyuan的博客 1万+

13.4 非特定人语音识别算法——HMM

与DTW相比,HMM一方面用隐含的状态对应于声学层各相对稳定的发音单位,并通过状态转移和状态驻留来描述发音的变化;另一方面,它引入了概率统计模型,不再用动态时间对齐的方法求匹配距离,而是用概率密度函数计算语音参数对HMM模型的输出概率,通过搜索最佳状态序列,以最大后验概率为准则找到识别结果。HMM模型较为完整地表达了语音的声学模型,并且采用统计的训练方法将底层的声学模型和上层的语言模型融入统一的语

joey_su的专栏 1万+

2025年5月架构设计师论文真题回顾,附写作技巧、所涉知识点及参考范文(三)

本文主要回顾2025年上半年(2025-5-24)系统架构设计师考试下午论文的题目,同时附带写作技巧、所涉知识点及参考范文。试题三:多模型数据库及应用。

一几文的编程学习笔记。 630

从语音识别到基因分析:HMM模型在5个真实场景中的落地实战与调参心得

本文深入探讨了HMM模型在语音识别、基因分析、金融预测等5个真实场景中的实战应用与调参技巧。通过具体案例和代码示例,分享了如何优化HMM参数配置、避免常见陷阱,并展示了该算法在处理序列数据时的强大能力。特别揭示了HMM在日语语音识别和CRISPR基因编辑中的独特应用价值。

weixin_27064205的博客 356

2025年7月12日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案解析

2025年7月12日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案解析

伶俐角少儿编程 710

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

利用PSSM(blast),HMM(hhsuite)和DSSP(Bio.PDB.DSSP)构建蛋白质残基的特征

本文重点介绍这三种文件是如何通过相应的软件得到的。在得到这三个后缀文件(.pssm, .hmm, .dssp)后,如何对每个残基提取相应的特征,在github上很多人的代码中都有,在这里也会给出代码链接。

weixin_51279476的博客 1449

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

c语言编程560分钟,c语言把560分钟换成小时和分钟表示输出出来

咋把度换成分,分换成秒,度*60=分分*60=秒比如10°30′20〃减去8°40′50〃就等于1°49′30〃再问:那是乘还是除如何把数字换成时间请问WPS表格中如何把已如入的数字换成小时和分钟,小时和分钟以h和´显示.以上图中的数字是作=TEXT(A1/24/60,"hh!hmm!′")再问:我是想把,比如其中一个格子里的990把它换成16h30´该如何操作,请赐教再答:是excel吧。。假设...

weixin_33044131的博客 7145

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java+小时转为分钟_用java将12862秒转换成 N 小时,K 分钟,M 秒

用java将12862秒转换成 N 小时,K 分钟,M 秒以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!用java将12862秒转换成 N 小时,K 分钟,M 秒实现思路:就是将这个数看做一个整数,之后依次对3600(1小时等于3600秒),60,60求余得到对应的数值public class Time {public...

weixin_29268637的博客 1817

从语音助手到基因分析:HMM算法在5个真实场景中的落地指南与避坑经验

本文深入探讨了HMM算法在语音识别、自然语言处理、基因分析、金融预测和工业故障诊断等5个真实场景中的应用与优化策略。通过详细的参数配置、实战案例和避坑经验,帮助开发者高效落地HMM算法,提升序列数据处理能力。

weixin_27872611的博客 88

金融建模三把刀:Markov链、过程与HMM实战指南

在量化金融中,市场状态的动态切换是核心挑战——价格波动、信用风险、投资者行为均呈现显著的‘模式迁移’特性。Markov性质揭示了系统‘无记忆性’的本质:下一时刻状态仅依赖当前而非历史路径,这为建模非平稳、小样本、带结构性断点的金融数据提供了理论根基。Markov链适用于离散事件驱动场景(如信贷状态跃迁),Markov过程则通过生成矩阵Q刻画连续时间下的瞬时跳变与衰减规律,而隐马尔可夫模型(HMM)进一步弥合可观测指标(价格、成交量)与不可观测机制(情绪、政策意图、欺诈意图)之间的鸿沟。本文聚焦Quantit

weixin_33976072的博客 301
上一篇: 一文读懂EM期望最大化算法和一维高斯混合模型GMM
下一篇: Python 中保留指定位数小数用round就可以了吗?
算法美食屋
博客等级 码龄9年 2万+粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值