王小草【机器学习】笔记--隐马尔可夫模型HMM

2023-12-24 23:58

本文主要是介绍王小草【机器学习】笔记--隐马尔可夫模型HMM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

标签(空格分隔): 王小草机器学习笔记


机器学习的套路:
参数估计–>模型预测

隐马尔可夫模型需要涉及的步骤:
概率计算
参数估计
模型预测

应用:中文分词,语音识别等

在中文分词中,如果学习到了参数,隐马尔可夫就不需要词库也可以分词,但如果有词库,就会增加正确性。
所以在工业中可以HMM+词典来进行中文分词
但HMM可以发现新词,这个新词在词库中是没有的。

1. 什么是HMM

1.1 HMM初识

HMM可用于标注问题(词性标注),语音识别,NLP,生物信息,模式识别等领域。

HMM是关于时序的概率模型,描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,再由各个状态生成观测粹机序列的过程。

HMM随机生成的状态随机序列,称为状态序列;每个状态序列生成一个观测,由此产生的观测随机序列,称为观测序列。

隐马尔可夫模型的贝叶斯网络:
QQ截图20161117171856.png-45.6kB

如上图中,第一行的z是一组不可观测的随机序列,即状态序列;下面一行x是可观测的随机序列,即观测序列。每一个位置可以看成是一个时刻,但这个时刻并不是严格意义上的时间,也可以是空间上的,比如DNA。

假设现在有一句话“隐马尔可夫模型的贝叶斯网络”。如果要分词的话我们希望是这样分“隐/马尔可夫/模型/的/贝叶斯/网络”。
要将这些词分出来,其实我们只需要知道哪个字是一个词语的终止字。比如“夫”,“型”,“的”,“斯”,“络”都是终止字,他们出现表示一个词语的结束。

一个字是不是终止字,我们叫做是这个字的隐状态,表示成(0,1),0表示非终止字,1表示是终止字。这个因状态就是上图中的z1,z2,z3….
现在中文分词的问题就转变为寻找一个字的隐状态的问题了。


在来看一个概念,如果有a,b,c三个点,a指向b,c。当我们不知道a的时候,我们说b,c是不独立的。
表示成公式可以这样:
当a不知道的时候,bc是不独立的p(c,b) ≠ p(c)p(b)
当a知道的时候,bc是独立的p(c,b/a) = p(c/a)p(b/a)

根据以上概念,再来看回上面的图。当z1不知道的时候,我们说x1和z2是不独立的。
QQ截图20161117174502.png-142kB

也可以说,当z1不知道的时候,x1和(z2,x2)是不独立的。

QQ截图20161117174531.png-144.2kB

可以想见,对于一句话,前后的字之间总是相关的。

1.2 HMM的参数确定

1.2.1 参数的来源与原理

概率矩阵A
在中文分词中每个隐状态都是两种可能(0,1)。但是比如说预测天气,预测投骰子,很多问题都是说个可能的。我们假设如何情况下的隐状态有n中可能。(1,2,3…)

现在假设从z1到z2,z1有n中状态,z2也有n种状态,当z1是1的时候,z2可以是1,2,3…n;当z1是2的时候,z2可以是1,2,3…n;当zn是n的时候,z2可以是1,2,3…n.酱紫的话,我们可以用一个n*n的表格来表示出这种可能的关系。

z1/z21234n
1a11a12a13a14a1n
2a21a22a23a24a2n
3
nan1an2ann

aij表示的是由z1的n=1转换到z2的n=j的概率。比如a12表示z1的隐状态为1时,z2的隐状态为2的概率。于是这个n*n的矩阵我们称之为概率转换矩阵A。

既然是概率矩阵,那么当z1=1时, z2=1或2或3或..n的概率相加一定是等于1的。但是当z1=1,z2=1;z1=2,z2=1,…z1=n,z2=1的所有概率相加是不一定等于1的。也就是说,概率矩阵A的每行和都是1,每列的和不一定是1.这是概率矩阵的性质。

混淆矩阵B
上面讲了z1到z2的过程(前一个时刻到后一个时刻)。然而z1不止指向了z2,还指向了x1。

如果z的隐状态仍然是n个:1,2,3…n

这篇关于王小草【机器学习】笔记--隐马尔可夫模型HMM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java的IO模型、Netty原理解析

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

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

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

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

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

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus