隐马尔可夫模型深入理解——转载

蹲街弑〆低调 提交于 2020-01-31 10:28:58

隐马尔可夫模型(Hidden Markov model, HMM)是一种结构最简单的动态贝叶斯网的生成模型,它也是一种著名的有向图模型。它是典型的自然语言中处理标注问题的统计机器学模型,本文将重点介绍这种经典的机器学习模型。
转载链接:

https://mp.weixin.qq.com/s?src=11&timestamp=1580378766&ver=2128&signature=id557IJtuCw7XYAqKzyjaqPMD2B88eVFQXaFhx2lZw3QnWFBNQjXJF8fcOVsomhyf5qL81QZO0SbN8mwLWNn2sayM-0rs8uj7Q64aI7RtpULWd1L-je4qHKpiS55&new=1

摇骰子问题” —— 经典

1. 引言

假设有三个不同的骰子(6面、4面、8面),每次先从三个骰子里面选择一个,每个骰子选中的概率为1/3,如下图所示,重复上述过程,得到一串数值[1,6,3,5,2,7]。这些可观测变量组成可观测状态链。同时,在隐马尔可夫模型中还有一条由隐变量组成的隐含状态链,在本例中即骰子的序列。比如得到这串数字骰子的序列可能为[D6, D8, D8, D6, D4, D8]。在这里插入图片描述
隐马尔可夫型示意图如下所示:在这里插入图片描述
图中,箭头表示变量之间的依赖关系。图中各箭头的说明如下:在这里插入图片描述
在任意时刻,观测变量(骰子)仅依赖于状态变量(哪类骰子),同时t时刻的状态 qt 仅依赖 于t-1 时刻的状态 qt-1。这就是马尔科夫链,即系统的下一时刻仅由当前状态(无记忆),即“齐次马尔可夫性假设

2. 隐马尔可夫模型的定义

根据上面的例子,这里给出隐马尔可夫的定义。隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程

即有一个不可见的,比如隐藏序列,比如这里每次选中的骰子,还有一个有隐藏序列所产生的观测序列,比如每次选中骰子的那个面。隐藏序列的链是有序的,每个位置可以看做一个时刻。

隐藏的马尔可夫链随机生成的状态序列,称为状态序列(也就上面例子中的D6,D8等);每个状态生成一个观测,而由此产生的观测随机序列,称为观测序列(也就上面例子中的1,6等)。序列的每个位置又可以看作是一个时刻。

隐马尔可夫模型由初始的概率分布、状态转移概率分布以及观测概率分布确定。具体的形式如下,这里设Q是所有可能的状态的集合,V是所有可能的观测的集合,即有:在这里插入图片描述
其中, N是可能的状态数(长门), M是可能观测的数(弥彦 )。两人一个在暗一个在明。另外设I是长度为T的状态序列,O是对应的观测序列:在这里插入图片描述
在马尔可夫链中,有几个矩阵变量,分别是
状态转移概率矩阵
A(状态转移到下一个状态的概率),观测概率矩阵B(状态产生观测的概率),以及初始状态概率向量C(最开始是什么状态的概率),其中状态转移概率矩阵A为:在这里插入图片描述
其中,
在这里插入图片描述
是在时刻 t 处于状态 qi 的条件下在时刻 t+1 转移到状态 qj 的概率。
观测概率矩阵为:在这里插入图片描述

其中,
在这里插入图片描述
是在时刻 t 处于状态 qj 的条件下生成观测 vk 的概率。

初始状态概率向量为:在这里插入图片描述
Ci为时刻t=1处于状态qi的概率。

主要构成

就像 bigmom 的家庭成员一样。

隐马尔可夫模型由

  • 初始状态概率向量C
  • 状态转移概率矩阵A
  • 观测概率矩阵B

决定,C和A决定状态序列,B决定观测序列,因此隐马尔可夫模型可以用三元符号表示为:

在这里插入图片描述

