隐马尔科夫模型1(了解整体知识架构)

2024-01-31 01:36

本文主要是介绍隐马尔科夫模型1(了解整体知识架构),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当你去学习一个算法的时候,你首先要去搞清楚它是什么,能用来做什么。如果上来就进行公式推导,那样只会让你更加迷糊,只有彻底了解了之后学起来才会事半功倍。

本篇文章主要有两个目的:

1 、让大家了解什么是隐马尔科夫模型。为了让大家深入理解,会先介绍什么是马尔科夫模型,然后介绍什么是隐马尔可夫模型,然后总结两者的联系和区别。

2 、带大家认识马尔可夫模型的三种应用场景。大家可以理解为能解决哪三种问题,以及三种场景下使用的什么算法,以及不涉及公式推导的情况下每种算法的简单讲解。

一、模型介绍

1.1、什么是马尔可夫模型

马尔可夫模型是描述状态序列的概率模型,某个时刻的状态只依赖于上个时刻的状态,和更早的状态没有关系。

假如天气预报只和前一天的天气有关,如果第一天是雨天,第二天还是雨天的概率是0.8,是晴天的概率是0.2;如果第一天是晴天,第二天还是晴天的概率是0.6,是雨天的概率是0.4。问:如果第一天晴天和雨天概率分别是 0.5,请问第三天仍然是雨天的概率是多少?

这里面我们把第一天晴天和雨天概率教练做初始状态概率分布;把晴天雨天叫做状态,把某个时间点到某个时间点的天气列表叫做状态序列;把晴天雨天互相转移的概率叫做状态转移概率,四种转移概率组成的矩阵叫做状态转移概率矩阵。马尔可夫模型由初始状态概率分布、状态集合、状态转移概率矩阵组成。

但实际情况,纯粹的马尔科夫情景很少,适用的场景也少。比如上面的例子,当前天气不可能只和前一天天气有关。

这里拓展一下,如果当前天气只依赖于前两天的天气,则属于二阶马尔科夫模型;如果当前天气只依赖于前三天的天气,则属于三阶马尔科夫模型。这些可以统称为 n 阶马尔科夫模型,n 表示只依赖于前 n 个状态。我们讲的马尔科夫模型其实是一阶马尔科夫模型。

1.2、什么是隐马尔科夫模型

隐马尔可夫模型就是在马尔可夫模型的基础上引入了隐藏状态的概念。

马尔科夫模型和状态相关的只有一个,而隐马尔可夫模型和状态相关的有两个,分别是隐藏状态和观测状态。

先举例理解下隐马尔可夫模型:有 AB 两个箱子,A 箱子有 1 个白球9 个黑球,B 箱子有 9 个白球1 个黑球。如果本次从 A 箱子拿球,那么下次依然从 A 箱子拿球概率是 30%,从 B 箱子拿球概率是 70%;如果本次从 B 箱子拿球,那么下次从 A 箱子拿球概率是 60%,依然从 B 箱子拿球概率是 40%。第一次从 A 箱子拿球概率是 80%,从 B 箱子拿球概率是 20%。经过六次取球,分别取到了黑,白,白,黑,黑,白的球 。

隐马尔可夫模型与马尔科夫模型的区别在于状态上,马尔科夫只有一个状态,可以被观测到。但隐马尔可夫模型有两个状态,分别是隐藏状态和观测状态。观测状态指的是从箱子里面抓取的白球和黑球,这个我们可以直观看到。隐藏序列指的是箱子 A 和箱子 B,模拟实际中我们无法观测到的状态。需要注意的是,每个观测结果只与生成它的状态有关,比如例子中红黑球的概率只和 当前是 A 箱子还是 B 箱子有关,和之前是哪个箱子没有关系。

隐马尔可夫模型是由初始状态概率,概率转移矩阵和生成观测状态概率矩阵组成,对应到上面的示例,初始概率分布(A 箱子 80%,B 箱子 20%),隐藏状态转移矩阵(AB 两个箱子互相转换的概率),生成观测状态概率矩阵(A 箱子 B 箱子抓到黑白球的概率)。

1.3 、马尔科夫模型和隐马尔可夫模型的关系

本质上,隐马尔可夫模型就是马尔科夫模型的延伸,马尔科夫模型的状态都是可以直接看到的,但隐马尔可夫模型的状态是看不到的,只能看到状态下出现的观测结果。

二、应用场景

隐马尔可夫模型的主要应用场景有三种,大家在使用过程中往里套就行。

1 、场景一

已知:隐马尔可夫模型的初始状态概率、隐藏状态转移矩阵、生成观测状态概率矩阵

求:这个某个观测序列出现的概率

分析:这个问题就是要找到所有出现这种观测状态序列的隐藏状态序列,然后让隐藏状态乘以对应的生成观测状态概率即可。当列出所有可能的情况后,大家第一思路肯定是计算每条的概率然后相加,当然这是没问题的,但是复杂度很高。还有另外一种思路,类似于深度学习的前向算法,一层层的算,这样极大的降低了复杂度。

算法:前向算法或后向算法

2 、场景二

已知:观测序列

求:使观测序列最大的隐马尔科夫模型参数(隐藏状态初始概率,隐藏状态转移矩阵,生成观测状态概率矩阵)

分析:通过观测概率来求模型参数,典型的最大似然估计。但是隐马尔可夫模型有 隐藏层,所以应该用最大似然的升级版 EM 算法。 EM 算法是一种求解最大似然估计的方法,它通过引入隐变量将最大似然问题转化成多个期望最大化问题,完美适配该场景。

算法:Baum-Welch (EM 算法的一种应用,专门用于训练隐马尔可夫模型参数的一种算法)

3 、场景三

已知:隐马尔科夫模型参数(隐藏状态初始概率,隐藏状态转移矩阵,生成观测状态概率矩阵)和观测序列

求:概率最大的隐藏状态序列

算法:维特比

这篇关于隐马尔科夫模型1(了解整体知识架构)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662193

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll