Chapter 15 HMM模型

article/2025/11/6 2:12:20

1.1 定义

隐马尔科夫模型:可用于标注问题,在语音识别、NLP、生物信息、模式识别等领域被实践证明是有效的算法。

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

隐马尔科夫模型随机生成的状态随机序列,称为状态序列;每个状态生成一个观测,由此产生的观测随机序列,称为观测序列。

z_{1},z_{2}...z_{n+1}是主题,我们需要通过词来确定的对象。

x_{1},x_{2}...x_{n+1}是词,我们所观察的对象。

z_{1},z_{2}不可观察的前提下,x_{1},z_{2}独立。如下图,将右侧部分看作一个整体,作为X’。因此就可以当作贝叶斯网络。当z_{1}不可观察时,x_{1},x'相互独立。

1.2 HMM模型的确定

HMM由初始概率分布\pi、状态转移概率分布A以及观测概率分布B确定。

\lambda =(A,B,\pi )

Q是所有可能的状态的集合;N是可能的状态数

V是所有可能的观测的集合;M是可能的观测数

Q=\left \{ q_{1},q_{2},...,q_{N}\right \}

V=\left \{ v_{1},v_{2},...v_{M} \right \}

参数分析:

  • I是长度为T的状态序列,O是对应的观测序列:

           I=\left \{ i_{1},i_{2}...,i_{T} \right \}O=\left \{ o_{1},o_{2},...,o_{T} \right \}

  • 隐状态:A_{nxn}=\begin{pmatrix} a_{11}& a_{12} & ... & a_{1n}\\ a_{21}& a_{22} & ... & a_{2n} \\ \vdots & \vdots & & \vdots \\ a_{n1} & a_{n2} & ...& a_{nn} \end{pmatrix},其中a_{i1}+a_{i2}+...+a_{in}=1,i=1,2...n

其中a_{ij}=P(i_{t+1}=q_{j}|i_{t}=q_{i})是在时刻t处于状态q_{i}的条件下时刻t+1转移到状态q_{i}的概率。

ps: 隐状态必须是离散的。

  • B_{nxm}=\begin{pmatrix} b_{11} & b_{12} & b_{13} & ... &b_{1m} \\ b_{21}&b_{22} & b_{23} & ...& b_{2m}\\ \vdots &\vdots & \vdots & & \vdots \\ b_{n1}& b_{n2} &b_{n3} & ... & b_{nm} \end{pmatrix}

        可观测序列,值是连续或者离散的都可以。

        n——隐状态的个数   m——可观测的个数

        b_{ik}=P(o_{t}=v_{k}|i_{t}=q_{i})是在时刻t处于状态q_{i}的条件下生成观测v_{k}的概率。

        \pi _{i}=P(i_{1}=q_{i})是时刻t=1处于状态q_{i}的概率。

  • 总结:HMM由初始概率分布\pi(向量)、状态转移概率分布A(矩阵)以及观测概率分布B(矩阵)确定。\pi和A决定状态序列,B决定观测序列。因此,HMM可以用三元符号表示,称为HMM的三要素:\lambda =(A,B,\pi )

1.3 HMM的两个基本性质

(1)齐次假设:P(i_{t}|i_{t-1},o_{t-1},i_{t-2},o_{t-2}...i_{1},o_{1})=P(i_{t}|i_{t-1})

(2)观测独立性假设:P(o_{t}|i_{T},o_{T},i_{T-1},...,i_{1},o_{1})=P(o_{t}|i_{t})

1.4 HMM的实例

 问题:求解最终得到{红、白、红}的概率?

 设置各个参数如下:
状态集合:Q={盒子1,盒子2,盒子3}

观测集合:V={红,白}

状态序列和观测序列的长度为:T=3+2=5

初始概率分布:\pi=\begin{pmatrix} 0.2\\ 0.4\\ 0.4 \end{pmatrix}

状态转移概率分布:A=\begin{bmatrix} 0.5&0.2 &0.3 \\ 0.3 &0.5 &0.2 \\ 0.2 &0.3 &0.5 \end{bmatrix}

观测概率分布:B=\begin{bmatrix} 0.5 &0.5 \\ 0.4& 0.6\\ 0.7& 0.3 \end{bmatrix}

求解:见1.6

1.5 HMM的3个基本问题

  • 概率计算问题(重点):前向-后向算法——动态规划

