# HMM隐马尔科夫模型

## ; 生成式模型vs判别式模型

### 生成式模型

[En]

The more common generative models are: naive Bayesian, hidden Markov model and so on.

### 判别式模型

[En]

The more common discriminant models are: logical regression, conditional random field, etc.

## HMM的参数

HMM模型有三大参数，即θ = ( π , A , B ) \theta=(\pi,A,B)θ=(π,A ,B )

## HMM三大问题

HMM要解决的三大问题如下：

• Inference：在已知模型参数θ \theta θ和观测序列x x x的前提下，计算概率p ( z k ∣ x , θ ) p(z_k|x,\theta)p (z k ​∣x ,θ)。
• Learning：已知观测序列x x x，求HMM模型参数θ = ( π , A , B ) \theta=(\pi,A,B)θ=(π,A ,B )
• Decoding：已知模型参数θ \theta θ和观测序列x x x，求最优的标记序列z z z

### Inference

#### 前向算法(Forward Algorithm)

p ( x 1 : k , z k ∣ θ ) = C ∗ p ( x 1 : k − 1 , z k − 1 ∣ θ ) p(x_{1:k},z_k|\theta)=Cp(x_{1:k-1},z_{k-1}|\theta)p (x 1 :k ​,z k ​∣θ)=C ∗p (x 1 :k −1 ​,z k −1 ​∣θ)

p ( x 1 : k , z k ∣ θ ) = ∑ z k − 1 p ( z k − 1 , z k , x 1 : k ) p(x_{1:k},z_k|\theta)=\sum_{z_{k-1}}{p(z_{k-1},z_k,x_{1:k})}p (x 1 :k ​,z k ​∣θ)=z k −1 ​∑​p (z k −1 ​,z k ​,x 1 :k ​)

[En]

Then we split the formula to get*

∑ z k − 1 p ( z k − 1 , z k , x 1 : k ) = ∑ z k − 1 p ( z k − 1 , z k , x 1 : k − 1 , x k ) \sum_{z_{k-1}}p(z_{k-1},z_k,x_{1:k})=\sum_{z_{k-1}}p(z_{k-1},z_k,x_{1:k-1},x_k)z k −1 ​∑​p (z k −1 ​,z k ​,x 1 :k ​)=z k −1 ​∑​p (z k −1 ​,z k ​,x 1 :k −1 ​,x k ​)

∑ z k − 1 p ( z k − 1 , z k , x 1 : k − 1 , x k ) = ∑ z k − 1 p ( x 1 : k − 1 , z k − 1 ) p ( z k ∣ x 1 : k − 1 , z k − 1 ) p ( x k ∣ z k , z k − 1 , x 1 : k − 1 ) \sum_{z_{k-1}}p(z_{k-1},z_k,x_{1:k-1},x_k)=\sum_{z_{k-1}}p(x_{1:k-1},z_{k-1})p(z_k|x_{1:k-1},z_{k-1})p(x_k|z_k,z_{k-1},x_{1:k-1})z k −1 ​∑​p (z k −1 ​,z k ​,x 1 :k −1 ​,x k ​)=z k −1 ​∑​p (x 1 :k −1 ​,z k −1 ​)p (z k ​∣x 1 :k −1 ​,z k −1 ​)p (x k ​∣z k ​,z k −1 ​,x 1 :k −1 ​)

∑ z k − 1 p ( x 1 : k − 1 , z k − 1 ) p ( z k ∣ x 1 : k − 1 , z k − 1 ) p ( x k ∣ z k , z k − 1 , x 1 : k − 1 ) = ∑ z k − 1 p ( x 1 : k − 1 , z k − 1 ) p ( z k ∣ z k − 1 ) p ( x k ∣ z k ) \sum_{z_{k-1}}p(x_{1:k-1},z_{k-1})p(z_k|x_{1:k-1},z_{k-1})p(x_k|z_k,z_{k-1},x_{1:k-1})=\sum_{z_{k-1}}p(x_{1:k-1},z_{k-1})p(z_k|z_{k-1})p(x_k|z_k)z k −1 ​∑​p (x 1 :k −1 ​,z k −1 ​)p (z k ​∣x 1 :k −1 ​,z k −1 ​)p (x k ​∣z k ​,z k −1 ​,x 1 :k −1 ​)=z k −1 ​∑​p (x 1 :k −1 ​,z k −1 ​)p (z k ​∣z k −1 ​)p (x k ​∣z k ​)

