HMM模型——隐含马尔科夫模型【详细分析+图】

article/2025/11/6 1:15:57

HMM(隐马尔可夫模型)

含义

HMM(Hidden Markov Model), 中文称作隐含马尔科夫模型, 因俄国数学家马尔可夫而得名. 它一般以文本序列数据为输入, 以该序列对应的隐含序列为输出.

  • 什么是隐含序列
    序列数据中每个单元包含的隐性信息, 这些隐性信息之间也存在一定关联

EG:

import jieba.posseg as psgtext = "他喜欢看动画片"# 对文本进行分词处理
res = psg.lcut(text,True)
print(res)#[pair('他', 'r'), pair('喜欢', 'v'), pair('看', 'v'), pair('动画片', 'n')]# 每个词对应的隐含序列为
hidden_sequence = ["r","v","v","n"]

在posseg.lcut中可以看到隐马模型HMM,默认为True
在这里插入图片描述

作用

在NLP领域, HMM用来解决文本序列标注问题. 如分词, 词性标注, 命名实体识别都可以看作是序列标注问题.

隐含假设

隐含序列中每个单元的可能性只与上一个单元有关

使用过程

状态序列隐藏的马尔可夫链随机生成的状态的序列
观测序列每个状态生成一个观测,而由此产生的观测的随机序列

HMM的输入为一个句子进行分词后的语句为w1(word1),w2,w3…

HMM的输出为对应分词的词性q1,q2,q3…

HMM的目标在于最大化隐状态的条件概率(直白一点就是一个词它有K种词性,那么HMM的作用在于选择它最大可能是哪一种词性),即:
P ( q 1 , q 2 . . . q n ∣ w 1 , w 2 . . . w n ) = P ( w 1 , w 2 . . . w n ∣ q 1 , q 2 . . . q n ) P ( q 1 , q 2 . . . q n ) P ( w 1 , w 2 . . . w n ) P(q_1,q_2...q_n|w_1,w_2...w_n) =\frac{P(w_1,w_2...w_n|q_1,q_2...q_n)P(q_1,q_2...q_n)}{P(w_1,w_2...w_n)} P(q1,q2...qnw1,w2...wn)=P(w1,w2...wn)P(w1,w2...wnq1,q2...qn)P(q1,q2...qn)
P ( q 1 , q 2 . . . q n ∣ w 1 , w 2 . . . w n ) P(q_1,q_2...q_n|w_1,w_2...w_n) P(q1,q2...qnw1,w2...wn)为每个单词在对应词性下的概率

假设一个词它有K种词性,那么 P ( q 1 , q 2 . . . q n ∣ w 1 , w 2 . . . w n ) P(q_1,q_2...q_n|w_1,w_2...w_n) P(q1,q2...qnw1,w2...wn)就有 K n K^n Kn种概率,而HMM的作用就是找到最大概率的那一种可能,即

在这里插入图片描述

因为分母 P ( w 1 , w 2 . . . w n ) P(w_1,w_2...w_n) P(w1,w2...wn)的概率是一定的,所以可以直接省略

根据HMM模型的假设, q i q_i qi的设定只和 q i − 1 q_{i-1} qi1,所以 P ( q 1 , q 2 . . . q n ) ≈ ∏ i = 1 n P ( q i ∣ q i − 1 ) P(q_1,q_2...q_n)\approx\prod_{i=1}^nP(q_i|q_{i-1}) P(q1,q2...qn)i=1nP(qiqi1)

此外HMM假设每个词的生成都是独立的,所以 P ( w 1 , w 2 . . . w n ∣ q 1 , q 2 . . . q n ) = ∏ i = 1 n P ( w i ∣ q i ) P(w_1,w_2...w_n|q_1,q_2...q_n)=\prod_{i=1}^nP(w_i|q_i) P(w1,w2...wnq1,q2...qn)=i=1nP(wiqi)

所以 a r g m a x P ( q 1 , q 2 . . . q n ∣ w 1 , w 2 . . . w n ) = a r g m a x ∏ i = 1 n P ( w i ∣ q i ) P ( q i ∣ q i − 1 ) arg\ max\ P(q_1,q_2...q_n|w_1,w_2...w_n)=arg\ max\prod_{i=1}^nP(w_i|q_i)P(q_i|q_{i-1}) arg max P(q1,q2...qnw1,w2...wn)=arg maxi=1nP(wiqi)P(qiqi1)

