HMM:隐马尔可夫模型 - 表示

19 篇文章 5 订阅
10 篇文章 1 订阅

http://blog.csdn.net/pipisorry/article/details/50722178

隐马尔可夫模型 Hidden Markov Models

       隐马尔可夫模型(Hidden Markov Models, HMM)描述由一个隐藏的马尔可夫链随机生成的不可观测的状态序列,再由各个状态生成一个观测而产生观测随机序列的过程,属于生成模型。HMM(隐马尔可夫模型)是结构最简单的动态贝叶斯网,是一种著名的有向(无环)图模型,主要用于时序数据建模(语音识别、自然语言处理等)。

       隐马尔科夫模型可以被看成状态空间模型[顺序数据:状态空间模型]的一个具体实例,其中潜在变量是离散的。如果我们考察模型的一个单一的时间切片,那么我们看到它对应于一个混合概率分布,对应的分量密度为 p(x | z) 。于是,它也可以表述为混合概率模型的一个推广,其中每个观测的混合系数不是独立地选择的,而是依赖于对于前一次观测的分量(隐含状态)的选择。

       在正常的马尔可夫模型中,状态对于观察者来说是直接可见的。这样状态的转换概率便是全部的参数[马尔科夫模型]。而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的某些变量是可见的。每一个状态在可能输出的符号上都有一概率分布,因此输出符号的序列能够透露出状态序列的一些信息。其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步的分析。

HMM的概率图表示

       与马尔科夫相比,隐马尔科夫模型则是双重随机过程,不仅状态转移之间是个随机事件,状态和输出之间也是一个随机过程,如下图所示:

       该图分为上下两行,上面那行就是一个马尔科夫转移过程,下面这一行则是输出,即我们可以观察到的值,现在,我们将上面那行的马尔科夫转移过程中的状态称为隐藏状态(如词性、天气),下面的观察到的值称为观察状态(词、水藻湿润情况),观察状态的集合表示为 O={X1,X2,X3,…XN}。

Note: 每个状态z_i都是一个向量分布,即在N个状态集合 {k1,k2,k3,...k_K}上的概率分布,二值化后潜在变量是 K 维二值变量。

        HMM和其它模型区别:[条件随机场CRF - 表示:CRF与其它模型的比较][顺序数据:状态空间模型]

HMM输出独立性假设

齐次马尔科夫性:

       即只考虑一阶马尔科夫模型。其实还有一个同质( homogeneous )性质,即状态转移矩阵在所有时间步是一样的。[马尔科夫模型]

观测独立性假设:

       相应的,隐马尔科夫也比马尔科夫多了一个假设,即输出仅与当前状态有关,可以用如下公式表示:

              P(O1,O2,…,Ot|S1,S2,…,St)=P(O1|S1)*P(O2|S2)*...*P(Ot|St)

其中,O1,O2,…,Ot为从时刻1到时刻t的观测状态序列,S1,S2,…,St则为隐藏状态序列。

HMM的形式定义

HMM三要素

       隐马尔可夫模型是由初始状态项链π、状态转移概率矩阵A和观测概率矩阵φ(状态>观测变量的条件概率,亦称发射概率emission probability)决定。π和A决定状态序列,φ决定观测序列。因此A、B和φ就是隐马尔可夫模型的三要素,而θ = {π, A, φ} 表示控制隐马尔可夫模型参数的集合。状态转移概率矩阵A与初始状态概率向量π确定了隐藏的马尔科夫链,生成不可观测的状态序列;观测概率矩阵φ确定了如何从状态生成观测,与状态序列综合确定了如何产生概率序列。说白了,hmm就是考虑了观测概率,同时也考虑了状态之间的关系(即状态转移概率),相当于混合概率模型中考虑了混合系数间的关联。

Note: 由于潜在变量是 K 维二值变量,因此条件概率分布对应于数字组成的表格,记作 A ,它的元素被称为转移概率( transition probabilities)。元素为 A jk ≡  p(z n,k = 1 | z n−1,j = 1)   {z n−1,j = 1表示第n-1个状态向量的第j个位置为1其余位置为0,即表示第n-1个状态是j。}。由于它们是概率值,因此满足 0 ≤ A jk ≤ 1 且 ∑k A jk = 1 ,从而矩阵 A 有 K(K − 1) 个独立的参数。

