隐马尔科夫模型hmmhmm模型

刘建平Pinard 刘建平Pinard     2022-09-03     147

关键词:

    隐马尔科夫模型HMM(一)HMM模型基础

    隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

    隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

    隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列

    隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。当然,随着目前深度学习的崛起,尤其是RNNLSTM等神经网络序列模型的火热,HMM的地位有所下降。但是作为一个经典的模型,学习HMM的模型和对应算法,对我们解决问题建模的能力提高以及算法思路的拓展还是很好的。本文是HMM系列的第一篇,关注于HMM模型的基础。

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

    首先我们来看看什么样的问题解决可以用HMM模型。使用HMM模型时我们的问题一般有这两个特征:1)我们的问题是基于序列的,比如时间序列,或者状态序列。2)我们的问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。

    有了这两个特征,那么这个问题一般可以用HMM模型来尝试解决。这样的问题在实际生活中是很多的。比如:我现在在打字写博客,我在键盘上敲出来的一系列字符就是观测序列,而我实际想写的一段话就是隐藏序列,输入法的任务就是从敲入的一系列字符尽可能的猜测我要写的一段话,并把最可能的词语放在最前面让我选择,这就可以看做一个HMM模型了。再举一个,我在和你说话,我发出的一串连续的声音就是观测序列,而我实际要表达的一段话就是状态序列,你大脑的任务,就是从这一串连续的声音中判断出我最可能要表达的话的内容。

    从这些例子中,我们可以发现,HMM模型可以无处不在。但是上面的描述还不精确,下面我们用精确的数学符号来表述我们的HMM模型。

2. HMM模型的定义

    对于HMM模型,首先我们假设$Q$是所有可能的隐藏状态的集合,$V$是所有可能的观测状态的集合,即:$$Q = \{q_1,q_2,...,q_N\}, \; V =\{v_1,v_2,...v_M\}$$

    其中,$N$是可能的隐藏状态数,$M$是所有的可能的观察状态数。

    对于一个长度为$T$的序列,$I$对应的状态序列, $O$是对应的观察序列,即:$$I = \{i_1,i_2,...,i_T\}, \; O =\{o_1,o_2,...o_T\}$$

    其中,任意一个隐藏状态$i_t \in Q$,任意一个观察状态$o_t \in V$

    HMM模型做了两个很重要的假设如下:

    1) 齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态,这个我们在MCMC(二)马尔科夫链中有详细讲述。当然这样假设有点极端,因为很多时候我们的某一个隐藏状态不仅仅只依赖于前一个隐藏状态,可能是前两个或者是前三个。但是这样假设的好处就是模型简单,便于求解。如果在时刻$t$的隐藏状态是$i_t= q_i$,在时刻$t+1$的隐藏状态是$i_{t+1} = q_j$, 则从时刻$t$到时刻$t+1$的HMM状态转移概率$a_{ij}$可以表示为:$$a_{ij} = P(i_{t+1} = q_j | i_t= q_i)$$

     这样$a_{ij}$可以组成马尔科夫链的状态转移矩阵$A$:$$A=\Big [a_{ij}\Big ]_{N \times N}$$

    2) 观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态,这也是一个为了简化模型的假设。如果在时刻$t$的隐藏状态是$i_t= q_j$, 而对应的观察状态为$o_t = v_k$, 则该时刻观察状态$v_k$在隐藏状态$q_j$下生成的概率为$b_j(k)$,满足:$$b_j(k) = P(o_t = v_k | i_t= q_j)$$

    这样$b_j(k) $可以组成观测状态生成的概率矩阵$B$:$$B = \Big [b_j(k) \Big ]_{N \times M}$$

    除此之外,我们需要一组在时刻$t=1$的隐藏状态概率分布$\Pi$: $$\Pi = \Big [ \pi(i)\Big ]_N \; 其中 \;\pi(i) = P(i_1 = q_i)$$

    一个HMM模型,可以由隐藏状态初始概率分布$\Pi$, 状态转移概率矩阵$A$和观测状态概率矩阵$B$决定。$\Pi,A$决定状态序列,$B$决定观测序列。因此,HMM模型可以由一个三元组$\lambda$表示如下:$$\lambda = (A, B, \Pi)$$

3.一个HMM模型实例

    下面我们用一个简单的实例来描述上面抽象出的HMM模型。这是一个盒子与球的模型,例子来源于李航的《统计学习方法》。

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

盒子 1 2 3
红球数 5 4 7
白球数 5 6 3

    按照下面的方法从盒子里抽球,开始的时候,从第一个盒子抽球的概率是0.2,从第二个盒子抽球的概率是0.4,从第三个盒子抽球的概率是0.4。以这个概率抽一次球后,将球放回。然后从当前盒子转移到下一个盒子进行抽球。规则是:如果当前抽球的盒子是第一个盒子,则以0.5的概率仍然留在第一个盒子继续抽球,以0.2的概率去第二个盒子抽球,以0.3的概率去第三个盒子抽球。如果当前抽球的盒子是第二个盒子,则以0.5的概率仍然留在第二个盒子继续抽球,以0.3的概率去第一个盒子抽球,以0.2的概率去第三个盒子抽球。如果当前抽球的盒子是第三个盒子,则以0.5的概率仍然留在第三个盒子继续抽球,以0.2的概率去第一个盒子抽球,以0.3的概率去第二个盒子抽球。如此下去,直到重复三次,得到一个球的颜色的观测序列:$$O=\{红,白,红\}$$

     注意在这个过程中,观察者只能看到球的颜色序列,却不能看到球是从哪个盒子里取出的。

    那么按照我们上一节HMM模型的定义,我们的观察集合是:$$V=\{红,白\},M=2$$

    我们的状态集合是:$$Q =\{盒子1,盒子2,盒子3\}, N=3 $$

    而观察序列和状态序列的长度为3.

    初始状态分布为:$$\Pi = (0.2,0.4,0.4)^T$$

    状态转移概率分布矩阵为:

$$A = \left( \begin{array} {ccc} 0.5 & 0.2 & 0.3 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.3 &0.5 \end{array} \right) $$

     观测状态概率矩阵为:

$$B = \left( \begin{array} {ccc} 0.5 & 0.5 \\ 0.4 & 0.6 \\ 0.7 & 0.3 \end{array} \right) $$

4. HMM观测序列的生成

    从上一节的例子,我们也可以抽象出HMM观测序列生成的过程。

    输入的是HMM的模型$\lambda = (A, B, \Pi)$,观测序列的长度$T$

    输出是观测序列$O =\{o_1,o_2,...o_T\}$

    生成的过程如下:

    1)根据初始状态概率分布$\Pi$生成隐藏状态$i_1$

    2) for t from 1 to T

      a. 按照隐藏状态$i_t$的观测状态分布$b_{i_t}(k)$生成观察状态$o_t$

      b. 按照隐藏状态$i_t$的状态转移概率分布$a_{i_t\;\;i_{t+1}}$产生隐藏状态$i_{t+1}$

    所有的$o_t$一起形成观测序列$O =\{o_1,o_2,...o_T\}$

5. HMM模型的三个基本问题

     HMM模型一共有三个经典的问题需要解决:

    1) 评估观察序列概率。即给定模型$\lambda = (A, B, \Pi)$和观测序列$O =\{o_1,o_2,...o_T\}$,计算在模型$\lambda$下观测序列$O$出现的概率$P(O|\lambda)$。这个问题的求解需要用到前向后向算法,我们在这个系列的第二篇会详细讲解。这个问题是HMM模型三个问题中最简单的。

    2)模型参数学习问题。即给定观测序列$O =\{o_1,o_2,...o_T\}$,估计模型$\lambda = (A, B, \Pi)$的参数,使该模型下观测序列的条件概率$P(O|\lambda)$最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法, 我们在这个系列的第三篇会详细讲解。这个问题是HMM模型三个问题中最复杂的。

    3)预测问题,也称为解码问题。即给定模型$\lambda = (A, B, \Pi)$和观测序列$O =\{o_1,o_2,...o_T\}$,求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的维特比算法,我们在这个系列的第四篇会详细讲解。这个问题是HMM模型三个问题中复杂度居中的算法。

(欢迎转载,转载请注明出处。欢迎沟通交流: liujianping-ok@163.com) 

自然语言处理隐马尔可夫模型ⅰ马尔可夫模型

...隐马尔可夫模型【Ⅰ】马尔可夫模型【自然语言处理】隐马尔科夫模型【Ⅱ】隐马尔科夫模型概述【自然语言处理隐马尔科夫模型【Ⅲ】估计问题【自然语言处理】隐马尔科夫模型【Ⅳ】学习问题【自然语言处理】隐马尔科夫模... 查看详情

隐马尔可夫模型

