隐马尔科夫模型(HMM)

    • 基本概念

      • 1Markov Models
      • 2Hidden Markov Models
      • 3概率计算算法前向后向算法
        • 1-3-1直接计算
        • 1-3-2前向算法
        • 1-3-3后向算法
      • 4学习问题Baum-Welch算法也就是EM算法
      • 5预测算法

基本概念

1.1Markov Models

  处理顺序数据的最简单的方式是忽略顺序的性质,将观测看做独立同分布,然而这样无法利用观测之间的相关性。例如:预测下明天是否会下雨,所有数据看成独立同分布只能得到雨天的相对频率,而实际中,我们知道天气会呈现持续若干天的趋势,观测今天是否下雨对预测明天是否下雨有很大帮助。引入马尔科夫模型(Markov Models)。

1)假设只与最近的一次观测有关,而独立于其他所有之前的观测,那么我们就得到了 一阶马尔科夫链(first-order Markov chain):

    

观测-xn的一阶马尔科夫链,其中,特定的观测xn的条件概率分布p(xn|xn?1)只以前一次观测xn?1为条件。

2)允许预测除了与当前观测有关以外,还与当前观测的前一次观测有关,那么我们就得到了二阶马尔科夫链:

    

二阶马尔科夫链,其中特定的观测-xn依赖于前两次观测-xn?1和-xn?2的值

3)一阶马尔科夫链中的条件概率分布p(xn|xn?1)由K -1个参数指定,每个参数都对应于xn?1的K个状态,因此参数的总数为K(K -1)。

M阶,则有参数个数km(k?1)(M指数增长!!)

如何构造任意阶数的不受马尔科夫假设限制的序列模型,同时能够使用较少数量的参数确定??

对于每个观测xn,我们引入一个对应的潜在变量zn(类型或维度可能与观测变量不同)。假设潜在变量构成了马尔科夫链,得到的图结构被称为状态空间模型(state space model):

    

隐马尔科夫模型可以被看成上图所示的状态空间模型的一个具体实例,其中潜在变量是离散的。

1.2Hidden Markov Models

定义:

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

  • 状态序列:隐藏的马尔可夫链随机生成的状态序列,称为状态序列(state sequence);
  • 观测序列:每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequence)。
  • 时刻:序列的每一个位置又看作是一个时刻。

Q:所有可能的状态的集合Q={q1,q2,...q,N};N是可能的状态数

V:所有可能的观测的集合V={v1v2,...,vn};M是可能的观测数

I:长度为T的状态序列I=(i1,...,iT)

O:对应的观测序列O=(o1,oT)

A:状态转移概率矩阵A=[aij]NXN;其中aij=p(it+1=qj|it=qi),i=1,2,…,N;j=1,2,…N;

在时刻t处于状态qi的条件下在时刻t+1转移到状态qj的概率。

B:观测概率矩阵B=[bj(k)]NXN ;其中bj(k)=p(ot=vk|it=qj),k=1,2,…M; j=1,2,…N;

是在时刻t处于状态qj的条件下生产观测vk的概率

π:初始状态概率向量π=(πi),其中,πi=p(i1=qi) ,i=1,2,…N

是时刻t=1处于状态qi的概率。

  隐马尔可夫模型由初始状态概率向量π、状态转移概率矩阵A和观测概率矩阵B决定,λ=(A,B,π)

  下图是一个三个状态的隐马尔可夫模型状态转移图,其中x 表示隐含状态,y 表示可观察的输出,a 表示状态转换概率,b 表示输出概率。

    

  下图显示了天气的例子中隐藏的状态和可以观察到的状态之间的关系。我们假设隐藏的状态是一个简单的一阶马尔科夫过程,并且他们两两之间都可以相互转换。

    

状态转移矩阵来表示,其表示形式如下:

    

对该矩阵有如下约束条件:

    

隐马尔可夫模型有3个基本问题:

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

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

(3)预测问题,也称为解码(decoding)问题.己知模型λ=(A,B,π)和观测序列O=(o1,oT),求对给定观测序列条件概率P(O|λ)最大的状态序列I=(i1,...,iT),即给定观测序列,求最有可能的对应的状态序列。 维特比算法(Viterbi)

下面将逐一介绍这些基本问题的解法.

1.3概率计算算法(前向后向算法!!)

1-3-1直接计算

给定模型λ=(A,B,π)和观测序列O=(o1,oT),计算观测序列0出现的概率P(O|λ)。最直接的方法是按概率公式直接计算。通过列举所有可能的长度为T的状态序列I=(i1,...,iT),求各个状态序列I与观测序列O=(o1,oT)的联合概率P(O,I|λ),然后对所有可能的状态序列求和,得到P(O|λ)。

状态序列I=(i1,...,iT)的概率是

P(I│λ)=πi1ai1i2ai2i3...aiT?1iT

对固定的状态序列I=(i1,...,iT),观测序列O=(o1,oT)的概率是

P(O,I|λ),P(O│I,λ)=bi1(o1)bi2(o2)...biT(oT)

O和I同时出现的联合概率为

P(O,I│λ)=P(O│I,λ)P(I│λ)=πi1bi1(o1)ai1i2bi2(o2)...aiT?1iTbiT(oT)

然后,对所有可能的状态序列I求和,得到观测序列O的概率P(O|λ),即

P(O│λ)=∑Ip(o|I,λ)p(I|λ)=∑i1i2...iTπi1bi1(o1)ai1i2bi2(o2)...aiT?1iTbiT(oT)

但是,利用上述公式计算量很大,是O(TNT)阶的,这种算法不可行。

下面介绍计算观测序列概率P(O|λ)的有效算法:前向一后向算法(forward-backward algorithm)

1-3-2前向算法

  首先定义前向概率.

   定义(前向概率):给定隐马尔可夫模型λ,定义到时刻t部分观侧序列为o1,…,ot且状态为qi的概率为前向概率,记作

at(i)=p(o1,...ot,t=qi|λ)

可以递推地求得前向概率at(i) 及观测序列概率P(O|λ)

算法:(观测序列概率的前向算法)

输入:隐马尔可夫模型λ,观测序列O

输出:观测序列概率P(O|λ)

(1)初始化前向概率,a1(i)=πibi(o1),i=1,…,N

(2)递推,对t=1,…T-1,

(3)终止,

(1)是初始时刻的状态i1=qi和观测o1的联合概率

(2)计算到时刻t+1部分观测序列为o1,…ot,ot+1且在时刻t+1处于状态qi的前向概率。

公式方括弧里,既然at(j)是到时刻t观测到o1,…ot并在时刻t处于状态qj的前向概率,那么乘积at(j)aji 就是到时刻t观测到o1,…ot并在时刻t处于状态qj,而在时刻t+1到达状态qi的联合概率.

对这个乘积在时刻t的所有可能的N个状态qj求和,其结果就是到时刻t观测为o1,…ot并在时刻t+I处于状态qi的联合概率.

方括弧里的值与观测概率bi(ot+1)的乘积恰好是到时刻t+1观测到o1,...,ot,ot+1并在时刻t+1处于状态qi的前向概率at+1(i).

步骤(3)给出P(O|λ)的计算公式.因为

所以

1-3-3后向算法

  定义 (后向概率):给定隐马尔可夫模型λ,定义在时刻t状态为qi的条件下,从t+1到T的部分观测序列为oi+1,oi+2,...,oT的概率为后向概率,记作

        

  用递推的方法求得后向概率βt(i)及观测序列概率P(O|λ).

算法:(观测序列概率的后向算法)

输入:隐马尔可夫模型λ,观测序列O

输出:观测序列概率P(O|λ)

(1)βT(i)=1 i=1,2,….,N

(2)对t=T-1,T-2,…,1

  

(3)

  利用前向概率和后向概率的定义可以将观测序列概率P(O|λ)统一写成:

    

1.4学习问题[Baum-Welch算法(也就是EM算法)]

  给定输出序列O=O1O2…..OT,学习模型参数λ=(A,B,π),其中状态序列数据是不可观测的隐数据I,隐马尔可夫模型变成一个含有隐变量的概率模型。参数学习可由EM算法实现。

  给定模型λ和观测O,在时刻t处于状态qi 且在时刻t+1处于状态qj的概率,记

    

  给定模型λ和观测O,在t时刻处于状态qi 的概率,记

    