潜在变量的条件概率

状态间所有转移概率:

Note: lz这里的乘法PI应该是没有太大意义的,只是所有的转移概率的表示。

       同质模型所有控制潜在变量的条件概率分布都共享相同的参数 A ,类似地所有发射概率分布都共享相同的参数 φ (推广到更一般的情形很容易)。即zn-1到zn 和 zn到zn+1的状态转移矩阵是相同的!在状态转移矩阵及发射矩阵中的每一个概率都是时间无关的——也就是说,当系统演化时这些矩阵并不随时间改变。实际上,这是马尔科夫模型关于真实世界最不现实的一个假设。

       但是注意对于一个独立同分布的数据集,一个混合模型对应于参数 A jk 对于所有的 j 值都相同的情况,从而条件概率分布 p(z n | z n−1 ) 与 z n−1 无关。

       初始潜在结点 z 1 很特别,因为它没有父结点,因此它的边缘概率分布 p(z 1 ) 由一个概率向量 π 表示,元素为 π k ≡ p(z 1k = 1) (即在N个状态集合 {k1,k2,k3,...k_K}上的概率分布),即

其中 ∑k π k = 1 。

隐马尔科夫模型的晶格图

       潜在变量之间转移的表示方法,被称为晶格图( lattice diagram )或者格子图( trellis diagram )。

观测变量的条件概率分布:发射概率( emission probabilities )

       发射概率的特定选择:事实上,模型对于一大类发射概率的选择都是可以计算的,包括离散表格、高斯以及混合高斯,也可以利用判别式模型例如神经网络(训练发射概率)。这些可以用来直接对发射概率密度 p(x | z) 建模,也可以用来给出 p(z | x) 的一个表达式,这个表达式可以使用贝叶斯定理转化为所需的发射概率密度 p(x | z) ( Bishop et al.,2004 )。

      组成的矩阵称为混淆矩阵(confusion matrix)。

观测变量和潜在变量上的联合概率分布

其中 X = {x 1 , . . . , x N }, Z = {z 1 , . . . , z N } 和 θ = {π, A, φ} 表示控制模型参数的集合。

       完全和状态空间模型的联合分布一样。

生成式的观点考虑隐马尔科夫模型

       首先我们选择初始的潜在变量 z 1 ,概率由参数 π k 控制,然后采样对应的观测 x 1 。现在我们使用已经初始化的 z 1 的值,根据转移概率 p(z 2 | z 1 ) 来选择变量 z 2 的状态。从而我们以概率 A jk 选择 z 2 的状态 k ,其中 k = 1, . . . , K 。一旦我们知道了 z 2 ,我们就可以对 x 2 采样,从而也可以对下一个潜在变量 z 3 采样,以此类推。

        这是有向图模型的祖先采样的一个例子。

某小皮

隐马尔科夫模型的示例

示例1(盒子和球模型)

        如上图所示,有4个盒子,每个盒子里都装有红白两种颜色的球,每个盒子中球的个数见上图。然后,按照下面的规则抽5次球:

第一次:从4个盒子里等概论随机选取1个盒子,然后从这个盒子里随机抽出1个球,记录其颜色后放回;