由上可以知道,当我们知道了 ∏ i = 1 n P ( w i ∣ q i ) P ( q i ∣ q i − 1 ) \prod_{i=1}^nP(w_i|q_i)P(q_i|q_{i-1}) i=1nP(wiqi)P(qiqi1)的最大值,也就意味着我们找到了对应词语所可能的词性

那么我们将如何计算呢?

对于 P ( w i ∣ q i ) P(w_i|q_i) P(wiqi) P ( q i ∣ q i − 1 ) P(q_i|q_{i-1}) P(qiqi1)的计算,我们通常采用统计方法来估计其值

i.e.

C(w,q)出现次数C(q)出现次数P(w|q)
C(花,v)30C(v)100P(花|v)=0.3
C(花,n)10C(n)200P(花|n)=0.05

C(w,q)word作为动词在文本中出现的次数

C(q)q词性在文本中出现的次数

P(w|q)word作为q词性在文本中出现的概率

C(qi-1,qi)出现次数C(qi-1)出现次数P(qi|qi-1)
C(v,n)40C(v)100P(n|v)=0.4

得到上述知识后,我们应该有种想法,只要我们依次遍历1~n,累乘计算的乘积进行比较,那么就一定会得到一种最大的概率

但是这种方法对于单词量巨大且词性丰富的文本来说简直就是一场灾难,因此我们不得不使用一种方法来降低其复杂度,下面我们来引进维特比算法

维特比算法

本质:动态规划实现最短路径

维特比算法是多步骤每步多选择模型的最优选择问题
其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价的情况下前继步骤的选择。
依次计算完所有步骤后,通过回溯的方法找到最优选择路径。符合这个模型的都可以用viterbi算法解决,隐马模型的第三问题刚好符合这个模型,所以才采用了viterbi算法。

详情见知乎
通俗地讲解 viterbi 算法

它的核心观点是利用动态规划来降低复杂度,每一次来计算当前word下最有可能的前i种词性

先简明说明维特比在检索最大可能词性中的定义 f ( i , j ) f(i,j) f(i,j),它表示在所有 q i = j q_i=j qi=j的词性序列中能达到的前i位最大HMM概率值,通俗地来讲在最后一个词性为j的情况下,排在前i位的最大概率为 f ( i , j ) f(i,j) f(i,j)

初始化为
f ( 1 , j ) = P ( w i | j ) f(1,j)=P(w_i|j) f(1,j)=P(wij)
递推公式为
f ( i + 1 , j ) = m a x 1 < = k < = K f ( i , k ) P ( w i + 1 ∣ j ) P ( j ∣ k ) f(i+1,j)=max_{1<=k<=K}f(i,k)P(w_{i+1}|j)P(j|k) f(i+1,j)=max1<=k<=Kf(i,k)P(wi+1j)P(jk)
K K K为文本中的词性种类

复杂度 O ( K 2 ∗ N ) O(K^2*N) O(K2N)

遍历横向K,遍历纵向N,确定了一个单词词性之后,在此基础上又将面临K个选择

通俗地来讲就是先将一个单词作为词性集合中任意一种词性的概率算出来

然后在此基础上计算下一个单词词性为词性集合中任意一种词性的概率,此时将要考虑上一个单词作为哪种词性时的概率最大就作为该单词词性的概率

i.e.

image-20211220223141085

就好比我先算出APPLE作为各个词性的概率,然后计算RUN作为NOUN的概率时,就要考虑前一个单词APPLE的词性作为哪一种词性时,RUN作为NOUN的概率最大,HE也是类似。

复杂度解释:

考虑到APPLE有K种可能词性,一共有N个单词,并且在计算RUN作为NOUN时又要和APPLE作为K种词性要比较,所以复杂度为 O ( K 2 ∗ N ) O(K^2*N) O(K2N)


http://chatgpt.dhexx.cn/article/LailKfW2.shtml

相关文章

【史诗级干货长文】HMM模型

