当前位置: 首页 > news >正文

【自然语言处理】— 隐马尔可夫模型详解、例解

【自然语言处理】— 隐马尔可夫模型

  • 【自然语言处理】— 隐马尔可夫模型
    • 引例
    • 隐马尔可夫模型概念
    • 隐马尔可夫模型的关键
    • 隐马尔可夫模型的数学表示
      • 隐含状态与观测结果
      • 状态转移矩阵
      • 观测概率矩阵
      • 初始状态概率向量
    • 小结

【自然语言处理】— 隐马尔可夫模型

引例

假设有三种不同的骰子,分别是立方体,正四面体,正八面体,分别有1-6,1-4,1-8,分别记作D6、D4、D8。每个面出现的概率分别是1/6,1/4,1/8。
在这里插入图片描述

在不观察的情况下,从三个骰子中随机选一个,进行抛掷,结果可能是1-8中的任意数字。依照这种方式,随机选择骰子,重复抛掷,可以得到一串数字,这串数字对我们是可见的,并且直接记录下来了,因此将这串数字记作可见状态链
在这里插入图片描述
在抛掷的过程中,被我们随机选择的骰子编号也组成了一串序列,因为我们是随机选择的骰子,因此将这串序列称为隐含状态链
在这里插入图片描述
实验过程中产生了两个数据链,隐含状态链和可见状态链,隐马尔可夫模型=隐含状态链➕可见状态链
在这里插入图片描述

隐马尔可夫模型概念

隐马尔可夫模型(Hidden Markov Model),简称HMM,它是关于时序的概率模型,该模型包含随机生成的不可观测序列,该序列被称为状态序列,使用S表示,每个不可观测状态都会产生一个可观测的结果,这样会得到一个观测序列,使用O表示。

在这里插入图片描述

每个状态和时刻都会与一个时刻进行对应,如果有t个时刻,就产生了 s 1 → s t , o 1 → o t s_1→s_t,o_1→o_t s1sto1ot,相当于一次一次掷骰子,t就代表第几次掷骰子
在这里插入图片描述

在HMM中,状态序列是隐藏的,无法被观测到,因此状态变量是一个隐变量,隐藏的状态序列是由一个马尔可夫链,随机生成的

隐马尔可夫模型的关键

在隐马尔可夫模型中, 包含了四个关键因素,分别是:

  1. 隐含状态
  2. 可见状态
  3. 隐含状态转换
  4. 可见状态输出

在这里插入图片描述

各个隐含状态之间会进行转换,存在着对应的转换概率

隐含状态会输出可见状态,隐含状态和可见状态之间有一个输出概率,不同隐含状态到可见状态的输出概率可能不同

例如,隐含状态D6输出可见状态1到6概率是 1 6 \cfrac{1}{6} 61,隐含状态D4输出可见状态1到4概率是 1 4 \cfrac{1}{4} 41

在这里插入图片描述

隐马尔可夫模型的数学表示

为了进一步讨论隐马尔可夫模型,需要使用数学符号来表示HMM,其中包括隐含状态 Q Q Q和观测结果 V V V两个集合,状态转移概率矩阵 A A A,观测概率矩阵 B B B,初始状态概率向量 π \pi π,三个概率矩阵。

隐含状态与观测结果

例如,隐含状态集合 Q = { q 1 , q 2 , . . . , q n } Q = \{q_1,q_2,...,q_n\} Q={q1,q2,...,qn}包括 q 1 到 q n n q_1到q_n n q1qnn种状态
观测结果集合 V = { v 1 , v 2 , . . . , v m } V=\{v_1,v_2,...,v_m\} V={v1,v2,...,vm}包括 v 1 到 v m m v_1到v_m m v1vmm种可能的结果

在掷骰子的案例中, n = 3 q 1 , q 2 , q 3 对应 D 6 , D 4 , D 8 n=3\ \ \ q_1,q_2,q_3对应D_6,D_4,D_8 n=3   q1,q2,q3对应D6,D4,D8
m = 8 v 1 到 v 8 对应数字 1 到 8 m=8 \ \ \ v_1到v_8对应数字1到8 m=8   v1v8对应数字18

在这里插入图片描述

状态转移矩阵

状态转移的概率矩阵 A A A是一个是一个 N ∗ N N*N NN的矩阵
在这里插入图片描述