α t ( j ) = [ ∑ i N α t − 1 ( i ) A i j ] B j , x k \alpha_t{(j)}=[\sum_{i}^{N}{\alpha_{t-1}(i)A_{ij}}]B_{j,x_k}αt ​(j )=[i ∑N ​αt −1 ​(i )A i j ​]B j ,x k ​​

#### 后向算法(Backward Algorithm)

p ( x k + 1 : n ∣ z k ) = ∑ z k + 1 p ( x k + 1 : n , z k + 1 ∣ z k ) p(x_{k+1:n}|z_k)=\sum_{z_{k+1}}p(x_{k+1:n},z_{k+1}|z_k)p (x k +1 :n ​∣z k ​)=z k +1 ​∑​p (x k +1 :n ​,z k +1 ​∣z k ​)

∑ z k + 1 p ( x k + 1 : n , z k + 1 ∣ z k ) = ∑ z k + 1 p ( z k + 1 ∣ z k ) p ( x k + 1 ∣ z k , z k + 1 ) p ( x k + 2 : n ∣ z k , z k + 1 , x k + 1 ) \sum_{z_{k+1}}p(x_{k+1:n},z_{k+1}|z_k)=\sum_{z_{k+1}}p(z_{k+1}|z_k)p(x_{k+1}|z_k,z_{k+1})p(x_{k+2:n}|z_k,z_{k+1},x_{k+1})z k +1 ​∑​p (x k +1 :n ​,z k +1 ​∣z k ​)=z k +1 ​∑​p (z k +1 ​∣z k ​)p (x k +1 ​∣z k ​,z k +1 ​)p (x k +2 :n ​∣z k ​,z k +1 ​,x k +1 ​)

∑ z k + 1 p ( z k + 1 ∣ z k ) p ( x k + 1 ∣ z k , z k + 1 ) p ( x k + 2 : n ∣ z k , z k + 1 , x k + 1 ) = ∑ z k + 1 p ( z k + 1 ∣ z k ) p ( x k + 1 ∣ z k + 1 ) p ( x k + 2 : n ∣ z k + 1 ) \sum_{z_{k+1}}p(z_{k+1}|z_k)p(x_{k+1}|z_k,z_{k+1})p(x_{k+2:n}|z_k,z_{k+1},x_{k+1})=\sum_{z_{k+1}}p(z_{k+1}|z_k)p(x_{k+1}|z_{k+1})p(x_{k+2:n}|z_{k+1})z k +1 ​∑​p (z k +1 ​∣z k ​)p (x k +1 ​∣z k ​,z k +1 ​)p (x k +2 :n ​∣z k ​,z k +1 ​,x k +1 ​)=z k +1 ​∑​p (z k +1 ​∣z k ​)p (x k +1 ​∣z k +1 ​)p (x k +2 :n ​∣z k +1 ​)

β t ( i ) = ∑ j n A i j B j , x t + 1 β t + 1 ( j ) \beta_t(i)=\sum_{j}^n{A_{ij}B_{j,x_{t+1}}\beta_{t+1}(j)}βt ​(i )=j ∑n ​A i j ​B j ,x t +1 ​​βt +1 ​(j )

p ( z k = i ∣ x ) = α k ( i ) β k ( i ) ∑ j α k ( j ) β k ( j ) p(z_k=i|x)=\frac{\alpha_k(i)\beta_k(i)}{\sum_{j}\alpha_k(j)\beta_k(j)}p (z k ​=i ∣x )=∑j ​αk ​(j )βk ​(j )αk ​(i )βk ​(i )​

