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

【NLP冲吖~】二、隐马尔可夫模型(Hidden Markov model, HMM)

0、马尔可夫模型

某一状态只由前一个状态决定,即为一阶马尔可夫模型;
状态间的转移依赖于前n个状态的过程,即为n阶马尔可夫模型

马尔科夫链:

如果 S t + 1 S_{t+1} St+1只依赖于前一时刻 S t S_t St,不依赖于 S 1 , . . . , S t − 1 S_1,...,S_{t-1} S1,...,St1,则称 S 1 , S 2 , . . . , S T , . . . {S_1,S_2,...,S_T,...} S1,S2,...,ST,...为马尔科夫链,这种性质叫做马尔可夫性。

∗ ∗ S 1 , . . . , S t − 1 , S t , S t + 1 ∗ ∗ **S_1, ...,S_{t-1},S_{t},S_{t+1}** S1,...,St1,St,St+1

S 1 , . . . , S t − 1 S_1, ...,S_{t-1} S1,...,St1表示过去; S t S_t St表示现在; S t + 1 S_{t+1} St+1表示未来。
马尔可夫性想告诉我们的是,未来只与现在有关,与过去无关。

马尔可夫模型定义:

存在一类重要的随机过程:如果一个系统有N个状态 S 1 S_1 S1, S 2 S_2 S2, S 3 S_3 S3,…, S N S_N SN,随着时间的推移,该系统从一个状态转移到另一个状态。如果用 q t q_t qt表示系统在时间 t t t的状态变量,那么 t t t时刻的状态取值为 S j ( 1 < = j < = N ) S_j(1<=j<=N) Sj(1<=j<=N)的概率取决于前 t − 1 t-1 t1个时刻(1,2,3,…,t-1)的状态,该概率为:
P ( q t = S j ∣ q t − 1 = S i , q t − 2 = S k , . . . ) P(q_t = S_j | q_{t-1} = S_i, q_{t-2} = S_k, ...) P(qt=Sjqt1=Si,qt2=Sk,...)

1、假设一:如果在特定情况下,系统在时间t的状态下只与其在时间 t − 1 t-1 t1的状态相关,则该系统构成一个离散的一阶马尔可夫链:
P ( q t = S j ∣ q t − 1 = S i , q t − 2 = S k , . . . ) = P ( q t = S j ∣ q t − 1 = S i ) P(q_t = S_j | q_{t-1} = S_i, q_{t-2} = S_k, ...) = P(q_t = S_j | q_{t-1} = S_i) P(qt=Sjqt1=Si,qt2=Sk,...)=P(qt=Sjqt1=Si)

2、假设二:如果只考虑独立于时间 t t t的随机过程,状态与时间无关,那么
P ( q t = S j ∣ q t − 1 = S i ) = a i j P(q_t = S_j | q_{t-1} = S_i) = a_ij P(qt=Sjqt1=Si)=aij
其中 1<=i,j<N
即: t t t时刻状态的概率取决于前 ( t − 1 ) (t-1) (t1)个时刻(1,2,3,…,t-1)的状态,且状态的转移与时间无关,则该随机过程为马尔可夫模型。

马尔可夫模型的两个要素是 初始状态分布 和 状态转移概率矩阵。

1、隐马尔可夫模型

在马尔可夫模型中,每个状态表示了一个可观察的事件,所以,马尔可夫模型又称为可视化马尔可夫模型(visibleMarkovmodel,VMM),这使得模型的适应性有所限制。

隐马尔可夫模型(HMM)就是为了解决这样的限制而产生的。在这样的情景下,系统中会有两组状态,一组是不可观察、隐藏的状态,另一种是可观察的状态。模型具体的状态序列是未知的,状态转移的概率是已知的。因此,该模型是一个双重随机过程,包括模型的状态转换和特定状态下可观察的事件的随机。

与马尔可夫模型相比,隐马尔可夫有三要素,分别是
初始状态为 I = ( i 1 , i 2 , . . . , i T ) I = (i_1, i_2, ..., i_T) I=(i1,i2,...,iT) i 1 i_1 i1为第1个时刻的初始状态;
状态空间为 Q = ( q 1 , q 2 , . . . , q N ) Q = (q_1, q_2, ..., q_N) Q=(q1,q2,...,qN),表示有N个状态可以相互转移;
由初始状态和状态空间可得初始状态分布
Π = ( π 1 , π 2 , . . . , π N ) Π = (π_1,π_2,...,π_N) Π=(π1,π2,...,πN),其中 π i = P ( i 1 = q i ) π_i = P(i_1 = q_i) πi=P(i1=qi) i 1 i_1 i1中的i与 q i q_i qi中的i含义不同】

状态转移矩阵 A = [ a 11 , . . . ] A = [a_{11},...] A=[a11,...] a 11 a_{11} a11表示状态1到状态1的转换概率,A为N行N列的矩阵,每行之和为1。