算法:(Baum-Welch算法)

输入:观测数据O=(q1,...oT);

输出:隐马尔可夫模型参数

(1)初始化,随机选定参数a(0)ij,bj(k)(0),π(0)i , 得到模型λ(0)=(A(0),B(0),π(0))

(2)EM计算:

E步骤:根据式1和式2计算期望ξt(ij)和γt(i)

M步骤:根据期望ξt(ij)和γt(i),带入下来各式中重新得到πi,aij,bj(k),得到新的模型λ(n)

(3)循环计算:n=n+1,直到πi,aij,bj(k)收敛。

1.5预测算法

维特比算法(Viterbi algorithm)

  维特比算法实际是用动态规划解隐马尔可夫模型预侧问题,即用动态规划(dynamic programming)求概率最大路径(最优路径).这时一条路径对应着一个状态序列.

  给定观测序列O=O1O2…OT,和模型λ=(A,B,π),找出“最优”的状态序列q1q2…qT,使得该状态最好地解释观测序列。

    

  从时刻t=1开始,递推地计算在时刻t状态为i的各条部分路径的最大概率,直至得到时刻t=T状态为i的各条路径的最大概率.时刻t=T的最大概率即为最优路径的概率p?

最优路径的终结点i?T也同时得到.之后,为了找出最优路径的各个结点,从终结点i?T开始,由后向前逐步求得结点i?T?1,…,i?1.得到最优路径I?=i?1,...,i?T)这就是维特比算法.

  首先导入两个变量δ和ψ.定义在时刻t状态为i的所有单个路径i1,...it 中概率最大值为

  由定义可得变量δ的递推公式:

    

定义在时刻t状态为i的所有单个路径 中概率最大的路径的第t-1个(前一个状态)结点为

    

    

  上图中,对于从t时刻三个到 t+1时刻的状态1,到底取状态1,2还是3,不是看单独状态1,2还是3的概率,而是看在状态1,2,3各自的维特比变量值乘以相应的状态转换概率,从中选出最大值,假设2时最大,那么记下t+1时刻状态1之前的路径是t时刻的状态2,以此类推。

  Viterbi算法(Viterbi algorithm)的一个广泛应用是自然语言处理中的词性标注。在词性标注中,句子中的单词是观察状态,词性(语法类别)是隐藏状态(注意对于许多单 词,如wind,fish拥有不止一个词性)。对于每句话中的单词,通过搜索其最可能的隐藏状态,我们就可以在给定的上下文中找到每个单词最可能的词性标 注。

总结:

  隐马尔科夫的适用场景,用来解决什么问题?

  存在很多例子,在这些例子中进程的状态(模式)是不能够被直接观察的,但是可以非直接地,或者概率地被观察为模式的另外一种集合——这样我们就可以定义一类隐马尔科夫模型——这些模型已被证明在当前许多研究领域,尤其是语音识别领域具有非常大的价值。

  一个语音识别系统检测的声音(可以观察的状态)是人体内部各种物理变化(隐藏的状态、引申一个人真正想表达的意思)产生的。

解决三种问题:

  • 评估:给定的隐马尔科夫模型生成一个给定的观察序列的概率是多少。
  • 学习:一个给定的观察序列样本,什么样的模型最可能生成该序列——也就是说,该模型的参数是什么。
  • 解码:什么样的隐藏(底层)状态序列最有可能生成一个给定的观察序列。

缺点:

  过于简化的假设,即一个状态只依赖于前一个状态,并且这种依赖关系是独立于时间之外的(与时间无关)

时间: 2024-10-01 20:13:11

隐马尔科夫模型(HMM)的相关文章

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

隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 在本篇我们会讨论HMM模型参数求解的问题,这个问题在HMM三个问题里算是最复杂的.在研究这个问题之前,建议先阅读这个系列的前两篇以熟悉HMM模型和HMM的前向后向算法,以及EM算法原理总结,这些在本篇里会用到.在李航的<统计学习方法>中,这个算法的讲解只考虑了单个观测