给定模型\lambda =(A,B,\pi )和观测序列O=\left \{ o_{1},o_{2},...,o_{T} \right \},计算模型\lambda下观测序列O出现的概率P(O|\lambda )

  • 学习问题:Baum-Welch算法(状态未知)——EM

已知观测序列O=\left \{ o_{1},o_{2},...,o_{T} \right \},估计模型\lambda =(A,B,\pi )的参数,使得在该模型下观测序列P(O|\lambda )最大。

  • 预测问题:Viterbi算法——动态规划

解码问题:已知模型\lambda =(A,B,\pi )和观测序列O=\left \{ o_{1},o_{2},...,o_{T} \right \},求给定观测序列条件概率P(I|O,\lambda )最大的状态序列I

1.6 概率计算问题

  • 直接计算(暴力算法)

按照概率公式,列举所有可能的长度为T的状态序列I=\left \{ i_{1},i_{2},...,i_{T} \right \},\,求各个状态序列I和观测序列O=\left \{ o_{1},o_{2},o_{3},...,o_{T} \right \}的联合概率P(O,I|\lambda ),然后对所有可能的状态序列求和,从而得到P(O|\lambda )

P(O|\lambda )=\sum_{I}P(O,I|\lambda )=\sum_{I}P(O|I,\lambda )P(I|\lambda )

 

  •  前向算法

前向算法的定义:给定\lambda,定义到时刻t部分观测序列为o_{1},o_{2}...o_{t},且状态为q_{i}的概率称为前向概率,记作:\alpha _{t}(i)=P(o_{1},o_{2},...,o_{t},i_{t}=q_{i}|\lambda )

计算观测序列概率P(O|\lambda )

(1)初值:\alpha _{1}(i)=\pi _{i}b_{io_{1}}

(2)递推:对于t=1,2,...,T-1\alpha _{t+1}(i)=(\sum_{j=1}^{N}\alpha _{t}(j)a_{ji})b_{io_{t+1}}

(3)最终:P(O|\lambda )=\sum_{i=1}^{N}\alpha _{T}(i)

时间复杂度是O(N^{2}T)

1.4实例可以通过前向算法求解:

 

(1)计算初值

\alpha _{1}(1)=\pi _{1}b_{1o_{1}}=0.2\times 0.5=0.1

\alpha _{1}(2)=\pi _{2}b_{2o_{1}}=0.4\times 0.4=0.16

\alpha _{1}(3)=\pi _{3}b_{3o_{1}}=0.4\times 0.7=0.28

(2)递推

\alpha _{2}(1)=(\sum_{j=1}^{N}\alpha _{1}(j)a_{j1})b_{1o_{2}}=(0.1\times 0.5+0.16\times 0.3+0.28\times 0.2 )=0.077

同理:\alpha _{2}(2)=0.1104,\alpha _{2}(3)=0.0606

\alpha _{3}(1)=0.04187,\alpha _{3}(2)=0.03551,\alpha _{3}(3)=0.05284

(3)最终

P(O|\lambda )=\sum_{i=1}^{3}\alpha _{3}(i)=0.04187+0.03551+0.05284=0.13022

  • 后向算法

给定\lambda,定义到时刻t状态为qi的前提下,从t+1到T的部分观测时序为o_{t+1},o_{t+2},...,o_{T}的概率为后向概率,记作:\beta _{t}(i)=P(o_{t+1},o_{t+2},...,o_{T}|i_{t}=q_{i},\lambda )

计算观测序列概率P(O|\lambda )

(1) 初值\beta _{T}(i)=1

(2)递推,对于t=T-1,T-2,...,1,\beta _{t}(i)=\sum_{j=1}^{N}(a_{ij}b_{jo_{t+1}}\beta_{t+1} (j))

(4)最终:P(O|\lambda )=\sum_{i=1}^{N}\pi _{i}b_{io_{1}}\beta _{1}(i)

  • 前向概率、后向概率的关系

P(i_{t}=q_{i},O|\lambda )=P(O|i_{t}=q_{i},\lambda )P(i_{t}=q_{i}|\lambda ) =P(o_{1},...,o_{t},o_{t+1},...,o_{T}|i_{t}=q_{i},\lambda )P(i_{t}=q_{i}|\lambda ) =P(o_{1},...,o_{t}|i_{t}=q_{i},\lambda)P(o_{t+1},...,o_{T}|i_{t}=q_{i},\lambda)P(i_{t}=q_{i}|\lambda )=P(o_{1},...,o_{t},i_{t}=q_{i}|\lambda)P(o_{t+1},...,o_{T}|i_{t}=q_{i},\lambda)=\alpha_{t} (i)\beta _{t}(i)

