(系列笔记)16.HMM系列(2)

本文详细探讨了HMM的三个基本问题:概率计算问题,旨在评估观测序列与模型的匹配度;预测问题,用于寻找最可能的状态序列;以及学习问题,涉及如何训练模型以最佳描述观测数据。通过一个轮盘赌的例子,解释了如何应用HMM解决这些实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HMM——三个基本问题

和之前几个模型对比,HMM比较奇怪,其他模型都是直接把特征对应成一个结果,当然,这个结果的取值本身是可以连续的(回归模型)或者离散的(分类模型),不过整个过程里涉及到的也就上输入变量(特征)和预测结果两部分数据。
HMM却是变量自己就分成两类:状态变量和观测变量,而且,模型的运行过程也是来来回回这两类变量之间转圈,这到底有什么用呢?

HMM的三个基本问题

概率计算问题

问题名称: 概率计算问题,又称评价(Evaluation)问题。
已知信息:

  • 模型 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]
  • 观测序列 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT)
    **求解目标:**计算在给定模型 λ \lambda λ下,已知观测序列O出现的概率: P ( O ∣ λ ) P(O|\lambda) P(Oλ),也就是说,给定观测序列,求它和评估模型之间的匹配度。
预测问题

问题名称: 预测问题,又称解码(Decoding)问题。
已知信息:

  • 模型 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]
  • 观测序列 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT)

求解目标: 计算在给定模型 λ \lambda λ下,使已知观测序列O的条件概率 P ( O ∣ S ) P(O|S) P(OS)最大的状态序列
S = ( s 1 , s 2 , . . . , s T ) S=(s_1,s_2,...,s_T) S=(s1,s2,...,sT),即给定观测序列,求最有可能与之对应的状态序列。

学习问题

问题名称: 学习(Learning)问题又称训练(Training)问题。
已知信息:

  • 观测序列 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT)
  • 或许也会给定与之对应的状态序列 S = ( s 1 , s 2 , . . . , s T ) S=(s_1,s_2,...,s_T) S=(s1,s2,...,sT)

求解目标: 估计模型 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]参数,使得该模型下观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)最大,也就是训练模型,使其最好地描述观测数据。

前两个问题是模型已经存在之后如何使用模型的问题,最后一个是如何通过训练得到模型的问题。

举例子

背景

这个货是个公主,统治的自己的地盘
在这里插入图片描述
公主(小白)的妹妹化身小蓝,挑战小白的统治,但是被击败了,最后被关起来了。
在这里插入图片描述
很久以后,有6个仔请求小白赦免小蓝,而小白表示,这要神明决定。
在这里插入图片描述
小白有金银铜三个首饰盒,金首饰盒:2红宝石,1蓝宝石,1珍珠,1珊瑚;银首饰盒:只知道有1红宝石、1珍珠、1珊瑚、1蓝宝石;铜首饰盒:1珍珠、1红宝石、1珊瑚。

小白打算这样做:把3个首饰盒放在轮盘上,随机转动,停下来时,哪个到小白眼前,就从这个随机拿一个首饰,记录首饰的材质后放回。

小白重复上述动作3次,如果这3次拿出来正好是红宝石、珍珠和珊瑚,就同意赦免,求小蓝被赦免的可能性有多大?

问题分析

分析一下,按照上面的操作,最终希望得到的观测序列: O = ( 红 宝 石 、 珍 珠 、 珊 瑚 ) O=(红宝石、珍珠、珊瑚) O=(),其实在整个事件中,除了最终的首饰序列之外,还有一个序列:首饰盒的序列。

小白选了一系列盒子,然后从每个盒子选一个首饰。如此一来,首饰盒正好对应状态,而首饰则对应观测,首饰盒序列就是状态序列,首饰序列就是观测序列。

状态序列的不同状态之间是依据时序一对一跳转的,而某一个时刻的观测值也仅与当时的状态值有关。这种情况下,我们完全可以应用HMM来估计O出现的概率。

要确定一个HMM,我们需要两个空间和 λ \lambda λ
状态空间,也就是状态值的集合是:{金盒子,银盒子,铜盒子}。
观测空间,也就上观测值的集合是:{红宝石,珍珠,珊瑚,蓝宝石}。
λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)
A是状态转移矩阵,A中元素用来反应不同状态之间的跳转概率。

我们假设场景是轮盘赌,就是说一个轮盘随机旋转。如果每一次停留的位置都是随机的,那么任意一个状态到下面任意一个状态的概率都应该是0.33。但是为了例子更加清晰,我们假设,这轮盘不均衡。

当前盒子为金时,下一次转到银盒子的概率是0.5,铜盒子为0.4,金盒子0.1;当前是银盒子,下一轮是金盒子0.4,铜盒子0.4,银盒子0.2;当前为铜盒子,下一个盒子为金银铜的概率分别为0.5,0.3,0.2。那么用一个表格来表示概率跳转(概率转移矩阵),每一行表示一个当前状态,每一列表示一个下一时刻的状态):

\
0.20.50.4
0.40.20.4
0.50.30.2

把金银铜改成数字,分别代表行列号:

\123
10.20.50.4
20.40.20.4
30.50.30.2

这就是状态转移矩阵:
在这里插入图片描述
再看各个盒子里面拿不同材质首饰出来的概率:

\红宝石珍珠珊瑚蓝宝石
0.40.20.20.2
0.250.250.250.25
0.330.330.330

对应的观测矩阵:
在这里插入图片描述
初始概率分布铜盒子略高,其他两个概率相等: π = ( 0.3 , 0.3 , 0.4 ) T \pi=(0.3,0.3,0.4)^T π=(0.3,0.3,0.4)T

求解三个基本问题的现实意义

在开始时就有了两个空间和一个 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π),我们就定义了一个HMM。

那么运用这个HMM解决概率计算问题,就可以求出连续拿出三件首饰依次是红宝石、珍珠和珊瑚的可能性有多大。反过来,通过解决预测问题,还可以得到最终观测序列为(红宝石、珍珠、珊瑚)的情况下,最有可能出现的状态序列(盒子序列)是什么。

如果假设在开始的时候,我们根本不知道 λ \lambda λ的取值,则可以通过不断地转动轮盘来选盒子,拿首饰,生成一个个状态序列和观测序列,然后用他们作为训练数据,来解决学习问题,从而得到 λ \lambda λ

那么解决这些问题的意义是什么呢?学习问题可以求参数 λ \lambda λ,但是解决概率计算问题和预测问题是为什么呢?单用这个例子来说,可以让上面情形变复杂:小白提出两种方案:

【方案1】如果转3次轮盘,拿出来依次是红宝石、珍珠、珊瑚,就赦免;
【方案2】如果转4次,连续拿出4次红宝石,就赦免;
让二者选一个方案,那么这个时候就需要计算序列: O 1 = ( 红 宝 石 , 珍 珠 , 珊 瑚 ) O_1=(红宝石,珍珠,珊瑚) O1=( O 2 = ( 红 宝 石 , 红 宝 石 , 红 宝 石 , 红 宝 石 ) O_2=(红宝石,红宝石,红宝石,红宝石) O2=()出现的概率,然后比较。

然后,下一个笔记讲解三个问题的求解~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值