七月算法-12月机器学习在线班--第十七次课笔记-隐马尔科夫模型HMM

七月算法-12月机器学习--第十七次课笔记-隐马尔科夫模型HMM 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 隐马尔科夫模型 三个部分:概率计算,参数估计,模型预测 1,HMM定义 HMM由初始概率分布π.状态转移概率分布A以及观测概率分布B确定. Eg:以中文分词为例子 隐状态为="2",是不是终止字,是/否?(Y/N)即是不是最后一个字. A矩阵:第一个:当前是终止字,下一个也是终止字的概率 B是当前的隐状态是终止词,

隐马尔科夫模型HMM

隐马尔科夫模型HMM 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十七次课在线笔记.隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程.其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步的分析.在早些年HMM模型被非常广泛的应用,而现在随着机器学习的发展HMM模型的应用场景越来越小然而在图像识别等领域HMM依然起着重要的作用. 引言: 隐马尔科夫模型是马尔科夫链的一种,它

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

隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 在隐马尔科夫模型HMM(一)HMM模型中,我们讲到了HMM模型的基础知识和HMM的三个基本问题,本篇我们就关注于HMM第一个基本问题的解决方法,即已知模型和观测序列,求观测序列出现的概率. 1. 回顾HMM问题一:求观测序列的概率 首先我们回顾下HMM模型的问题一.这个

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

隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率(TODO) 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.当然,随着目前深度学习的崛起,尤其是RNN,LSTM等神经网络序列模型的火热,HMM的地位有所下

隐马尔科夫模型 HMM(Hidden Markov Model)

本科阶段学了三四遍的HMM,机器学习课,自然语言处理课,中文信息处理课:如今学研究生的自然语言处理,又碰见了这个老熟人: 虽多次碰到,但总觉得一知半解,对其了解不够全面,借着这次的机会,我想要直接搞定这个大名鼎鼎的模型,也省着之后遇到再费心. Outline 模型引入与背景介绍 从概率图讲起 贝叶斯网络.马尔科夫模型.马尔科夫过程.马尔科夫网络.条件随机场 HMM的形式化表示 Markov Model的形式化表示 HMM的形式化表示 HMM的两个基本假设 HMM的三个基本问题 Evalution

【ML-13-1】隐马尔科夫模型HMM

[ML-13-1]隐马尔科夫模型HMM [ML-13-2]隐马尔科夫模型HMM--前向后向算法 [ML-13-3]隐马尔科夫模型HMM--Baum-Welch(鲍姆-韦尔奇) [ML-13-4]隐马尔科夫模型HMM--预测问题Viterbi(维特比)算法 目录 基础知识-马尔可夫链 HMM简介 HMM定义 HMM模型的三个基本问题 举例 一.基础知识-马尔可夫链 1.1 马尔可夫性质 设{X(t), t ∈ T}是一个随机过程,E为其状态空间,若对于任意的t1<t2< ...<tn<

通俗理解隐马尔科夫模型HMM(转载)

作者:Yang Eninala 链接:https://www.zhihu.com/question/20962240/answer/33438846 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 隐马尔可夫(HMM)好讲,简单易懂不好讲.我认为 @者也的回答没什么错误,不过我想说个更通俗易懂的例子.我希望我的读者不是专家,而是对这个问题感兴趣的入门者,所以我会多阐述数学思想,少写公式.霍金曾经说过,你多写一个公式,就会少一半的读者.所以时间简史这本关于物理的书和麦当娜关于性的书卖的一样

HMM隐马尔科夫模型

马尔科夫过程 在概率论及统计学中,马尔可夫过程(英语:Markov process)是一个具备了马尔可夫性质的随机过程,因为俄国数学家安德雷·马尔可夫得名.马尔可夫过程是不具备记忆特质的(memorylessness).换言之,马尔可夫过程的条件概率仅仅与系统的当前状态相关,而与它的过去历史或未来状态,都是独立.不相关的. 一个马尔科夫过程是状态间的转移仅依赖于前n个状态的过程.这个过程被称之为n阶马尔科夫模型,其中n是影响下一个状态选择的(前)n个状态.最简单的马尔科夫过程是一阶模型,它的状态