观测空间为 V = ( v 1 , v 2 , . . . , v M ) V = (v_1,v_2, ..., v_M) V=(v1,v2,...,vM),表示有M个观测状态;
观测状态为 O = ( O 1 , O 2 , . . . , O T ) O = (O_1,O_2,...,O_T) O=(O1,O2,...,OT) O 1 O_1 O1为初始观测状态。
观测概率矩阵 B = [ b 1 ( 1 ) , . . . ] B = [b_1(1),...] B=[b1(1),...] b 1 ( 1 ) b_1(1) b1(1)表示在第1个状态上得到第一个观测状态的概率。
b j ( k ) = P ( O t = v k ∣ i t = q j ) b_j(k) = P(O_t = v_k | i_t = q_j) bj(k)=P(Ot=vkit=qj)
B为N行M列的矩阵,每行之和为1。

2、算法

根据隐马尔可夫模型定义,可以将一个长度为T的观测序列 O = ( o 1 , o 2 , . . . , o T ) O = (o_1,o_2,...,o_T) O=(o1,o2,...,oT)的生成过程描述为以下算法:
输入:隐马尔可夫模型 λ = (A,B,π),观测序列长度T;
输出:观测序列O = (o_1,o_2,…,o_T);
(1)按照初始状态分布π产生状态 i 1 i_1 i1;
(2)令t=1;
(3)按照状态 i t i_t it的观测概率分布 b i t ( k ) b_{i_t}(k) bit(k)生成 o t o_t ot;
(4)按照状态 i t i_t it的状态转移概率分布{a_{i_t},i_{t+1}} 产生状态 i t + 1 , i t + 1 i_{t+1},i_{t+1} it+1,it+1 = 1,2,…,N;
(5)令 t = t + 1 t = t+1 t=t+1,如果 t < T t<T t<T,重复(3)-(5),否则,结束。

3、三个基本问题

给定一个隐马尔可夫模型(HMM),可以解决三个基本问题。

(1)评估【Evaluation】

给定HMM,即 μ = [ π , A , B ] μ = [π,A,B] μ=[πAB],求某个观测序列的概率。
例如:给定一段文本的隐马尔可夫模型,包括第一个单词的概率分布,单词转移概率矩阵,特定单词下该词词性的概率分布。求序列中每一个单词为某个词性的概率。

(2)解码【Decoding】

给定HMM,即 μ = [ π , A , B ] μ = [π,A,B] μ=[πAB],以及某个观测序列,求得其可观测序列。
例如:给定一段文本的隐马尔可夫模型,包括第一个单词的概率分布,词性转移概率矩阵,特定单词下该词词性的概率分布。并且已知每个单词的词性序列。求得词性序列对应的文本序列。

(3)学习【Learning】

给定一个观测序列,求得一个隐马尔可夫模型。
例如:已知一个文本序列。求得一个文本的隐马尔可夫模型,包含:第一个词的词性,词性转移概率矩阵,特定单词该词的词性概率分布。

4、关于三个问题的算法计算

参考大佬博客https://zhuanlan.zhihu.com/p/88362664

5、隐马尔可夫模型在NLP中的应用

NLP中序列标注(文本词性标注、命名体识别)问题https://blog.csdn.net/echoKangYL/article/details/86983973

冷知识

马尔可夫是苏联人,他是切比雪夫的学生。


http://www.kler.cn/a/231526.html

相关文章:

  • Java-异步方法@Async+自定义分布式锁注解Redission例子
  • Relaxcert SSL证书申请与自动续签之IIS
  • 能源革命持续发力,华普微隔离器助力储能行业“向绿向新”
  • 【Fargo】23:采集时间转rtp时间
  • html + css 自适应首页布局案例
  • 一个win32 / WTL下多线程库(CThread类)的使用心得
  • chagpt的原理详解
  • JUnit 5 注解总结与解析
  • 3060ti显卡+cuda12.1+win10编译安装生成fastdeploy的c++与python库
  • 【日志框架】
  • 【JavaEE Spring】Spring 原理
  • C++艺术字头文件:ArtText.h
  • PyTorch深度学习实战(23)——从零开始实现SSD目标检测
  • Debian系统显示中文
  • Unity SRP 管线【第十讲:SRP/URP 图形API】
  • HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-任务管理
  • shell脚本基础语法(.sh ./ sh bash source shell)
  • 彻底学会系列:一、机器学习之线性回归(一)
  • nginx slice模块的使用和源码分析
  • 保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
  • 项目02《游戏-09-开发》Unity3D
  • Leetcode 139 单词拆分
  • 【人工智能】神奇的Embedding:文本变向量,大语言模型智慧密码解析(10)
  • JWT令牌
  • React+Echarts实现数据排名+自动滚动+Y轴自定义toolTip文字提示
  • 【TCP】高频面试题