1.7 单个状态的概率

求给定模型\lambda和观测O,在时刻t处于状态qi的概率:

记作:\gamma _{t}(i)=P(i_{t}=q_{i}|O,\lambda )

\gamma _{t}(i)=P(i_{t}=q_{i}|O,\lambda )=\frac{P(i_{t}=q_{i},O|\lambda )}{P(O|\lambda )}=\frac{\alpha_{t} (i)\beta _{t}(i)}{P(O|\lambda )}=\frac{\alpha_{t} (i)\beta _{t}(i)}{\sum_{i=1}^{N}\alpha_{t} (i)\beta _{t}(i)}

\gamma的意义为:在每个时刻t选择在该时刻最有可能出现的状态i_{t}^{*},从而得到一个状态序列

I^{*}=\left \{ i_{1}^{*},i_{2}^{*},...,i_{T}^{*} \right \}将它作为预测的结果。

例如:对于一句话“今天我吃了一个火龙果”,划分词是可能出现的状态有(begin,mid,end,single)

若这么划分词:今天|我|吃|了|一个|火龙果。

则:

begin:“今”,“一”、“火”

mid:“龙”

end:“天”、“个”

single:“我”、“吃”、“了”

期望:在观测O下状态i出现的期望:\sum_{t=1}^{T}\gamma _{t}(i)

1.8 两个状态的联合概率

求给定模型\lambda和观测O,在时刻t处于状态qi的概率并且时刻t+1处于状态qi的概率:
\zeta _{t}(i,j)=P(i_{t}=q_{i},i_{t+1}=q_{j}|O,\lambda )

\zeta _{t}(i,j)=P(i_{t}=q_{i},i_{t+1}=q_{j}|O,\lambda )=\frac{P(i_{t}=q_{i},i_{t+1}=q_{j},O|\lambda )}{P(O|\lambda )}=\frac{P(i_{t}=q_{i},i_{t+1}=q_{j},O|\lambda )}{\sum_{i=1}^{N}\sum_{j=1}^{N}P(i_{t}=q_{i},i_{t+1}=q_{j},O|\lambda )}

其中:P(i_{t}=q_{i},i_{t+1}=q_{j},O|\lambda )=\alpha _{t}(i)a_{ij}b_{jo_{t+1}}\beta _{t+1}(j )

期望:在观测O下状态i转移到状态j的期望:\sum_{t=1}^{T-1}\zeta _{t}(i,j)

1.9 学习算法

若训练数据包括观测序列和状态序列,则HMM的学习非常简单,是监督学习;

若训练数据只有观测序列,则HMM的学习需要使用EM算法,是非监督学习。

(1)监督学习

假设已经给定训练数据包括S个长度相同的观测序列和对应的状态序列\left \{ (O_{1},I_{1}),(O_{2},I_{2}),...,(O_{s},I_{s}) \right \},那么可以直接利用Bernoulli大数定理的结论“频率的极限是概率”,给定HMM的参数估计。

初始概率\widehat{\pi _{i}}=\frac{|q_{i}|}{\sum_{i}|q_{i}|}

转移概率\widehat{a_{ij}}=\frac{|q_{ij}|}{\sum_{j=1}^{N}|q_{ij}|}

观测概率\widehat{b_{ik}}=\frac{|s_{ik}|}{\sum_{k=1}^{M}|s_{ik}|}

(2)非监督学习

Baum-Welch算法:

所有观测数据为O=(o_{1},o_{2},...,o_{T}),所有隐数据为I=(i_{1},i_{2},...,i_{T}),完全数据是(O,T)=(o_{1},o_{2},...,o_{T},i_{1},i_{2},...,i_{T}),完全数据的对数似然函数为lnP(I|O,\lambda )

假设\overline{\lambda }是HMM参数的当前估计值,\lambda为待求的参数。

Q(\lambda ,\overline{\lambda })=\sum_{I}(lnP(O,I|\lambda ))P(I|O,\overline{\lambda } )=\sum_{I}(lnP(O,I|\lambda ))\frac{P(O,I|\lambda )}{P(O,\overline{\lambda })}

EM过程:

因为P(O,I|\lambda )=P(O|I,\lambda )P(I|\lambda )=\pi _{i_{1}}b_{i_{1}o_{1}}a_{i_{1}i_{2}}...a_{i_{T-1}i_{T}}b_{i_{T}o_{T}}