HMM模型 1. 马尔科夫链1.1 简介1.2 经典举例1.3 小结 2. HMM简介2.1 简单案例2.2 案例进阶2.2.1 问题阐述2.2.2 问题解决2.2.2.1 一个简单问题【对应问题2】2.2.2.2 看见不可见的&#xff0c;破解骰子序列【对应问题1】2.2.2.3 谁动了我的骰子&#xff1f;【对应问题3】 2.3 小…

HMM 模型笔记

参考网址 HMM模型的5元组 每个模型都有自己相关的概念&#xff0c;弄清算法之前我们先来看看这个模型的基本概念&#xff0c;5元组。 &#xff08;S,K,π,A,B&#xff09;&#xff1a;以上分别对应了HMM中的5个重要概念 S&#xff1a;隐藏状态的集合&#xff08;Sun Cloud Ra…

HMM模型介绍

时序模型&#xff1a;数据会随着时间的改变二进行改变&#xff0c;比如温度、说话等。HMM模型是一个时序模型&#xff0c;因为是个时序模型所以每时每刻都有一个观测值。下图所示&#xff1a; Z为隐式变量&#xff0c;X为已知的观测值。 扔不均衡硬币 有两枚硬币A和B&#xf…

机器学习之HMM模型

HMM模型 马尔科夫链HMM简介HMM模型基础前向后向算法评估观察序列概率维特⽐算法解码隐藏状态序列鲍姆-⻙尔奇算法简介HMM模型API介绍 目录 HMM模型马尔科夫链HMM简介HMM模型基础前向后向算法评估观察序列概率维特⽐算法解码隐藏状态序列鲍姆-⻙尔奇算法简介HMM模型API介绍 马尔…

Chapter 15 HMM模型

1.1 定义 隐马尔科夫模型&#xff1a;可用于标注问题&#xff0c;在语音识别、NLP、生物信息、模式识别等领域被实践证明是有效的算法。 HMM是关于时序的概率模型&#xff0c;描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列&#xff0c;再由各个状态生成观测随机序列…

机器学习HMM模型算法实例

目录 1 前向算法求HMM观测序列的概率1.1 流程梳理1.2 算法总结1.3 HMM前向算法求解实例1.4 用后向算法求HMM观测序列的概率1.4.1 流程梳理1.4.2 后向算法流程 1.5 小结 2 维特比算法解码隐藏状态序列2.1 HMM最可能隐藏状态序列求解概述2.2 维特比算法概述2.3 维特比算法流程总结…

HMM模型

隐马尔可夫模型&#xff08;Hidden Markov Model&#xff0c;HMM&#xff09;是统计模型&#xff0c;它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。隐马尔可夫模型&#xff08;HMM&#xff09;可以用五个元素来描述&#xff…

怎么进入修复计算机界面,开机进入启动修复界面不能启动win7电脑的修复办法...

我们在win7系统的使用中有小伙伴在win7开机的时候遇到系统自动进入系统的启动修复的页面是系统出现了问题吗&#xff0c;提示报错文件为&#xff1a;X&#xff1a;\Windows\system32\drivers\spoon.sys的问题&#xff0c;那我们在win7系统的出现这样的情况应该怎么办呢&#xf…

win7电脑蓝屏没有修复计算机,教你win7开机蓝屏怎么修复

在使用电脑的过程中&#xff0c;经常会遇到一些问题&#xff0c;最常见的莫过于win7开机蓝屏了&#xff0c;很多朋友并不知道win7开机蓝屏怎么修复&#xff0c;那么遇到win7开机蓝屏的情况应该怎么办呢&#xff1f;下面小编针对此问题教程大家开机蓝屏怎么修复。 方法一、系统自…

win7单机修复计算机在哪,win7电脑故障怎么进入安全模式修复

如果Win7系统电脑硬件驱动或网络等出了问题&#xff0c;可以进入安全模式进行修复&#xff0c;但是很多朋友都不知win7电脑故障怎么进入安全模式修复&#xff0c;下面就来分享一下win7电脑故障进入安全模式的详细方法吧。 win7电脑故障怎么进入安全模式修复 方法一、开机按F8键…

Win10安装程序修复计算机,如何在Windows 10上使用安装介质引导或修复