[En]

According to the forward vector and backward vector, we can have another probability.

ξ k ( i , j ) = p ( z k = i , z k + 1 = j ∣ x , θ ) = p ( z k = i , z k + 1 = j , x ∣ θ ) p ( x ∣ θ ) \xi_k(i,j)=p(z_k=i,z_{k+1}=j|x,\theta)=\frac{p(z_k=i,z_{k+1}=j,x|\theta)}{p(x|\theta)}ξk ​(i ,j )=p (z k ​=i ,z k +1 ​=j ∣x ,θ)=p (x ∣θ)p (z k ​=i ,z k +1 ​=j ,x ∣θ)​

p ( x ∣ θ ) = ∑ i n ∑ j n p ( z k = i , z k + 1 = j , x ∣ θ ) p(x|\theta)=\sum_{i}^n\sum_{j}^np(z_k=i,z_{k+1}=j,x|\theta)p (x ∣θ)=i ∑n ​j ∑n ​p (z k ​=i ,z k +1 ​=j ,x ∣θ)

p ( z k = i , z k + 1 = j , x ∣ θ ) = α k ( i ) A i j B j , x k + 1 β k + 1 ( j ) p(z_k=i,z_{k+1}=j,x|\theta)=\alpha_k(i)A_{ij}B_{j,x_{k+1}}\beta_{k+1}(j)p (z k ​=i ,z k +1 ​=j ,x ∣θ)=αk ​(i )A i j ​B j ,x k +1 ​​βk +1 ​(j )

ξ k ( i , j ) = α k ( i ) A i j B j , x k + 1 β k + 1 ( j ) ∑ i n ∑ j n α k ( i ) A i j B j , x k + 1 β k + 1 ( j ) \xi_k(i,j)=\frac{\alpha_k(i)A_{ij}B_{j,x_{k+1}}\beta_{k+1}(j)}{\sum_{i}^n\sum_{j}^n\alpha_k(i)A_{ij}B_{j,x_{k+1}}\beta_{k+1}(j)}ξk ​(i ,j )=∑i n ​∑j n ​αk ​(i )A i j ​B j ,x k +1 ​​βk +1 ​(j )αk ​(i )A i j ​B j ,x k +1 ​​βk +1 ​(j )​

### Learning

#### EM算法

EM算法全称叫做Expectation Maximization algorithm，专门用于求解含有l a t e n t latent l a t e n t v a r i a b l e variable v a r i a b l e​的模型参数。EM算法的流程如下：

1. 设置模型参数的初始值θ 0 \theta_0 θ0 ​
2. E步：将模型参数初始值视为已知量，根据第i i i次迭代的模型参数θ i \theta_i θi ​求第i + 1 i+1 i +1步状态序列z z z​的期望
3. M步：求使得E步求出的期望最大的模型参数θ i + 1 \theta_{i+1}θi +1 ​​作为第i + 1 i+1 i +1次迭代的模型参数估计值
4. 迭代，直至收敛

#### 参数 π \pi π 求解

π = ( π 1 , π 2 . . . . . . π n ) \pi=(\pi_1,\pi_2……\pi_n)π=(π1 ​,π2 ​……πn ​)​表示每一种状态作为初始状态的概率。由Inference问题我们可以求出p ( z k ∣ x ) p(z_k|x)p (z k ​∣x )​，我们可以把这个概率当作是π \pi π​的一个期望值。于是套用EM算法即可。期望计算公式为
π i ( n + 1 ) = γ 1 ( i ) \pi_i^{(n+1)}=\gamma_1(i)πi (n +1 )​=γ1 ​(i )

#### 参数A求解

A i j ( n + 1 ) = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) A_{ij}^{(n+1)}=\frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)}A i j (n +1 )​=∑t =1 T −1 ​γt ​(i )∑t =1 T −1 ​ξt ​(i ,j )​

#### 参数B求解

