HMM

作者: 三方斜阳 | 来源:发表于2021-04-27 08:20 被阅读0次

1.  什么样的问题需要HMM模型

使用HMM模型时的问题一般有这两个特征:

1)问题是基于序列的,比如时间序列,或者状态序列。

2)问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列

2. 马尔科夫模型的两个假设

1)独立输出假设:每个时刻的输出只与当前状态有关

2)马尔科夫假设:输出与前一个时刻和当前时刻有关

3. HMM定义:

Q:所有可能的隐藏状态集合

                                 Q=(q_{1} ,q_{2} ,...,q_{N} )

V: 所有可能的观测状态的集合

                               V= ( v_{1} ,v_{2} ,...,v_{M} )

N是可能的隐藏状态数,M是所有的可能的观察状态数,对于从盒子中取出小球来说,N是盒子的个数,M是小球的颜色种类数目

A :状态转移矩阵:实际上每个状态指的是每个时刻,也就是从哪个盒子,因为每个时刻对应           取一个盒子

                                A=[a_{ij} ]N*N      

                                a_{ij}=P(q_{t+1}=j| q_{t}=i)

B:观测状态矩阵:B是输出符号的概率分布,b_{j}(K)  表示在状态 j 时输出状态为 v_{K} 的概率

                                b_{j}(K)=P(v_{K}|j)

\Pi 初始时刻状态分布:表示时刻 1 选择某个状态的概率,比如初始时刻从第一个盒子拿球的概率 p1,从第二个盒子拿球的概率 p2, 从第三个盒子拿球的概率 p3;

                                            \pi (i)=P(q_{1}=i )

一个HMM模型,由初始隐藏状态分布 \Pi  ,状态转移矩阵 A,观测状态矩阵 B 决定

三个概率矩阵:

1. 状态转移概率矩阵

2. 发射概率矩阵(观测状态矩阵)

3. 初始状态分布

两个序列:

1. 观察序列

2. 状态序列

3. 马尔可夫模型在应用过程中有 3 个基本问题

1. 概率计算问题。给定模型 λ=(A,B,π) 和观测序列 O={o1,o2,⋯,oT},计算在模型 λ 下观测序列 O 出现的概率 P(O|λ)。

2. 学习问题。已知观测序列 O={o1,o2,⋯,oT},估计模型 λ=(A,B,π) 参数,使得在该模型下观测序列概率 P(X|λ) 最大。即用极大似然估计的方法估计参数。

3. 预测问题,也称为解码(decoding)问题。已知模型 λ=(A,B,π) 和观测序列 O={o1,o2,⋯,oT},求对给定观测序列条件概率 P(I|O) 最大的状态序列 I={i1,i2,⋯,iT}。即给定观测序列,求最有可能的对应的状态序列。这个问题的求解需要用到基于动态规划的维特比算法。

4. 盒子与球的实例

假设有3个盒子,每个盒子里都有红色和白色两种球,这三个盒子里球的数量分别是:

所以观测状态矩阵 B:

N*M 3*2

开始的时候,从第一个盒子抽球的概率是0.2,从第二个盒子抽球的概率是0.4,从第三个盒子抽球的概率是0.4。以这个概率抽一次球后,将球放回。然后从当前盒子转移到下一个盒子进行抽球。

所以初始状态分布:   \Pi =(0.2,0.4,0.4)T

规则是:如果当前抽球的盒子是第一个盒子,则以0.5的概率仍然留在第一个盒子继续抽球,以0.2的概率去第二个盒子抽球,以0.3的概率去第三个盒子抽球。如果当前抽球的盒子是第二个盒子,则以0.5的概率仍然留在第二个盒子继续抽球,以0.3的概率去第一个盒子抽球,以0.2的概率去第三个盒子抽球。如果当前抽球的盒子是第三个盒子,则以0.5的概率仍然留在第三个盒子继续抽球,以0.2的概率去第一个盒子抽球,以0.3的概率去第二个盒子抽球。如此下去,直到重复三次,得到一个球的颜色的观测序列: O={红,白,红}

所以状态转移矩阵A: 

N*N

那么现在的问题就是已知观测序列为:O={红,白,红}  求得到这个观测序列的概率值

5. 前向算法:

当然第一反应可以暴力求解,但是时间复杂度太高,所以有前向后向算法,

前向算法本质上属于动态规划的算法,也就是我们要通过找到局部状态递推的公式,这样一步步的从子问题的最优解拓展到整个问题的最优解。

在前向算法中,通过定义“前向概率”来定义动态规划的这个局部状态。

前向概率 \alpha _{t}(i)

给定模型\lambda ,时刻 t,处在状态i(哪个盒子),且部分观察序列为o_{1} ,o_{2} ....o_{t}  的概率

定义时刻 t 时候隐藏状态 q_{i} ,观测序列为o_{1} ,o_{2} ....o_{t} ,的概率

若 \alpha _{t}(i) 已知,(1\leq i\leq N))

 \alpha _{t+1}(i) =[\sum_{i=1}^N \alpha _{t}(i)\alpha _{ij} ]b_{j} O_{t+1} (迭代计算)

6. 维特比算法

                    \delta _{t}(i)=maxP(q_{1}q_{2}...q_{t-1}q_{t} =i,o_{1},o_{2}...o_{t} |\lambda )

\delta _{t}(i)的含义是,给定模型\lambda ,在时刻t处于状态i,观察到O_{1} ,O_{2} ,...,O_{t} 的最佳状态转换序列为q_{1} ,q_{2} ,...,q_{t} 的概率

                  \delta _{1}(i) =\pi _{i} b_{i} (o_{1} ),1\leq i\leq N

若 \delta _{t}(i) 已知,如何计算:\delta _{t+1}(i)

1)计算实例:

代码实现:

参考:

隐马尔可夫模型HMM - 知乎 (zhihu.com)

李航《统计机器学习》

相关文章

  • 隐马尔科夫模型HMM

    直接上链接吧 1.聊聊隐马尔科夫模型(HMM) 2.一文搞懂HMM 3.HMM-python实例

  • HMM学习

    原址:http://www.shokhirev.com/nikolai/abc/alg/hmm/hmm.html慢...

  • HMM基础

    一、HMM建模 HMM参数: 二、HMM的3个假设 (一)马尔科夫假设 (二)观测独立性假设 (三)不变性假设 转...

  • 03-隐马可夫模型(HMM)二

    1、HMM问题一:求观测序列问题(直接计算) 首先我们回顾下HMM模型的问题一。这个问题是这样的。我们已知HMM模...

  • Transformer面试基础:

    HMM 和 CRF 区别: 1.HMM是生成模型,CRF是判别模型 2.HMM是概率有向图,CRF是概率无向图 3...

  • HMM

    结巴分词: TreeDAGroute概率hmm 收到一篇文章,我要对其切词,大概思路 step1:去杂质(火星文什...

  • HMM

    隐马尔可夫模型(Hidden Markov Model,HMM)是结构最简单的动态贝叶斯网(dynamic Bay...

  • HMM

    基本概念 定义 Hidden Markov Model: “隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马...

  • HMM

    If X_3 is known, then the distribution of E_3 is fixed! A...

  • HMM

    1.什么样的问题需要HMM模型 使用HMM模型时的问题一般有这两个特征: 1)问题是基于序列的,比如时间序列,或者...

网友评论

    本文标题:HMM

    本文链接:https://www.haomeiwen.com/subject/sbqyrltx.html