剩下4次:若上一次是从盒子1中抽球,那这次一定是盒子2;若上一次是盒子2或3,那这次则分别以0.4和0.6的概率选择左边或右边的盒子;若上一次是盒子4,那这次各以0.5的概率选择是停留在盒子4还是转移到盒子3。确定转译的盒子后,再从这个盒子里随机抽出一个球,记录其颜色后放回。就这样,得到一个球的颜色序列:  {红,红,白,白,红}。

         在这个过程中,观察者只能观测到球颜色的序列,观测不到球是从哪个盒子取出的,即:观测不到盒子的序列。

         1,在这个例子中有两个随机序列:

                   盒子的序列(之后称之为:状态序列)

                   球颜色的观测序列(之后称之为:观测序列)

         2,状态序列的每个状态值仅取决于前面有限个状态(见上面的“抽5次球的规则描述”),这种状态序列就是马尔可夫链。

         3,状态序列是隐藏的,观测序列是可观测的。

         于是乎,像这种由一个隐藏的马尔可夫链随机生成的不可观测的状态序列,再由各个状态生成一个观测而产生观测随机序列的过程,就是隐马尔可夫模型

         由题目知:

         1,盒子对应的状态,即状态集合是: Q= {盒子1,盒子2,盒子3,盒子4}   状态集合表述的是“所有可能的状态的集合”;  状态序列表述的是“实际操作中产生的状态序列”

         2,状态序列因无法观测,所以不可知,但在定义中我们还是给出其表示方法,即:   I= (i1, i2, ..., iT)

         3,球颜色对应的观测,即观测集合是:V= {红,白}

                            观测集合表述的是“所有可能的观测的集合”;观测序列表述的是“实际操作中产生的观测序列”

         4,观测序列是:  O= {红,红,白,白,红}

                   在定义中,观测序列中的各个元素用oT表示,即:O = {o1, o2, ..., oT}

         5,状态序列和观测序列的长度T=5,这个长度的产生是因为一共进行了5次抽样,然后第一次抽样我们称之为时刻1,第二次称之为时刻2,以此类推。

         6,初始概率分布为:π = (0.25,0.25, 0.25, 0.25)

                   在定义中,初始概率分布中的各个元素用πi表示,即:π=(πi),其中π=P(i1 = qi), i = 1, 2, ..., N,表示时刻t=1处于状态qi的概率。

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

                  

                   PS:A = [aij]N*N,其中aij= P(it+1 = qj | it = qi), i = 1, 2,..., N; j = 1, 2, ..., N,表示在时刻t处于状态qi条件下,时刻t+1转译到状态qj的概率。如:a12(第一行第二列) = 1,表示:时刻t选择的盒子1(q1)时,时刻t+1选择盒子2(q2)的概率是1。

         8,观测概率分布矩阵为:

                  

                   PS:B = [bj(k)]N*N,其中,bj(k)= P(ot+1 = vk | it = qj), k = 1, 2,..., M; j = 1, 2, ..., N,表示在时刻t处于状态qj的条件下生成观测vk的概率。如B2(1) = 0.5,表示:时刻t处于状态盒子2(q2)时选择红球(v1)的的概率是0.3。

示例2

       回顾一下马尔科夫过程[马尔科夫模型]天气那个例子,一个隐士也许不能够直接获取到天气的观察情况,但是他有一些水藻。民间传说告诉我们水藻的状态与天气状态有一定的概率关系——天气和水藻的状态是紧密相关的。在这个例子中我们有两组状态,观察的状态(水藻的状态)和隐藏的状态(天气的状态)。我们希望为隐士设计一种算法,在不能够直接观察天气的情况下,通过水藻和马尔科夫假设来预测天气。
       例子中,需要着重指出的是,隐藏状态的数目与观察状态的数目可以是不同的。一个包含三个状态的天气系统(晴天、多云、雨天)中,可以观察到4个等级的海藻湿润情况(干、稍干、潮湿、湿润)。在这种情况下,观察到的状态序列与隐藏过程有一定的概率关系。我们使用隐马尔科夫模型对这样的过程建模,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,以及一个与隐藏状态某种程度相关的可观察到的状态集合。
       下图显示的是天气例子中的隐藏状态和观察状态。假设隐藏状态(实际的天气)由一个简单的一阶马尔科夫过程描述,那么它们之间都相互连接。
  hidden-weather-example
  隐藏状态和观察状态之间的连接表示:在给定的马尔科夫过程中,一个特定的隐藏状态生成特定的观察状态的概率。这很清晰的表示了‘进入’一个观察状态的所有概率之和为1,在上面这个例子中就是Pr(Obs|Sun),Pr(Obs|Cloud) 及 Pr(Obs|Rain)之和。
Note:这里是把obs作为参数来用,就是说Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Sun) = 1;
Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Cloud) = 1;
Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Rain) = 1;
  除了定义了马尔科夫过程的概率关系,我们还有另一个矩阵,定义为混淆矩阵(confusion matrix),它包含了给定一个隐藏状态后得到的观察状态的概率。对于天气例子,混淆矩阵是:
  weather-b-matrix
