HMM 隐马尔可夫模型

简介: 准备随机过程是一连串随机事件动态关系的定量描述。 马尔可夫过程,Markov process,是随机过程的一种。液体中微粒所作的布朗运动就是一个马尔可夫过程。 马尔可夫链,Markov chain,是具有马尔可夫性质的随机变量的一个数列,如 (X1,X2,X3,...)(X_1,X_2,X_3,...)(1-1) Xn+1X_{n+1}表示在时间n+1时的状态,它仅依赖于

准备

随机过程是一连串随机事件动态关系的定量描述。
马尔可夫过程,Markov process,是随机过程的一种。液体中微粒所作的布朗运动就是一个马尔可夫过程。
马尔可夫链,Markov chain,是具有马尔可夫性质的随机变量的一个数列,如
(X1,X2,X3,...) (1-1)
Xn+1 表示在时间n+1时的状态,它仅依赖于 Xn ,可用式(1-2)表示:
P(Xn+1=x|X1=x1,X2=x2,...,Xn=xn)=P(Xn+1=x|Xn=xn) (1-2)
马尔可夫性质上面这个恒等式可以被看作是马尔可夫性质。

隐马尔可夫模型

HMM,Hidden Markov Model,隐马尔可夫模型。
隐马尔可夫模型可以用五个元素来描述,包括2个状态集合和3个概率矩阵:
1. 隐含状态S
这些状态之间满足马尔可夫性质,是马尔可夫模型中实际所隐含的状态。这些状态通常无法通过直接观测而得到。可记隐含状态数目为N。
2. 可观测状态O
在模型中与隐含状态相关联,可通过直接观测而得到。可观测状态的数目不一定要和隐含状态的数目一致,数目可记为M。
3. 初始隐含状态概率矩阵π
表示隐含状态在初始时刻t=1的概率矩阵,(例如t=1时,P(S1)=p1、P(S2)=P2、P(S3)=p3,则初始状态概率矩阵 π=[ p1 p2 p3 ].
4. 隐含状态转移概率矩阵A
其中Aij = P( Sj | Si ),1≤i≤N,,1≤j≤N。
表示在 t 时刻、隐含状态为 Si 的条件下,在 t+1 时刻隐含状态是 Sj 的概率。
5. 输出概率矩阵 B
其中 Bij = P( Oi | Sj ), 1≤i≤M,1≤j≤N.
表示在 t 时刻、隐含状态是 Sj 条件下,观察状态为 Oi的概率。

通俗

掷骰子。详见: http://www.zhihu.com/question/20962240
准备三个不同的骰子。第一个骰子是我们平常见的骰子(称这个骰子为D6),6个面,每个面(1,2,3,4,5,6)出现的概率是1/6。第二个骰子是个四面体(称这个骰子为D4),每个面(1,2,3,4)出现的概率是1/4。第三个骰子有八个面(称这个骰子为D8),每个面(1,2,3,4,5,6,7,8)出现的概率是1/8。
现在开始掷骰子,每次都先从三个骰子里随机挑一个,再用它掷出去。重复n次,就得到了n个数字。假设实验10次,摸到的骰子依次是 (D6,D8,D8,D6,D4,D8,D6,D6,D4,D8) (2-1)结果为: (1,6,3,5,2,7,3,5,2,4) (2-2)。
数列(2-1)叫做隐含状态链。隐含状态转移概率矩阵描述了隐含状态链的发展。
数列(2-2)叫做可见状态链。隐含状态转移概率矩阵和状态输出矩阵共同描述了可见状态链的发展。


HMM示意图
图1 HMM示意图

对于HMM来说,如果提前知道所有隐含状态之间的转换概率和所有隐含状态到所有可见状态之间的输出概率,做模拟是相当容易的。但是应用HMM模型时候呢,往往是缺失了一部分信息的,有时候你知道骰子有几种,每种骰子是什么,但是不知道掷出来的骰子序列;有时候你只是看到了很多次掷骰子的结果,剩下的什么都不知道。如果应用算法去估计这些缺失的信息,就成了一个很重要的问题。一种有价值的问题见下。
知道骰子有几种(隐含状态集合),不知道每种骰子是什么(状态输出概率),观测到很多次掷骰子的结果(可见状态集合),想要反推出每种骰子是什么(状态输出概率)。

目录
相关文章
|
监控 Java API
掌握 Spring Boot AOP:使用教程
Spring Boot 中的面向切面编程(AOP)为软件开发提供了一种创新方法,允许开发者将横切关注点与业务逻辑相分离。这不仅提高了代码的复用性和可维护性,而且还降低了程序内部组件之间的耦合度。下面,我们深入探讨如何在 Spring Boot 应用程序中实践 AOP,以及它为项目带来的种种益处。
|
2月前
|
人工智能 自然语言处理 语音技术
深度解析:AI语音客服系统如何重塑客户服务体验与主流解决方案探析
在数字化浪潮下,AI语音客服凭借高效、便捷、24小时在线的优势,成为企业提升服务效率、优化体验的重要工具。本文详解其核心技术、应用价值、选型要点及市场主流方案,如阿里云通义晓蜜、合力亿捷等,助力企业智能化升级。
232 1
|
11月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
234 0
|
Go Windows
|
12月前
|
敏捷开发 安全 测试技术
软件测试的艺术:从代码到用户体验的全方位解析
本文将深入探讨软件测试的重要性和实施策略,通过分析不同类型的测试方法和工具,展示如何有效地提升软件质量和用户满意度。我们将从单元测试、集成测试到性能测试等多个角度出发,详细解释每种测试方法的实施步骤和最佳实践。此外,文章还将讨论如何通过持续集成和自动化测试来优化测试流程,以及如何建立有效的测试团队来应对快速变化的市场需求。通过实际案例的分析,本文旨在为读者提供一套系统而实用的软件测试策略,帮助读者在软件开发过程中做出更明智的决策。
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 没有思考过 Embedding,不足以谈 AI
**摘要:** 本文深入探讨了人工智能中的Embedding技术,解释了它是如何将高维数据映射到低维向量空间以简化处理和捕获内在关系的。文章介绍了词向量、图像嵌入和用户嵌入等常见类型的Embedding,并强调了其在自然语言处理、计算机视觉和推荐系统中的应用。此外,还讨论了Embedding的数学基础,如向量空间和线性代数,并提到了Word2Vec、GloVe和BERT等经典模型。最后,文章涵盖了如何选择合适的Embedding技术,以及在资源有限时的考虑因素。通过理解Embedding,读者能够更好地掌握AI的精髓。
223 0
算法金 | 没有思考过 Embedding,不足以谈 AI
|
监控 应用服务中间件 API
深入理解微服务架构中的API网关
在现代后端开发中,微服务架构已经成为主流选择,而API网关作为其关键组件之一,起到了不可替代的作用。本文将深入探讨API网关的基本概念、功能、常见实现方式以及在微服务架构中的重要性。通过实际案例和技术细节,帮助你全面了解如何有效地利用API网关来提升系统的性能与安全性。
|
存储 编解码 数据可视化
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
【2月更文挑战第14天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,按照给定的地表分类数据,对每一种不同的地物类型,分别加以全球范围内随机抽样点自动批量选取的方法~
1044 1
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
|
存储 机器学习/深度学习 算法
如何准确的估计llm推理和微调的内存消耗
最近发布的三个大型语言模型——Command-R+ (104B参数), Mixtral-8x22b (141B参数的MoE模型), 和 Llama 3 70b (70.6B参数)——需要巨大的内存资源。推理时,Command-R+需193.72GB GPU RAM,Mixtral-8x22B需262.63GB,Llama 370b需131.5GB。激活的内存消耗根据序列长度、批大小等因素变化。文章详细介绍了计算这些模型内存需求的方法,并探讨了如何通过量化、优化器优化和梯度检查点减少内存使用,以适应微调和推理。
1868 0
|
机器学习/深度学习 人工智能 监控
【AI 现况分析】AI 大模型在自动化交易的应用
【1月更文挑战第27天】【AI 现况分析】AI 大模型在自动化交易的应用