A、B和C也被称为隐马尔科夫模型的三要素。

状态转移概率矩阵A与初始状态概率向量C确定了隐藏的马尔可夫链,生成不可观测的状态序列,观测概率矩阵B确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。

从定义中,可以发现隐马尔可夫模型作了两个基本假设:

  • (1) 齐次马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其它时刻的状态及观测无关,也与时刻t无关,
    在这里插入图片描述
  • (2) 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关。在这里插入图片描述
    隐马尔可夫模型可以用于标注,这时状态对应着标记标注问题是给定观测的序列预测其对应的标记序列。可以假设标注问题的数据是由隐马尔可夫模型生成的,这样可以利用该模型的学习与预测算法进行标注。

隐马尔科夫模型的三个基本问题:

  • (1) 概率计算问题:给定模型lamda=(A,B,C 观测序列O=(o1,o2,…,oT),计算在该模型下观测序列O出现的概率P(O|lamda)。
  • (2) 学习问题:已知观测序列O=(o1,o2,…,oT),估计模型lamda=(A,B,C)参数,使得在该模型下观测序列概率P(O|lamda)最大,即用极大似然估计的方法估计参数。
  • (3) 预测问题,也称为解码的问题,已知模型lamda=(A,B,C)和观测序列O=(o1,o2,…,oT),求对给定观测序列条件概率P(I|O)最大的状态序列
    I = (i1,i2,…,iT),即给定观测序列,求最有可能的对应的状态序列。

了解

知乎链接:https://www.zhihu.com/question/20962240/answer/33438846

其实对于HMM来说,如果提前知道所有隐含状态之间的转换概率和所有隐含状态到所有可见状态之间的输出概率,做模拟是相当容易的。但是应用HMM模型时候呢,往往是缺失了一部分信息的,有时候你知道骰子有几种,每种骰子是什么,但是不知道掷出来的骰子序列;有时候你只是看到了很多次掷骰子的结果,剩下的什么都不知道。如果应用算法去估计这些缺失的信息,就成了一个很重要的问题。

和HMM模型相关的算法主要分为三类,分别解决三种问题:

  • (1)知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子掷出的结果(可见状态链),我想知道每次掷出来的都是哪种骰子(隐含状态链)。

已知:隐含状态数量、转换概率、可见状态链
求解:可见状态链对应的隐含状态链
(1)给定一个模型和某个特定的输出序列,如何找到最可能产生这个输出的状态序列

这个问题呢,在语音识别领域呢,叫做解码问题。这个问题其实有两种解法,会给出两个不同的答案。每个答案都对,只不过这些答案的意义不一样。第一种解法求最大似然状态路径,说通俗点呢,就是我求一串骰子序列,这串骰子序列产生观测结果的概率最大。第二种解法呢,就不是求一组骰子序列了,而是求每次掷出的骰子分别是某种骰子的概率。

  • (2)还是知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子掷出的结果(可见状态链),我想知道掷出这个结果的概率。

已知:隐含状态数量、转换概率、可见状态链
求解:掷出结果的概率。
(2)给定一个模型(HMM),如何计算某个特定的输出序列的概率

问这个问题的目的呢,其实是**检测观察到的结果和已知的模型是否吻合。**如果很多次结果都对应了比较小的概率,那么就说明我们已知的模型很有可能是错的,有人偷偷把我们的骰子給换了。

  • (3)知道骰子有几种(隐含状态数量),不知道每种骰子是什么(转换概率),观测到很多次掷骰子的结果(可见状态链),我想反推出每种骰子是什么(转换概率)。

已知:隐含状态数量、可见状态链
求解:转换概率
(3)给定足够量的观测数据,如何计算隐含马尔可夫模型的参数

这个问题很重要,因为这是最常见的情况。很多时候我们只有可见结果,不知道HMM模型里的参数,我们需要从可见结果估计出这些参数,这是建模的一个必要步骤。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!