注意矩阵的每一行之和是1。

皮皮blog

隐马尔科夫模型的变体和拓展

       通过对转移矩阵 A 的形式进行限制的方式进 行 限 制 ( Rabiner, 1989 )

从 左到右 HMM ( left-to-right HMM )

       将 A 中 k < j 的元素 A jk 设置为零。语音识别或在线字符识别都使用了这种从左到右的结构。

       图 13.9: 三状态隐马尔科夫模型的状态转移图的例子。注意,一旦离开了某个状态,就无法再次回到这个状态。

       通 常 对 于 这 种 模 型, 初 始 状 态 概 率 p(z 1 ) 被 修 改, 使得 p(z 11 ) = 1 且 p(z 1j ) = 0, j ̸ = 1 ,换句话说,每个序列被限制为从状态 j = 1 开始。转移矩阵可以进一步被限制,来确保状态的下标不会发生过大的变化,即如果 k > j + ∆ ,那么 A jk = 0 。

       隐马尔科夫模型的一个强大的性质是它对于时间轴上局部的变形(压缩和拉伸)具有某种程度的不变性。但是注意,如果数字“2”用相反的顺序书写,即从右下角开始,结束于左上角,那么即使笔迹的坐标与训练集里的一个例子完全相同,在这个模型下的观测的概率会非常小。

判别式方法

       如果目标是序列分类,那么在确定隐马尔科夫模型的参数时,使用判别式方法而不是最大似然方法会产生很多好处。假设我们有一个训练集,由 R 个观测序列 X r 组成,其中 r = 1, . . . , R ,每个序列根据它的类别 m 进行标记,其中 m = 1, . . . , M 。对于每个类别,我们有一个独立的隐马尔可夫模型,它的参数为 θ m ,我们将确定参数值的问题看成标准的分类问题,其中我们想最优化交叉熵。这种方法需要每个训练序列在每个模型下进行计算。

       隐马尔科夫模型加上判别式的训练方法在语音识别中广泛应用( Kapadia, 1998 )。

对状态持续时间建模

       隐马尔科夫模型的一个很大的缺点是,模型对于时间分布的表示方法不好(系统保持在一个给定的状态下)。

       从一个给定的隐马尔科夫模型中采样到一个序列,这个序列在状态 k 恰好花费了 T 个步骤,然后转移到了一个不同的状态,因此它是 T 的一个指数衰减的函数。对于许多应用,这对于状态持续时间(太长?)来说是一个相当不现实的模型。

       解决:直接对状态持续时间建模,其中对角系数 A kk 全部被设置为零,每个状态 k 显式地与可能的持续时间的概率分布 p(T | k) 相关联。从生成式的观点来看,当系统进入状态 k 时,表示系统保持在状态 k 的时间数 T 会从 p(T | k) 中抽取。

自回归隐马尔科夫模型( autoregressive hidden Markov model )

( Ephraim et al., 1989 )

       标准 HMM 的另一个局限性是它在描述观测变量的长距离相关性(被许多时间步骤分开的变量的相关性)时,效果很差。长距离的效果原则上可以通过在图模型中添加额外链接的方式被包含到模型中。

输入输出隐马尔科夫模型( input-output hidden Markov model )

( Bengio and Frasconi, 1995 )

       有一个观测变量的序列 u 1 , . . . , u N ,以及输出变量的序列 x 1 , . . . , x N ,观测变量的值要么影响潜在变量的分布,要么影响输出变量的分布,或者对两者都产生影响。这将 HMM 的框架推广到了顺序数据的有监督学习领域。

因子隐马尔可夫模型( factorial hidden Markov model )

( Ghahramani and Jordan, 1997 )

       研究因子 HMM 的动机:在一个给定的时刻,为了表示例如10比特的信息,标准的 HMM 需要 K = 2 10 = 1024 个潜在状态,而因子 HMM 可以使用10个二值潜在链。然而,因子 HMM 的主要缺点是训练时的额外的复杂度。因子 HMM 的 M 步骤很容易。然而, x 变量的观测引入了潜在链之间的依赖关系,从而给 E 步骤带来了困难。