其中 a i j a_{ij} aij代表了状态 q i q_i qi转移到状态 q j q_j qj的概率
在这里插入图片描述
具体地, a i j 等于在 s t = q i 的条件下, s t + 1 = q j 的概率 a_{ij}等于在s_t = q_i的条件下,s_{t+1}=q_j的概率 aij等于在st=qi的条件下,st+1=qj的概率

在这里插入图片描述
例如,3个骰子,选择任意骰子的概率都是 1 3 \cfrac{1}{3} 31,那么就得到了 3 ∗ 3 3*3 33的状态转移概率矩阵,其中的每个元素都是 0.33 0.33 0.33

在这里插入图片描述

观测概率矩阵

观测概率矩阵为 B B B,由于每一个状态 q q q都可以输出一个观测结果 v v v,因此B是一个 N ∗ M N*M NM的矩阵

在这里插入图片描述
其中 b i j b_ij bij代表了在时刻 t t t,状态 q i q_i qi输出观测结果 v j v_j vj的概率。

例如,在掷骰子时,根据三种骰子的输出,可以得到一个 3 ∗ 8 3*8 38的概率矩阵,第一行对应六面骰子,输出1到6的概率是1/6,输出7和8的概率是0,而第二行和第三行,分别代表投掷四面骰子和八面骰子的输出1到8的概率

在这里插入图片描述

初始状态概率向量

初始状态的概率向量是 π \pi π,它是一个 N ∗ 1 N*1 N1的列向量, π i \pi_i πi代表在时刻 t = 1 t=1 t=1时,状态为 q i q_i qi的概率,例如,掷骰子时,三种骰子的概率都是1/3
在这里插入图片描述

小结

π 和 A \pi和A πA确定了隐藏的马尔可夫链,也就是如何生成不可观测的状态序列 S S S B B B确定了如何从隐藏状态产生观测状态序列 O O O,隐马尔可夫模型由 A 、 B 、 π A、B、\pi ABπ共同决定,使用三元符号 λ = ( A , B , π ) λ=(A,B,\pi) λ=(A,B,π)表示。
在这里插入图片描述

参考视频:什么是HMM隐马尔可夫模型,自然语言处理中的最基础算法之一_哔哩哔哩_bilibili

相关文章:

【自然语言处理】— 隐马尔可夫模型详解、例解

【自然语言处理】— 隐马尔可夫模型 【自然语言处理】— 隐马尔可夫模型引例隐马尔可夫模型概念隐马尔可夫模型的关键隐马尔可夫模型的数学表示隐含状态与观测结果状态转移矩阵观测概率矩阵初始状态概率向量 小结 【自然语言处理】— 隐马尔可夫模型 引例 假设有三种不同的骰…...

运行的 akrun 会打印信息到控制台,如何取消打印 -- chatGPT

gpt: 如果运行的程序 akrun 打印信息到控制台,但您希望取消或禁止它的输出,可以尝试以下方法: 1. **重定向输出到空文件**:您可以将程序的标准输出重定向到一个空文件,从而禁止信息输出到控制台。执行以下命令&#…...

【React】03-React面向组件编程2

文章目录 2.6. 组件的生命周期2.6.1. 效果2.6.2. 理解2.6.3. 生命周期流程图(旧)2.6.4. 生命周期流程图(新)2.6.5. 重要的勾子2.6.6. 即将废弃的勾子2.6.7 getSnapshotBeforeUpdate 2.7. 虚拟DOM与DOM Diffing算法2.7.1. 效果2.7.2. 基本原理图 2.6. 组件的生命周期 2.6.1. 效…...

【python编程】python无法import模块的一种原因分析

python系统路径添加错误 报错原因原因分析解决办法补充 最近写代码的时候遇到一个问题,就是想添加工程下fu_convert文件夹下自己编写的convert_fw.py模块,但是出现报错,是个比较低级的问题,但还是简单记录一下 报错原因 无法找到…...

vue3.0与vue2.0的区别

前言 Vue 3.0是一个用于构建用户界面的JavaScript框架。相比于Vue 2.x,Vue 3.0在性能、体积和开发体验上都有了很大的提升。 以下将从不同的角度上去分析Vue 3.0与Vue 2.0的区别: 一、项目架构 从项目搭建和打包工具的选择来看: Vue 2.0 中…...

09_Webpack打包工具

1 初识Webpack 1.1 什么是Webpack Webpack打包工具对项目中的复杂文件进行打包处理,可以实现项目的自动化构建,并且给前端开发人员带来了极大的便利。 目前,企业中的绝大多数前端项目是基于Webpack打包工具来进行开发的。 1.2 Webpack的安…...

小程序 | 小程序后端用什么语言开发比较好