本文将向您展示如何使用可启动的安装USB或DVD介质修复Windows 10安装&#xff0c;而不会丢失数据。 如果无法从Windows中访问Windows 10高级选项疑难解答选项&#xff0c;则需要使用USB或DVD介质。 Windows 10上使用安装介质引导或修复的步骤是&#xff1a; --下载Windows ISO …

windows系统镜像修复计算机,分享win10用镜像文件修复系统的方法

今天来聊聊一篇关于分享win10用镜像文件修复系统的方法的文章,现在就为大家来简单介绍下分享win10用镜像文件修复系统的方法,希望对各位小伙伴们有所帮助。 1、win10系统出错之后&#xff0c;不是一定需要重装系统的&#xff0c;可以直接使用通过win10来修复系统&#xff0c;即…

win10 u盘 修复计算机,怎么用u盘修复windows10专业版系统

怎么用u盘修复windows10专业版系统&#xff1f;很多朋友都想要知道U盘维护系统的方法是什么&#xff0c;其实U盘维护系统的方法是非常简单的&#xff0c;如果大家想学习的话&#xff0c;下面win10专业版官网小编教你怎么用u盘修复windows10专业版系统&#xff0c;有需要的用户&…

win10计算机恢复,win10系统使用“配置 windows 恢复环境(RE)”命令修复计算机的详细办法...

有关win10系统使用“配置 windows 恢复环境(RE)”命令修复计算机的操作方法想必大家有所耳闻。但是能够对win10系统使用“配置 windows 恢复环境(RE)”命令修复计算机进行实际操作的人却不多。其实解决win10系统使用“配置 windows 恢复环境(RE)”命令修复计算机的问题也不是难…

win10单机修复计算机在哪,win10如何进入高级修复选项

进入WinRE(Windows恢复环境)后&#xff0c;点击“疑难解答”即可显示“恢复电脑”、“初始化电脑”等Windows恢复选项&#xff0c;再点击“高级选项”&#xff0c;则可以看到更多的系统维护选项 小编整理了以下进入winRE的方法&#xff1a; 方法一&#xff1a;通过“电脑设置”…

系统盘修复计算机命令,U盘启动盘修复系统的详细步骤

原标题&#xff1a;U盘启动盘修复系统的详细步骤 虽然win10系统自带系统修复功能&#xff0c;能够在系统出现问题时修复Windows&#xff0c;但是此功能并不是万能&#xff0c;有些用户无法通过启动修复解决系统问题&#xff0c;也有些用户修复后就崩溃了&#xff0c;那么出现老…

u盘修复计算机系统,U盘启动盘修复win10系统的详细步骤

虽然win10系统自带系统修复功能&#xff0c;能够在系统出现问题时修复Windows&#xff0c;但是此功能并不是万能&#xff0c;有些用户无法通过启动修复解决系统问题&#xff0c;也有些用户修复后就崩溃了&#xff0c;那么出现老是重启的情况&#xff0c;我们就需要通过安装介质…

戴尔启动修复无法自动修复此计算机,在 Dell 计算机上运行 Windows 启动修复

Windows 8和Windows 8.1 注:注:如果计算机由于检测到的启动故障而将故障转移到Windows恢复,则应启动自动修复工具。如果自动故障转移无法正常工作,您也可以从 Windows 安装 CD 或 DVD 或从 Advanced Start Options 启动自动修复作为手动恢复工具。 引导至System Recovery O…

u盘修复计算机系统,详细教你如何用u盘修复电脑系统

当电脑出现系统问题&#xff0c;如系统文件损坏或确实&#xff0c;系统引导出错等问题&#xff0c;可以尝试使用u盘来对系统进行修复&#xff0c;下面就将使用u盘修复电脑系统的方法教给大家&#xff0c;即使系统没有问题大家也可以尝试制作一个启动u盘&#xff0c;有备无患。 …

windows7修复计算机在哪里找,Windows7系统修复方法大全

Windows7系统虽然很稳定但是系统毕竟也是软件,由一个一个文件组成,如件遭到损坏导致系统故障、系统崩溃时我们就需要对Windows7系统进行修复了,至于Win7系统的修复方法,可以参考以下小编整理的Windows7系统修复方法大全,有需要的朋友可以学习一下。 方法一、使用系统还原 …