隐马尔可夫模型(HMM) |暴力算法 |一个简单的例子说清计算过程 |一般步骤总结

如是我闻: 本文通过一个简单的例子来详细说明隐马尔可夫模型(HMM)的暴力算法

我们求解的问题是:给定模型及观测序列计算其出现的概率

隐马尔可夫模型由三个主要部分组成:

  1. 隐藏状态集合
  2. 观测状态集合
  3. 以及三个概率矩阵(状态转移概率矩阵、观测概率矩阵、和初始状态概率向量)

示例说明

假设有一个简化的天气模型,其中隐藏状态是“晴朗”(Sunny)和“雨天”(Rainy),观测状态是“干燥”(Dry)和“湿润”(Wet)。

  • 隐藏状态集合:S = {Sunny, Rainy}
  • 观测状态集合:O = {Dry, Wet}

我们定义以下概率:

  • 初始状态概率向量(π):P(Sunny) = 0.8, P(Rainy) = 0.2
  • 状态转移概率矩阵(A):
SunnyRainy
Sunny0.70.3
Rainy0.40.6
  • 观测概率矩阵(B):
DryWet
Sunny0.90.1
Rainy0.30.7

任务

给定观测序列:O = {Dry, Wet},计算这个观测序列出现的概率。

解决过程

要计算观测序列{Dry, Wet}的概率,我们需要考虑所有可能的隐藏状态序列,并计算每个序列生成观测序列的概率,然后将这些概率相加。对于这个例子,可能的隐藏状态序列有四种:{Sunny, Sunny},{Sunny, Rainy},{Rainy, Sunny},和{Rainy, Rainy}。

  1. 序列{Sunny, Sunny}的概率

    • 初始概率:P(Sunny) = 0.8
    • 转移概率:P(Sunny|Sunny) = 0.7
    • 观测概率:P(Dry|Sunny) * P(Wet|Sunny) = 0.9 * 0.1 = 0.09
    • 总概率:0.8 * 0.7 * 0.09 = 0.0504
  2. 序列{Sunny, Rainy}的概率

    • 初始概率:P(Sunny) = 0.8
    • 转移概率:P(Rainy|Sunny) = 0.3
    • 观测概率:P(Dry|Sunny) * P(Wet|Rainy) = 0.9 * 0.7 = 0.63
    • 总概率:0.8 * 0.3 * 0.63 = 0.1512
  3. 序列{Rainy, Sunny}的概率

    • 初始概率:P(Rainy) = 0.2
    • 转移概率:P(Sunny|Rainy) = 0.4
    • 观测概率:P(Dry|Rainy) * P(Wet|Sunny) = 0.3 * 0.1 = 0.03
    • 总概率:0.2 * 0.4 * 0.03 = 0.0024
  4. 序列{Rainy, Rainy}的概率

    • 初始概率:P(Rainy) = 0.2
    • 转移概率:P(Rainy|Rainy) = 0.6
    • 观测概率: P(Dry|Rainy) * P(Wet|Rainy) = 0.3 * 0.7 = 0.21
    • 总概率:0.2 * 0.6 * 0.21 = 0.0252

结论

将所有可能的隐藏状态序列产生的观测序列概率相加,得到观测序列{Dry, Wet}出现的总概率:

总概率 = 0.0504 + 0.1512 + 0.0024 + 0.0252 = 0.2292

因此,给定模型及观测序列{Dry, Wet}出现的概率是0.2292。

暴力方法的一般步骤:

  1. 确定所有可能的隐藏状态序列:首先,基于HMM模型中的隐藏状态集合,列出所有可能的隐藏状态序列,这些序列长度应与观测序列长度相同。

  2. 计算每个隐藏状态序列的概率

    • 使用初始状态概率(π)找出序列开始的状态概率。
    • 通过状态转移概率矩阵(A),计算从一个状态转移到下一个状态的概率。
    • 使用观测概率矩阵(B),计算每个隐藏状态生成观测序列中相应观测的概率。
  3. 应用乘法公式:对于每个隐藏状态序列,将初始状态概率、相应的转移概率、和观测概率相乘,得到生成特定观测序列的概率。

  4. 应用全概率公式:将所有可能的隐藏状态序列产生给定观测序列的概率相加,得到最终的观测序列出现概率。

涉及的概率论公式:

  • 乘法公式:用于计算一个事件序列同时发生的概率。如果事件A发生后事件B发生的条件概率是P(B|A),那么事件A和B同时发生的概率是P(A) × P(B|A)。

  • 全概率公式:如果一组事件B1, B2, …, Bn构成一个完备事件组(即这些事件互斥且并集为全集),那么任何事件A的概率可以表示为所有这些B事件之一发生后A发生的条件概率的加权和:P(A) = ΣP(Bi)P(A|Bi),其中i从1变化到n。

在HMM中,乘法公式用于计算给定隐藏状态序列生成观测序列的概率,而全概率公式用于将所有这些概率相加,得到最终的观测序列出现概率。暴力方法虽然直观,但计算量随隐藏状态数和观测序列长度的增加而指数增长,因此在实际应用中,通常采用如前向算法这样的更高效算法来进行计算。

非常的有品

以上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/742367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24计算机考研调剂 | 中科院(深圳)

2024中科院深圳方鹏课题组考研调剂招生信息发布(0854电子/计算机/生医工/0856材料) 考研调剂招生信息 学校:中科院 专业:工学->电子科学与技术 年级:2024 招生人数:3 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式仅限APP…

window安装Docker

Windows上安装Docker 安装Docker的大体上的步骤 需要打开hyper-v 为什么要打开Hyper-v? 在Windows 10上安装Docker需要打开Hyper-V,主要是因为Docker上的Windows容器可以在两种不同的运行时隔离模式下运行:进程隔离和Hyper-V隔离。尽管在未使…

第十五单元日考技能

文章目录 第十五单元1.编写一个基于对象的程序,求长方体的体积,要求:2.编写strcpy函数(10分)3.建立一个类String,连接两个字符串后。具体要求: 第十五单元 1.编写一个基于对象的程序,求长方体的…

《详解:鸿蒙NEXT开发核心技术》

我们现在都知道鸿蒙作为一个国产的全栈自研系统,经过国家主推后。已经引起人们很大的关注,其中作为开发者来说;许多一线大厂已经与其华为鸿蒙展开原生应用的合作了,目前了解到已经有200家。而之后出现了很多的高薪鸿蒙开发岗位&am…

【数据库-黑马笔记】基础-SQL

本文参考b站黑马数据库视频,总结详细全面的笔记 ,可结合视频观看1~26集 MYSQL 的基础知识框架如下 目录 一、MYSQL概述 1、数据库相关概念 2、MYSQL的安装及启动 二、SQL 1、DDL【Data Defination】 2、DML【Data Manipulation】 ①、插入 ②、更新和删除 3、 DQL【Data…

DAY by DAY 史上最全的Linux常用命令汇总----history游览历史

history游览历史 当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来 history保留了最近执行的命令记录,默认可以保留1000。 历史清单从0开始编号到最大值。 常见用法: history N 显示最近…

Linux本地搭建FastDFS系统

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

Redis 中的 redis-cli 详解和参数介绍

redis-cli 要了解redis-cli的全部参数, 可以执行 redis-cli-help 命令来进行查看 -r -r(repeat) 选项代表将命令执行多次 例如下面操作将会执行三次 ping 命令 $ redis-cli -r 3 ping PONG PONG PONG -i -i(interval&…

320: 鸡兔同笼(python)

题目描述 一个笼子里关了鸡和兔(鸡有2只脚,兔又4只脚,没有例外)。已知笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物? 输入 多组测试数据。第一行是测试数据的组数n&#…

nginx多级代理配置获取客户端真实ip

流量路径 #mermaid-svg-NX785p8k6RVBngHY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NX785p8k6RVBngHY .error-icon{fill:#552222;}#mermaid-svg-NX785p8k6RVBngHY .error-text{fill:#552222;stroke:#552222;}#…

jenkins部署go应用 基于docker-compose

丢弃旧的的构建 github 拉取代码 指定go的编译版本 安装插件 拉取代码是排除指定的配置文件 比如 conf/config.yaml 文件 填写配置文件内容 比如测试环境一些主机信息 等 可以配置里面 构建的时候选择此文件替换开发提交的配置文件。。。。 编写docker-compose 文件 docker…

android metaRTC编译

参考文章: metaRTC3.0稳定版本编译指南_metartc 编译-CSDN博客 源码下载: Releases metartc/metaRTC GitHub 版本v6.0-b4即可

短视频解析接口分发系统

宝塔面板:Nginx系统 php7.2 Mysql 5.6-5.7 伪静态Thinkphp 上传文件直接访问域名安装即可 可以自备 听说后边要出saas去水印小程序 下载地址:https://pan.xunlei.com/s/VNskSEelfRVIzoSm5P5Rcw34A1?pwdqzhh# 接口演示: 前端演示…

C#编写函数

C#函数是一段可重复使用的代码块,用于执行特定的任务。它们可以接受输入参数并返回结果。在C#中,函数定义包括函数名、返回类型、参数列表和函数体。 public static int Add(int a, int b) {int sum a b;return sum; }在这个示例中,函数名…

解决ipconfig不是内部或外部命令,也不是可运行的程序或批处理文件

问题所示:ipconfig不是内部或外部命令,也不是可运行的程序或批处理文件。 解决办法如下: 1.右击此电脑,点击属性设置: 2.点击高级系统设置 3.点击进入环境变量 4.在系统变量中进行设置,双击PATH进行配置 5.点击新建&am…

2024-Android大厂(字节跳动,腾讯

PS:全文点击蓝色文字,即可跳转链接 【字节面试官:看了3000多份简历,面试1000场后,想给金九银十找工作的程序员几点建议附大厂真题面经】 本文主要介绍校招,上半年疫情原因真正面试的时间和机会也不多&#…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测软件(Python+PySide6界面+训练代码)

摘要:开发高效的零售柜商品识别系统对于智能零售领域的进步至关重要。本文深入介绍了如何运用深度学习技术开发此类系统,并分享了全套实现代码。系统采用了领先的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5进行了性能比较,呈现了诸如…

FDU 2021 | 二叉树关键节点的个数

文章目录 1. 题目描述2. 我的尝试 1. 题目描述 给定一颗二叉树,树的每个节点的值为一个正整数。如果从根节点到节点 N 的路径上不存在比节点 N 的值大的节点,那么节点 N 被认为是树上的关键节点。求树上所有的关键节点的个数。请写出程序,并…

最新CLion + STM32 + CubeMX 开发环境搭建

网上有不少相关教程,但都是基于老版本Clion,新版有一些改变,但整体是简单了。 PS:本教程基于CLion 2023.3.4 安装所需工具参考:Clion搭建stm32开发环境(STM32F103C8T6),有这一篇就够…

今天做了两个工具

URL可用性检测 2.影视 第一个工具为第二个工具服务,一定程度上检测了搜集到视频解析接口是否可用。