B i , x t ( n + 1 ) = ∑ t = 1 , x t = k T γ t ( i ) ∑ t = 1 T γ t ( i ) B_{i,x_t}^{(n+1)}=\frac{\sum_{t=1,x_t=k}^T\gamma_t(i)}{\sum_{t=1}^T\gamma_t(i)}B i ,x t ​(n +1 )​=∑t =1 T ​γt ​(i )∑t =1 ,x t ​=k T ​γt ​(i )​

### ; Decoding

[En]

The prediction problem is also known as the decoding problem, which is to know the observation sequence and model parameters to predict the optimal marker sequence. The stupidest way is to enumerate all possible state sequences and then find the one with the highest probability, but the complexity is obviously unacceptable.

Viterbi算法其实就是在寻找一条最优的路径，那么在HMM问题中，就是找一条概率最大的路径。

δ k + 1 ( j ) = m a x i = ( 1 , 2 , 3… n ) ( δ k ( i ) A i j B i , x k + 1 ) \delta_{k+1}(j)=max_{i=(1,2,3…n)}(\delta_{k}(i)A_{ij}B_{i,x_{k+1}})δk +1 ​(j )=m a x i =(1 ,2 ,3 …n )​(δk ​(i )A i j ​B i ,x k +1 ​​)

δ 1 ( i ) = π i B i , x 1 \delta_1(i)=\pi_iB_{i,x_1}δ1 ​(i )=πi ​B i ,x 1 ​​

δ k + 1 ( j ) = m a x i = ( 1 , 2 , 3… n ) { δ k ( i ) + l o g ( A i j ) + l o g ( B j , x k + 1 ) } \delta_{k+1}(j)=max_{i=(1,2,3…n)}\lbrace\delta_{k}(i)+log(A_{ij}) + log(B_{j,x_{k+1}})\rbrace δk +1 ​(j )=m a x i =(1 ,2 ,3 …n )​{δk ​(i )+l o g (A i j ​)+l o g (B j ,x k +1 ​​)}

δ 1 ( i ) = l o g π i + l o g B i , x 1 \delta_1(i)=log\pi_i+logB_{i,x_1}δ1 ​(i )=l o g πi ​+l o g B i ,x 1 ​​

δ k + 1 ( j ) = m a x i = ( 1 , 2 , 3… n ) { δ k ( i ) + l o g ( A i j ) + l o g ( B j , x k + 1 ) } \delta_{k+1}(j)=max_{i=(1,2,3…n)}\lbrace\delta_{k}(i)+log(A_{ij}) + log(B_{j,x_{k+1}})\rbrace δk +1 ​(j )=m a x i =(1 ,2 ,3 …n )​{δk ​(i )+l o g (A i j ​)+l o g (B j ,x k +1 ​​)}

δ 1 ( i ) = l o g π i + l o g B i , x 1 \delta_1(i)=log\pi_i+logB_{i,x_1}δ1 ​(i )=l o g πi ​+l o g B i ,x 1 ​​

Original: https://blog.csdn.net/qq_42791848/article/details/122373159
Author: lzk_nus
Title: HMM隐马尔科夫模型

(0)

### 大家都在看

• #### 《MATLAB语音信号分析与合成（第二版）》：第2章 语音信号的时域、频域特性和短时分析技术

《MATLAB语音信号分析与合成（第二版）》：第2章 语音信号的时域、频域特性和短时分析技术 前言 1. 数据与函数路径设置 2. MATLAB仿真一：语音信号短时能量图 3. M…

人工智能 2023年5月23日
0138

最近自己的故障分类论文完成的差不多了，决定抽点时间复现一下引用比较多的WDCNN。之前都是直接用别人的实验数据，没有仔细阅读过相关论文，更没有考虑过复现的问题。仔细阅读这篇论文后，…

人工智能 2023年7月21日
0152
• #### python实现语音通话_python 实现语音聊天机器人的示例代码

前言 在不远的将来，实现一定程度上的语音支持将成为日常科技的基本要求，整合了语音识别的python程序提供了其他技术无法比拟的交互性和可访问性。最重要的是，在python程序中实现…