第10章隐马尔可夫模型隐马尔可夫模型(hiddenMarkovmodel,HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。10.1隐马尔可夫模型的基本概念定义10.1(隐马尔可夫模型)隐马尔可夫... 查看详情

隐马尔可夫模型——隐马尔可夫模型的构成(转载)

...程,也成为可视马尔可夫模型(VisibleMarkovModel,VMM)。隐马尔科夫模型(HiddenMarkovModel,HMM)中的状态是不可见的,我们可以看到的是状态表现出来的观察值和状态的概率函数。在隐马模型中,观察值是关于状态的随机过程,而状... 查看详情

隐马尔科夫模型学习笔记

隐马尔科夫模型在股票量化交易中有应用,最早我们找比特币交易模型了解到了这个概念,今天又看了一下《统计学习方法》里的隐马尔科夫模型一章。隐马尔科夫模型从马尔科夫链的概念而来,马尔科夫链是指下一个状态只和... 查看详情

隐马尔科夫模型hmm前向后向算法评估观察序列概率

    隐马尔科夫模型HMM(一)HMM模型    隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率    隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO)    隐马尔科夫模型HMM(四)维特比算法解码... 查看详情

隐马尔科夫模型hmm详解

目录隐马尔科夫模型基本概念隐马尔科夫模型的三个基本问题概率计算预测算法-Viterbi算法HMM学习算法参考下篇文章代码地址:https://gitee.com/liangcd/speech_learning/tree/master/HMM隐马尔科夫模型基本概念先看一个小问题:问题&#x... 查看详情

隐马尔科夫模型hmm鲍姆-韦尔奇算法求解hmm参数

    隐马尔科夫模型HMM(一)HMM模型    隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率    隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO)    隐马尔科夫模型HMM(四)维特比算法解码... 查看详情

隐马尔科夫模型

...感知的概率分布3.先验概率分布即世界是如何开始的四、马尔科夫模型当前时刻的状态只依赖与前一时刻的状态当前时 查看详情

基于隐马尔科夫模型的中文分词方法(代码片段)

本文主要讲述隐马尔科夫模及其在中文分词中的应用。基于中文分词语料库,建立中文分词的隐马尔科夫模型,最后用维特比方法进行求解。一、隐马尔科夫模型介绍隐马尔科夫模型中包括两个序列,其中一个是观测序列,另一... 查看详情

hmm隐马尔科夫模型及matlab实现(代码片段)

隐马尔科夫模型文章目录隐马尔科夫模型前言一、定义二、三个基本问题1、观测序列概率2、模型参数学习3、预测(解码)问题三、三个问题的代码1、观测序列概率2、模型参数学习总结前言隐马尔科夫模型(HMM)... 查看详情

隐马尔可夫(hmm)模型

隐马尔可夫(HMM)模型  隐马尔可夫模型,是一种概率图模型,一种著名的有向图模型,一种判别式模型。主要用于时许数据建模,在语音识别、自然语言处理等领域广泛应用。  概率图模型分为两类,一类:使用有向无环... 查看详情

隐马尔科夫模型hmm详解——python实现

目录学习算法Viterbi学习算法Baum-Welch学习算法python实现代码地址:https://gitee.com/liangcd/speech_learning/tree/master/HMMHMM基本概念、概率计算、预测算法请看上一篇文章,感谢您的阅读!学习算法已知观测序列O=(o1,o2,…,oT),b... 查看详情

隐马尔科夫模型(hmm)

...Xn+1对于过去状态的条件概率分布仅是Xn的一个函数,则在马尔科夫链中,每一个圆圈代表相应时刻的状态,有向边代表了可能的状态转移,权值表示状态转移概率。 这里“隐”指的是马尔科夫链中任意时刻的状态变量是不可... 查看详情

隐马尔可夫模型

   隐马尔可夫模型   隐马尔可夫模型(HiddenMarkovModel,HMM)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域。经过长期发展,尤其是在语音识别中的... 查看详情

《概率统计》12.隐马尔科夫模型:明暗两条线

从马尔科夫链到隐马尔科夫模型在前面几篇的内容里,我们介绍了马尔科夫链,下面我们接着来说说隐马尔科夫模型,它的英文全称是HiddenMarkovModel,也就是我们经常看到的HMM模型。隐马尔科夫模型是一种统计模型,它广泛地应... 查看详情

机器学习九大算法---隐马尔科夫模型

机器学习九大算法---隐马尔科夫模型转自:http://blog.csdn.net/baimafujinji/article/details/51285082 前导性推荐阅读资料:从朴素贝叶斯分类器到贝叶斯网络(上)从朴素贝叶斯分类器到贝叶斯网络(下)引言在之前介绍贝叶斯网络的... 查看详情

隐马尔可夫模型——马尔可夫模型(转载)

...读目录简介数学描述例子应用领域回到顶部简介马尔可夫模型(MarkovModel)描述了一类随机变量随时间而变化的随机函数。考察一个状态序列(此时随机变量为状态值),这些状态并不是相互独立的,每个状态的值依赖于序列中此... 查看详情

机器学习之隐马尔科夫模型hmm

...,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程。其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步的分析。在早些年HMM模型被非常广泛的应用,而现在随着机器学习的发展... 查看详情