等价的标准 HMM的改进

       由一个单独的潜在变量链,每个潜在变量有 K M 个潜在状态。然后我们可以在 E 步骤中运行标准的前向后向递归方法。计算复杂度为 O(N K 2M ) ,它与潜在链的数量 M 是指数的关系,因此除了对于很小的 M 值以外均无法计算。

一个解决方法是使用采样方法。作为另一个优雅的确定性的解决方法, Ghahramani and Jordan ( 1997 )研究了使用变分推断方法来得到近似推断的一个可以计算的算法。

[PRML]

某小皮

隐马尔科夫过程的应用

       HMM一开始是在信息论中应用的,后来才被应用到自然语言处理还有其他图像识别等各个方面。HMM 广泛用于语音识别( Jelinek, 1997; Rabiner and Juang, 1993 )、自然语言建模( Manning and Schütze,1999 )、在线手写识别( Nag et al., 1986 )以及生物序列(例如蛋白质和 DNA )的分析( Kroghet al., 1994; Durbin et al., 1998; Baldi and Brunak, 2001 )。还有汉语分词、词性标注等。

       下面举两个例子说明他的应用,一个是输入法的整句解码,一个是语音识别。有图为证:

       输入法把拼音看做是观察状态,需要得到的汉字为隐藏状态,这样,输入法的整句解码就变成了维特比解码,其转移概率即是二元语言模型,其输出概率即是多音字对应不同拼音的概率。

       将上图中的拼音换成语音,就成了语音识别问题,转移概率仍然是二元语言模型,其输出概率则是语音模型,即语音和汉字的对应模型。

隐马尔可夫模型的其它应用

语音识别中文断词/分词光学字符识别

机器翻译

生物信息学 和 基因组学

基因组序列中蛋白质编码区域的预测

对于相互关联的DNA或蛋白质族的建模

从基本结构中预测第二结构元素

通信中的译码过程

隐马可夫模型在语音处理上的应用

因为马可夫模型有下列特色:

       时间点t的隐藏条件和时间点t-1的隐藏条件有关。因为人类语音拥有前后的关联,可以从语义与发音两点来看:

       单字的发音拥有前后关联:例如"They are"常常发音成"They're",或是"Did you"会因为"you"的发音受"did"的影响,常常发音成"did ju",而且语音辨识中用句子的发音来进行分析,因此需要考虑到每个音节的前后关系,才能够有较高的准确率。

       句子中的单字有前后关系:从英文文法来看,主词后面常常接助动词或是动词,动词后面接的会是受词或介系词。而或是从单一单字的使用方法来看,对应的动词会有固定使用的介系词或对应名词。因此分析语音讯息时需要为了提升每个单字的准确率,也需要分析前后的单字。

       马可夫模型将输入讯息视为一单位一单位,接着进行分析,与人类语音模型的特性相似。语音系统辨识的单位为一个单位时间内的声音。利用梅尔倒频谱等语音处理方法,转换成一个发音单位,为离散型的资讯。而马可夫模型使用的隐藏条件也是一个个被封包的x(t),因此使用马可夫模型来处理声音讯号比较合适。

[隐马尔科夫模型python实现简单拼音输入法]

[wikipedia:隐马尔可夫模型]

from:HMM:隐马尔可夫模型 - 表示-CSDN博客

ref: [PRML]*

[统计学习方法][xueyingxue001的专栏]*

HiddenMarkovModels*

隐马尔科夫模型hmm自学

Lawrence R. Rabiner (February 1989). “A tutorial on Hidden Markov Models and selected applications in speech recognition”

隐马尔科夫模型(Hidden Markov Models)介绍

隐马尔科夫模型(HMM)及其扩展

我爱自然语言处理:隐马尔科夫模型*

隐马尔科夫模型

新书推介:隐半马尔可夫模型(HSMM) - 理论、算法与应用《Hidden Semi-Markov Models, 1st Edition - Theory, Algorithms and Applications》S  Yu (Elsevier 2015)
隐马尔可夫模型的原理及实现 HMM(一)

[通过Python的Networkx和Sklearn来介绍隐性马尔科夫模型]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值