目录 ♣️ 引言 选择合适的后端语言 推荐使用Node.js Node.js 的优点 其他备选语言 ♣️ 小结 ♣️ 引言 小程序的兴起已经成为了当今移动互联网时代的热点之一,而小程序后端的好坏直接影响着小程序的使用体验,因此,选择一种好的语言来…...

Websocket升级版

之前写过一个关于websocket的博客,是看书时候做的一个demo。但是纸上得来终觉浅,这次实战后实打实的踩了不少坑,写个博客记录总结。 1.安装postman websocket接口调试,需要8.5以及以上版本的postman 先把以前的卸载&#xff0c…...

基于音频SOC开发板的主动降噪ANC算法源码实现

基于音频SOC开发板的主动降噪ANC算法源码实现 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群附加赠送降噪开发资料,...

【Pytorch】深度学习之损失函数

文章目录 二分类交叉熵损失函数交叉熵损失函数L1损失函数MSE损失函数平滑L1(Smooth L1)损失函数目标泊松分布的负对数似然损失KL散度MarginRankingLoss多标签边界损失函数二分类损失函数多分类的折页损失三元组损失HingEmbeddingLoss余弦相似度CTC损失函数参考资料 学习目标&am…...

3.4 构造方法

思维导图: 3.4.1 定义构造方法 ### Java中的构造方法 #### **定义与目的** 构造方法,也称为构造器,是一个特殊的成员方法,用于在实例化对象时为对象赋值或执行初始化操作。其主要目的是确保对象在被创建时具有有效和合适的初始状…...

代码随想录

前言 代码随想录算法训练营day43 一、Leetcode 1049. 最后一块石头的重量 II 1.题目 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分…...

2核4G游戏服务器推荐(阿里云/腾讯云/华为云)

2核4G游戏服务器推荐,首选腾讯云2核4G5M带宽轻量应用服务器218元一年、阿里云2核4G4M带宽轻量应用服务器297元一年,华为云2核2G3M云耀L服务器95元一年,阿腾云来详细说下2核4G游戏服务器推荐配置大全: 目录 2核4G游戏服务器推荐 …...

SQL标识列实现自动编号的步骤和技巧以及优势

目录 前言: 过程: 1.步骤: 2.标识种子和表示增量: 效果展示:​ 优势: 总结: 前言: 在.NET中的例子里面遇到这么一个问题,不能将NULL插入列‘ID’,表Login.dbo.Scores’;列不允许有NULL值。INSERT失败。这个问题很明显,我在SQL数据库中…...

【Debian】报错:su: Authentication failure

项目场景: 今天我重新刷了一个debian系统。 系统版本: # 查看系统版本 lsb_release -a 我的系统版本: No LSB modules are available. Distributor ID:Debian Description: Debian GNU/Linux 12 (bookworm&#xff…...

我测试用的mark down教程

Markdown 教程 欢迎使用 Markdown 你好,Markdown是一种类似 Word 的排版工具,你需要仔细阅读这篇文章,了解一下 Markdown 基础知识。 Markdown 功能和列表演示 Markdown 有以下功能,帮助你用它写博客: 数学公式代码高亮导航功能等等Markdown 的优点: 间接高效大厂支持…...

网络编程基础知识总结——IP,端口,协议

目录 1. 什么是网络编程? 2. 网络编程的三要素 3. IP 3.1 IP地址的概念 3.2 IP地址的分类 3.3 IPv4解析 3.4 Ipv6解析 4. IPv4 的使用细节 5. 特殊IP地址 4. 端口号 5. 协议 5.1 UDP协议 5.2 TCP协议 1. 什么是网络编程? 总的来说就是一句…...

【LeetCode力扣】297. 二叉树的序列化与反序列化

目录 1、题目介绍 2、解题思路 2.1、详细过程图解 2.2、代码描述 2.3、完整代码 1、题目介绍 原题链接:297. 二叉树的序列化与反序列化 - 力扣(LeetCode) 示例 1: 输入:root [1,2,3,null,null,4,5] 输出&#…...

Linux寄存器+Linux2.6内核进程调度队列+命令行参数+环境变量

目录 一、寄存器 二、Linux2.6内核进程调度队列 (一)优先级 (二)活动队列 (三)过期队列 (四)active指针和expired指针 三、命令行参数 (一)举例一 &…...

组合数(2)获取C(n,k)组合数列表的QT实现

1)工程文件 QT coreCONFIG c17 cmdline# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

软件工程 期末复习

瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...