人工智能 2023年5月25日
0193
• #### 【Python】初学者喜欢的Python入门笔记

python程序设计 入门笔记 ⚪常用数据类型 ⚪注释 * 单行注释 多行注释 ⚪type() 函数 ⚪数据类型的转换 ⚪标识符命名规范 ⚪运算符 * 算数运算符 赋值运算符 复合…

人工智能 2023年7月3日
0143
• #### 浅谈标准DH（SDH）和改进DH（MDH）

啊哦~你想找的内容离你而去了哦 内容不存在，可能为如下原因导致： ① 内容还在审核中 ② 内容以前存在，但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

人工智能 2023年7月28日
0105
• #### 【学习笔记】集成学习（二）：回归问题

Datawhale组队学习第27期：集成学习本次学习的指导老师 萌弟的教学视频本贴为学习记录帖，有任何问题欢迎随时交流~部分内容可能还不完整，后期随着知识积累逐步完善。开始时间：2…

人工智能 2023年6月18日
0147
• #### 计算机视觉中的经典骨干网络总结

特征提取是计算机视觉任务的基础，良好的特征提取网络可以明显的提升算法的性能表现。在计算机视觉任务中，对图像进行特征提取的网络被称作为骨干网络（Backbone），可以说是下游任务的…

人工智能 2023年7月13日
0181
• #### openCV第三篇

前文复习： openCV第一篇_老师我作业忘带了的博客-CSDN博客 openCV第二篇_老师我作业忘带了的博客-CSDN博客 文章目录 一、Canny边缘检测 二、 图像轮廓 2…

人工智能 2023年7月26日
0188
• #### 【知识图谱系列】-【Neo4j】之Cypher 二

人工智能 2023年6月10日
0201
• #### PyTorch数据归一化处理：transforms.Normalize及计算图像数据集的均值和方差

PyTorch数据归一化处理：transforms.Normalize及计算图像数据集的均值和方差 1.数据归一化处理：transforms.Normalize * 1.1 理解t…

人工智能 2023年6月23日
0254
• #### [LeetCode]数组相关试题

作者：华丞臧.专栏：【LeetCode】各位读者老爷如果觉得博主写的不错，请诸位多多支持(&#x70B9;&#x8D5E;+&#x6536;&#x8…

人工智能 2023年6月30日
0154
• #### 【数字图像处理】灰度图像中添加高斯噪声、椒盐噪声、斑点噪声以及利用不同方法（中值、排序、维纳滤波）去除各种噪声的matlab程序

图像处理问题描述： 1、图像中分别加入不同方差的高斯噪声、不同噪声密度椒盐噪声和不同方差的斑点噪声（Gaussian noise, salt & pepper noise …

人工智能 2023年6月18日
0172
• #### 对于代码复现学习的一些理解||计算机研究生学习笔记||经验分享||深度学习||pytorch||不定期长期更新

人工智能 2023年6月15日
0156
• #### 实时通信服务中的语音解混响算法实践

导读： 随着音视频交流会议的日益普及，与会者在不同的环境中遇到了越来越明显和不同的混响场景，如会议室场景、玻璃会议室场景和隔音材料较差的小房间。为了确保更好的收听清晰度和舒适性，通…

人工智能 2023年5月25日
0155
• #### 手把手带你刷好题（牛客刷题②）

作者：月亮嚼成星~博客主页：月亮嚼成星~的博客主页专栏：手把手带你刷牛客工欲善其事必先利其器，给大家介绍一款超牛的斩获大厂offer利器——牛客网点击免费注册和我一起刷题吧 文章目…

人工智能 2023年5月30日
0222
• #### redis学习第一天

NoSQL(Not Only SQL)，意思是不仅仅是SQL，泛指非关系型数据库。NoSQL不依赖业务逻辑方式存储，而是以简单的key-value模式存储。因此大大的增加了数据库的…

人工智能 2023年7月29日
0135