所以Q(\lambda ,\overline{\lambda })=\sum_{I}(lnP(O,I|\lambda ))P(I|O,\overline{\lambda } )=\sum_{I}ln\pi _{i_{1}}P(O,I|\lambda )+\sum_{I}(\sum_{t=1}^{T-1}lna_{i_{t}i_{t+1}})P(O,I|\overline{\lambda })+\sum_{I}(\sum_{t=1}^{T}lnb_{i_{t}o_{t}})P(O,I|\overline{\lambda })

拉格朗日乘子法:
\sum_{i=1}^{N}(ln\pi _{i})P(O,i_{1}=i|\overline{\lambda} )+\gamma (\sum_{i=1}^{N}\pi _{i}-1),其中\sum_{i=1}^{N}\pi _{i}=1

先对\pi_{i}求偏导:

P(O,i_{1}=i|\overline{\lambda })+\gamma \pi _{i}=0

∴    \sum_{i=1}^{T}P(O,i_{1}=i|\overline{\lambda })+\sum_{i=1}^{T}\gamma \pi _{i}=0

\gamma =-P(O|\overline{\lambda })

∴初始状态概率为\pi_{i}=\frac{P(O,i_{1}=i|\overline{\lambda })}{P(O|\overline{\lambda })}= \frac{P(O,i_{1}= i|\overline{\lambda })}{\sum_{i=1}^{N}P(O,i_{1}=i|\overline{\lambda })}=\gamma _{1}(i)

转移概率和观测概率:

1.10 Viterbi算法

Viterbi算法实际是用动态规划解HMM预测问题,用DP求概率最大的路径(最优路径),这是一条路径对应一个状态序列。

定义变量\delta _{t}(i):在时刻t状态为i的所有路径中,概率的最大值。

\delta _{t}(i)=\underset{i_{1},i_{2},...,i_{t-1}}{max}P(i_{t}=i,i_{t-1},...,i_{1},o_{t},...o_{1}|\lambda )

递推:\delta _{1}(i)=\pi _{i}b_{io_{1}}

\delta _{t+1}(i)=\underset{i_{1},i_{2},...,i_{t}}{max}P(i_{t+1}=i,i_{t},...,i_{1},o_{t+1},...o_{1}|\lambda )=\underset{1\leq j\geq N}{max}(\delta _{t}(j)a_{ji})b_{io_{t+1}}

终止:P^{*}=\underset{1\leq i\leq N}{max}\delta _{T}(i)

1.11 举例

 

 

 

 


http://chatgpt.dhexx.cn/article/4Eihdu2K.shtml

相关文章

机器学习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模型

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

windows系统镜像修复计算机,如何修复:Windows无法在此计算机上查找系统映像

使用内置Windows备份和恢复实用程序从外部硬盘驱动器或USB记忆棒还原系统映像时,甚至在命令提示符下还原系统映像时,通常会发生此问题。 通常,使用外部硬盘驱动器执行系统恢复时,会经常出现此错误消息。 基本上6可以防止在外部硬盘上找到系统映像。 执行系统还原时应检查并…

台式启动修复无法自动修复此计算机怎么办,如果win7启动修复无法自动修复此计算机怎么办...

摘要: 1. 引导时按F8键,直到出现高级选项后再移动,然后放开. 2.选择最后一个正确的配置,然后按Enter进行修复. 3.引导时按8进入安全模式并使用系统自己的系统还原. 4.使用系统磁盘进行修复,打开命令提示符,输入sfc / s…

window无法自动修复计算机,win7系统无法自动修复此计算机的解决方法

很多小伙伴都遇到过win7系统无法自动修复此计算机的困惑吧,一些朋友看过网上零散的win7系统无法自动修复此计算机的处理方法,并没有完完全全明白win7系统无法自动修复此计算机是如何解决的,今天小编准备了简单的解决办法,只需要按…

台式电脑显示无法自动修复此计算机,windows无法自动修复此计算机怎么解决

类型:系统其它大小:3.2M语言:中文 评分:10.0 标签: 立即下载 windows很多的小伙伴都出现了无法自动修复计算机的问题,一般这种情况是文件损坏了,只要修复好就可以了,下面小编就来给大…

Win7开机F8没有修复计算机选项的恢复方法

首先管理员运行cmd.exe,输入下面命令: reagentc /enable回车后重启按F8就能看到“修复计算机”选项。如果提示如下,可能你系统是Ghost版的,精简掉了: REAGENTC.EXE: 操作失败: 2 系统找不到指定的文件。 遇到上面这种…