隐马尔科夫模型
- 格式:doc
- 大小:529.54 KB
- 文档页数:29
隐马尔可夫模型原理
隐马尔可夫模型(Hidden Markov Model, HMM)是一种用来
描述状态序列的概率模型。
它基于马尔可夫链的理论,假设系统的状态是一个没有直接观察到的随机过程,但可以通过观察到的结果来推断。
HMM的原理可以分为三个关键要素:状态集合、转移概率矩
阵和观测概率矩阵。
1. 状态集合:HMM中的状态是不能直接观测到的,但可以从
观测序列中推断出来。
状态集合可以用S={s1, s2, ..., sn}表示,其中si表示第i个状态。
2. 转移概率矩阵:转移概率矩阵A表示在一个时间步从状态
si转移到状态sj的概率。
可以表示为A={aij},其中aij表示从状态si到状态sj的转移概率。
3. 观测概率矩阵:观测概率矩阵B表示在一个时间步观测到
某个输出的概率。
可以表示为B={bj(o)},其中bj(o)表示在状
态sj下观测到输出o的概率。
通过这些要素,HMM可以用来解决三类问题:
1. 评估问题:给定模型参数和观测序列,计算观测序列出现的概率。
可以使用前向算法或后向算法解决。
2. 解码问题:给定模型参数和观测序列,寻找最可能的状态序
列。
可以使用维特比算法解决。
3. 学习问题:给定观测序列,学习模型的参数。
可以使用Baum-Welch算法进行无监督学习,或使用监督学习进行有标注数据的学习。
总之,HMM是一种可以用来描述随机过程的模型,可以用于许多序列预测和模式识别问题中。
它的简洁性和可解释性使其成为机器学习领域中重要的工具之一。
隐马尔可夫模型的基本用法隐马尔可夫模型(HiddenMarkovModel,HMM)是一种用于描述随机过程的概率模型,它在自然语言处理、语音识别、生物信息学、金融分析等领域得到了广泛应用。
本文将介绍隐马尔可夫模型的基本概念、数学表达、参数估计、解码算法等内容,希望对读者理解和应用该模型有所帮助。
一、隐马尔可夫模型的基本概念隐马尔可夫模型是一个二元组(Q, O, A, B, π),其中:Q = {q1, q2, …, qN}是状态集合,表示模型中可能出现的所有状态;O = {o1, o2, …, oT}是观测集合,表示模型中可能出现的所有观测;A = [aij]是状态转移矩阵,其中aij表示从状态i转移到状态j的概率;B = [bj(k)]是观测概率矩阵,其中bj(k)表示在状态j下观测到k的概率;π = [πi]是初始状态概率向量,其中πi表示模型开始时处于状态i的概率。
隐马尔可夫模型的基本假设是:每个时刻系统处于某一状态,但是我们无法观测到该状态,只能观测到该状态下产生的某个观测。
因此,我们称该状态为隐状态,称观测为可观测状态。
隐马尔可夫模型的任务就是根据观测序列推断出最有可能的隐状态序列。
二、隐马尔可夫模型的数学表达隐马尔可夫模型的数学表达可以用贝叶斯公式表示:P(O|λ) = ∑Q P(O|Q, λ)P(Q|λ)其中,O表示观测序列,Q表示隐状态序列,λ表示模型参数。
P(O|Q, λ)表示在给定隐状态序列Q和模型参数λ的条件下,观测序列O出现的概率;P(Q|λ)表示在给定模型参数λ的条件下,隐状态序列Q出现的概率。
P(O|λ)表示在给定模型参数λ的条件下,观测序列O出现的概率。
根据贝叶斯公式,我们可以得到隐状态序列的后验概率:P(Q|O,λ) = P(O|Q,λ)P(Q|λ)/P(O|λ)其中,P(O|Q,λ)和P(Q|λ)可以通过模型参数计算,P(O|λ)可以通过前向算法或后向算法计算。
机器学习之隐马尔科夫模型(HMM)机器学习之隐马尔科夫模型(HMM)1、隐马尔科夫模型介绍2、隐马尔科夫数学原理3、Python代码实现隐马尔科夫模型4、总结隐马尔可夫模型介绍马尔科夫模型(hidden Markov model,HMM)是关于时序的概率模型,描述由一个隐藏的马尔科夫随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程,属于一个生成模型。
下面我们来从概率学角度定义马尔科夫模型,从一个典型例子开始:假设有4个盒子,每个盒子里面有不同数量的红、白两种颜色的球,具体如下表:盒子编号1234红球数5368白球数5742现在从这些盒子中取出T个球,取样规则为每次选择一个盒子取出一个球,记录其颜色,放回。
在这个过程中,我们只能观测到球的颜色的序列,观测不到球是从哪个盒子中取出来的,即观测不到盒子的序列,这里有两个随机序列,一个是盒子的序列(状态序列),一个是球的颜色的观测序列(观测序列),前者是隐藏的,只有后者是可观测的。
这里就构成了一个马尔科夫的例子。
定义是所有的可能的状态集合,V是所有的可能的观测的集合:其中,N是可能的状态数,M是可能的观测数,例如上例中N=4,M=2。
是长度为T的状态序列,是对应的观测序列:A是状态转移概率矩阵:其中, 是指在时刻处于状态的条件下在时刻转移到状态的概率。
B是观测概率矩阵:其中, 是指在时刻处于状态的条件下生成观测的概率。
是初始状态概率向量:其中, 是指在时刻=1处于状态的概率。
由此可得到,隐马尔可夫模型的三元符号表示,即称为隐马尔可夫模型的三要素。
由定义可知隐马尔可夫模型做了两个基本假设:(1)齐次马尔科夫性假设,即假设隐藏的马尔科夫链在任意时刻的状态只和-1状态有关;(2)观测独立性假设,观测只和当前时刻状态有关;仍以上面的盒子取球为例,假设我们定义盒子和球模型:状态集合: = {盒子1,盒子2,盒子3,盒子4}, N=4观测集合: = {红球,白球} M=2初始化概率分布:状态转移矩阵:观测矩阵:(1)转移概率的估计:假设样本中时刻t处于状态i,时刻t+1转移到状态j 的频数为那么转台转移概率的估计是:(2)观测概率的估计:设样本中状态为j并观测为k的频数是那么状态j观测为k的概率, (3)初始状态概率的估计为S个样本中初始状态为的频率。
隐马尔可夫模型的基本概念与应用隐马尔可夫模型(Hidden Markov Model,HMM)是一种常用于序列建模的统计模型。
它在许多领域中被广泛应用,如语音识别、自然语言处理、生物信息学等。
本文将介绍隐马尔可夫模型的基本概念和应用。
一、基本概念1.1 状态与观测隐马尔可夫模型由状态和观测组成。
状态是模型的内部表示,不能直接观测到;观测是在每个状态下可观测到的结果。
状态和观测可以是离散的或连续的。
1.2 转移概率与发射概率转移概率表示模型从一个状态转移到另一个状态的概率,用矩阵A 表示。
发射概率表示在每个状态下观测到某个观测的概率,用矩阵B 表示。
1.3 初始概率初始概率表示在初始时刻各个状态的概率分布,用向量π表示。
二、应用2.1 语音识别隐马尔可夫模型在语音识别中广泛应用。
它可以将语音信号转化为状态序列,并根据状态序列推断出最可能的词语或句子。
模型的状态可以表示音素或音节,观测可以是语音特征向量。
2.2 自然语言处理在自然语言处理中,隐马尔可夫模型被用于语言建模、词性标注和命名实体识别等任务。
模型的状态可以表示词性或语法角色,观测可以是词语。
2.3 生物信息学隐马尔可夫模型在生物信息学中的应用十分重要。
它可以用于DNA序列比对、基因识别和蛋白质结构预测等任务。
模型的状态可以表示不同的基因或蛋白质结构,观测可以是序列中的碱基或氨基酸。
三、总结隐马尔可夫模型是一种重要的序列建模方法,在语音识别、自然语言处理和生物信息学等领域有广泛的应用。
它通过状态和观测之间的概率关系来解决序列建模问题,具有较好的表达能力和计算效率。
随着研究的深入,隐马尔可夫模型的扩展和改进方法也在不断涌现,为更多的应用场景提供了有效的解决方案。
(以上为文章正文,共计243字)注:根据您给出的字数限制,本文正文共243字。
如需增加字数,请提供具体要求。
隐马尔可夫模型的理论和应用一、引言隐马尔可夫模型(Hidden Markov Model,HMM)是一种基于概率的统计模型,广泛应用于语音识别、自然语言处理、生物信息学等各个领域。
本文将从理论和应用两个方面来介绍隐马尔可夫模型。
二、理论1. 概念隐马尔可夫模型是一种Markov模型的扩展,用于描述随时间变化的隐含状态的过程。
例如,在讲话时,说话人的情绪状态是无法观测到的,但它却会直接影响语音信号的产生。
2. 基本原理隐马尔可夫模型由三个基本部分组成:状态、观察、转移概率。
其中,状态是指模型中的隐藏状态,观察是指通过某种手段能够观测到的变量,转移概率是指从一个状态转移到另一个状态的概率。
隐马尔可夫模型可以用一个有向图表示,其中节点表示状态,边表示转移概率,而每个节点和边的权重对应了状态和观察的概率分布。
3. 基本假设HMM假设当前状态只与前一状态有关,即满足马尔可夫假设,也就是说,当前的状态只由前一个状态转移而来,与其他状态或之前的观察无关。
4. 前向算法前向算法是HMM求解的重要方法之一。
它可以用来计算给定观测序列的概率,并生成最有可能的隐含状态序列。
前向算法思路如下:首先,确定初始概率;其次,计算确定状态下观察序列的概率;然后,根据前一步计算结果和转移概率,计算当前时刻每个状态的概率。
5. 后向算法后向算法是另一种HMM求解方法。
它与前向算法类似,只是计算的是所给定时刻之后的观察序列生成可能的隐含状态序列在该时刻的概率。
后向算法思路如下:首先,确定初始概率;然后,计算当前时刻之后的所有观察序列生成可能性的概率;最后,根据观察序列,逆向计算出当前时刻每个状态的概率。
三、应用1. 语音识别语音识别是HMM最常见的应用之一。
在语音识别中,输入的语音信号被转换为离散的符号序列,称为观察序列。
然后HMM模型被用于识别最有可能的文本转录或声学事件,如说话人的情绪状态。
2. 自然语言处理在自然语言处理中,HMM被用于识别和分类自然语言的语法、词形和词义。
隐马尔可夫模型(Hidden Markov Model, HMM)是一种用来对时序数据进行建模的概率图模型。
它在信号处理、语音识别、自然语言处理等领域被广泛应用,具有重要的理论和实际意义。
隐马尔可夫模型包括三个基本问题及相应的算法,分别是概率计算问题、学习问题和预测问题。
接下来我们将针对这三个问题展开详细探讨。
### 1.概率计算问题概率计算问题是指给定隐马尔可夫模型λ=(A, B, π)和观测序列O={o1, o2, ..., oT},计算在模型λ下观测序列O出现的概率P(O|λ)。
为了解决这个问题,可以使用前向传播算法。
前向传播算法通过递推计算前向概率αt(i)来求解观测序列O出现的概率。
具体来说,前向概率αt(i)表示在时刻t状态为i且观测到o1, o2, ..., ot的概率。
通过动态规划的思想,可以高效地计算出观测序列O出现的概率P(O|λ)。
### 2.学习问题学习问题是指已知观测序列O={o1, o2, ..., oT},估计隐马尔可夫模型λ=(A, B, π)的参数。
为了解决这个问题,可以使用Baum-Welch算法,也称为EM算法。
Baum-Welch算法通过迭代更新模型参数A、B和π,使得观测序列O出现的概率P(O|λ)最大化。
这一过程涉及到E步和M步,通过不断迭代更新模型参数,最终可以得到最优的隐马尔可夫模型。
### 3.预测问题预测问题是指给定隐马尔可夫模型λ=(A, B, π)和观测序列O={o1,o2, ..., oT},求解最有可能产生观测序列O的状态序列I={i1, i2, ..., iT}。
为了解决这个问题,可以使用维特比算法。
维特比算法通过动态规划的方式递推计算最优路径,得到最有可能产生观测序列O的状态序列I。
该算法在实际应用中具有高效性和准确性。
在实际应用中,隐马尔可夫模型的三个基本问题及相应的算法给我们提供了强大的建模和分析工具。
通过概率计算问题,我们可以计算出观测序列出现的概率;通过学习问题,我们可以从观测序列学习到模型的参数;通过预测问题,我们可以预测出最有可能的状态序列。
隐马尔可夫模型三个基本问题以及相应的算法一、隐马尔可夫模型(Hidden Markov Model, HMM)隐马尔可夫模型是一种统计模型,它描述由一个隐藏的马尔可夫链随机生成的不可观测的状态序列,再由各个状态生成一个观测而产生观测序列的过程。
HMM广泛应用于语音识别、自然语言处理、生物信息学等领域。
二、三个基本问题1. 概率计算问题(Forward-Backward算法)给定模型λ=(A,B,π)和观察序列O=(o1,o2,…,oT),计算在模型λ下观察序列O出现的概率P(O|λ)。
解法:前向-后向算法(Forward-Backward algorithm)。
前向算法计算从t=1到t=T时,状态为i且观察值为o1,o2,…,ot的概率;后向算法计算从t=T到t=1时,状态为i且观察值为ot+1,ot+2,…,oT的概率。
最终将两者相乘得到P(O|λ)。
2. 学习问题(Baum-Welch算法)给定观察序列O=(o1,o2,…,oT),估计模型参数λ=(A,B,π)。
解法:Baum-Welch算法(EM算法的一种特例)。
该算法分为两步:E 步计算在当前模型下,每个时刻处于每个状态的概率;M步根据E步计算出的概率,重新估计模型参数。
重复以上两步直至收敛。
3. 预测问题(Viterbi算法)给定模型λ=(A,B,π)和观察序列O=(o1,o2,…,oT),找到最可能的状态序列Q=(q1,q2,…,qT),使得P(Q|O,λ)最大。
解法:Viterbi算法。
该算法利用动态规划的思想,在t=1时初始化,逐步向后递推,找到在t=T时概率最大的状态序列Q。
具体实现中,使用一个矩阵delta记录当前时刻各个状态的最大概率值,以及一个矩阵psi记录当前时刻各个状态取得最大概率值时对应的前一时刻状态。
最终通过回溯找到最可能的状态序列Q。
三、相应的算法1. Forward-Backward算法输入:HMM模型λ=(A,B,π)和观察序列O=(o1,o2,…,oT)输出:观察序列O在模型λ下出现的概率P(O|λ)过程:1. 初始化:$$\alpha_1(i)=\pi_ib_i(o_1),i=1,2,…,N$$2. 递推:$$\alpha_t(i)=\left[\sum_{j=1}^N\alpha_{t-1}(j)a_{ji}\right]b_i(o_t),i=1,2,…,N,t=2,3,…,T$$3. 终止:$$P(O|λ)=\sum_{i=1}^N\alpha_T(i)$$4. 后向算法同理,只是从后往前递推。
隐马尔科夫模型的原理及应用隐马尔科夫模型(Hidden Markov Model,简称HMM)是一种基于概率统计的模型,主要用于解决与时间序列相关的问题,例如语音识别、手写识别、自然语言处理、生物信息学等领域。
其特点是能够通过已知或者观测到的状态序列来推断未知或者隐藏的状态序列,是一种典型的生成模型。
一、隐马尔科夫模型的基本原理隐马尔科夫模型包含三个基本元素:状态集合、观测集合、状态转移概率和观测概率。
(一)状态集合状态集合表示模型中所有可能的状态,通常用S={s1,s2,...sn}表示。
在模型中每个状态都有一个特定的含义,如在语音识别中,状态可以表示一个字母或一个音素。
(二)观测集合观测集合表示我们能够观测到的所有结果,通常用O={o1,o2,...om}表示。
在模型中每个观测结果都对应着一个观测符号(symbol),例如在语音识别中,观测符号可以表示语音波形的某个片段。
(三)状态转移概率状态转移概率表示从一个状态转移到另一个状态的概率,通常用A={aij}表示,其中aij表示从状态si转移到状态sj的概率。
在语音识别中,状态转移概率可以表示从一个音素转移到另一个音素的概率。
(四)观测概率观测概率表示在某个状态下,能够观测到某个观测符号的概率,通常用B={bj(k)}表示,其中bj(k)表示在状态sj下,观测到观测符号ok的概率。
在语音识别中,观测概率可以表示在一个音素下,产生一个语音片段的概率。
在隐马尔科夫模型中,我们通常无法观测到模型的状态序列,只能观测到对应的观测符号序列。
因此,我们需要通过对已有的观测序列进行推断,来推断出隐藏的状态序列,从而对问题进行分析和求解。
(五)隐马尔科夫模型的基本假设隐马尔科夫模型基于以下两个基本假设:1. 齐次马尔科夫性假设:某个时刻的状态只与前一个时刻的状态有关,而不受其他时刻状态的影响。
2. 观测独立性假设:某个时刻的观测值只依赖于当前的状态,而不受其他时刻的状态或观测值的影响。
隐马尔可夫模型实例隐马尔可夫模型(Hidden Markov Model)是一种常用的概率图模型,广泛应用于语音识别、自然语言处理、生物信息学、金融等多个领域。
本文将以语音识别为例,介绍隐马尔可夫模型的基本概念、模型建立和参数估计。
一、基本概念隐马尔可夫模型由两个主要部分组成:状态序列和观测序列。
在语音识别中,状态序列表示语音信号在不同时间状态下的声学特征,观测序列表示每个时间点对应的语音词语。
由于状态序列不易直接观测到,因此被称为隐状态。
观测序列则可以通过语音信号的声学特征进行测量,被称为可观测状态。
隐马尔可夫模型的过程可以用图来表示,如下所示:(插入图片)在这个模型中,状态i的转移到状态j的概率为aij,状态i到可观测状态yk的概率为bik。
初始化时,模型从一个随机的初始状态开始,每个状态都有一个概率分布pi。
给定这些参数,隐马尔可夫模型可以用来预测观测到的语音词语。
二、模型建立在语音识别中,观测序列一般是指一段语音信号,我们需要把语音信号分解为可以处理的数据。
常见的方法是将语音信号分为若干时间段,每段时间内的声学特征被称为帧。
为了方便起见,我们假设每个帧都是自治的,即在同一个帧内声学特征是相似的,在不同的帧之间声学特征是独立的。
这个假设并不一定成立,但是可以简化模型,并且在实际应用中有一定的效果。
对于语音信号,我们可以使用Mel频率倒谱系数(Mel Frequency Cepstral Coefficients, MFCCs)作为声学特征,在此我们假设MFCCs的数量为M。
那么对于一段长度为T的语音信号,可以得到一个M*T的特征矩阵X。
为了能够使用隐马尔可夫模型来解决语音识别问题,我们需要把观测序列转化为状态序列。
这个过程称为解码。
解码的目标是找到在给定观测序列的条件下,最有可能的状态序列。
这个问题可以用贪心算法来解决,但是因为状态转移和观测转移可能是非线性的,因此需要使用动态规划中的维特比算法。
隐马尔可夫模型的原理隐马尔可夫模型(Hidden Markov Model,HMM)是一种用于建模时序数据的统计模型。
它在许多领域中都有广泛的应用,如语音识别、自然语言处理、生物信息学等。
本文将介绍隐马尔可夫模型的原理及其应用。
一、隐马尔可夫模型的基本概念隐马尔可夫模型由两个基本部分组成:状态序列和观测序列。
状态序列是一个随机变量序列,表示系统在不同时间点的状态;观测序列是与状态序列对应的观测值序列,表示在每个时间点观测到的数据。
隐马尔可夫模型的基本假设是马尔可夫性质,即当前状态只与前一个状态有关,与其他状态和观测无关。
这一假设使得隐马尔可夫模型具有简洁的表示和高效的计算。
二、隐马尔可夫模型的三个问题在隐马尔可夫模型中,有三个基本问题需要解决:状态序列问题、观测序列概率计算问题和参数估计问题。
1. 状态序列问题给定模型参数和观测序列,状态序列问题是要求找到最可能的状态序列。
这可以通过动态规划算法中的维特比算法来解决。
2. 观测序列概率计算问题给定模型参数和观测序列,观测序列概率计算问题是要求计算给定观测序列的概率。
这可以通过前向算法或后向算法来解决。
3. 参数估计问题给定观测序列,参数估计问题是要求估计模型参数。
这可以通过Baum-Welch算法(也称为EM算法)来解决。
三、隐马尔可夫模型的应用隐马尔可夫模型在许多领域中都有广泛的应用。
1. 语音识别隐马尔可夫模型在语音识别中被广泛应用。
语音信号可以看作是状态序列,而观测序列是对应的声学特征。
通过训练隐马尔可夫模型,可以实现对语音信号的识别和理解。
2. 自然语言处理隐马尔可夫模型在自然语言处理中也有重要的应用。
例如,可以将自然语言文本看作是状态序列,而观测序列是对应的词语或字符。
通过训练隐马尔可夫模型,可以实现对自然语言文本的分词、词性标注等任务。
3. 生物信息学隐马尔可夫模型在生物信息学中也有广泛的应用。
例如,可以将DNA 序列看作是状态序列,而观测序列是对应的碱基。
隐马尔科夫模型一、引入二、定义三、隐马尔科夫模型的计算(1)估值问题(2)解码问题(3)训练问题四、隐马尔科夫各种结构H M M的由来☐1870年,俄国有机化学家V l a d i m i r V.M a r k o v n i k o v第一次提出马尔科夫模型☐马尔可夫模型和马尔可夫链☐ 隐式马尔可夫模型(H M M )马尔可夫性☐ 如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程 ☐ X (t+1) = f(X(t))马尔可夫链☐ 时间和状态都离散的马尔科夫过程称为马尔科夫链。
设在时刻t 的随机变量用t S 表示,其观察值用t s 表示,则如果当11s S ,22s S =,……,t t s S =的前提下,11++=t t s S 的概率是如下式所示,则称为n 阶Markov过程。
)|()|(11111111tn t tn t t t t t t t sSs S P s S s S P +-+-++++===== (1)这里tS 1表示1S ,2S ,……,t S ,t s 1表示1s ,2s ,……,t s ,tt s S 11=表示11s S =,22s S =,……,t t s S =。
特别的当如下式成立时,则称其为1阶Markov 过程,又叫单纯马尔可夫过程。
)|()|(111111t t t t t t t t s S s S P s S s S P =====++++ (2)即:系统在任一时刻所处的状态只与此时刻的前一时刻所处的状态有关。
而且,为了处理问题方便,考虑式(2)右边的概率与时间无关的情况,即:)|[)1,(1i t j t ij s S s S P t t P ===++ (3)同时满足:0)1,(≥+ij t t P (4)∑==+Nj ij t t P 11)1,( (5) 这里ij t t P )1,(+是当时刻t 从状态i 到时刻t +1时的状态j 的转移概率,当这个转移概率是与时间无关的常数时,又叫S ,2S ,……是具有常数转移概率的Markov 过程。
隐式马尔可夫模型(H M M )HMM 类似于一阶Markov 过程。
不同点是HMM 是一个双内嵌式随机过程,即HMM 是由两个随机过程组成,一个是状态转移序列,它对应着一个单纯Markov 过程;另一个是每次转移时输出的符号组成的符号序列。
这两个随机过程,其中状态转移随机过程是不可观测的,只能通过另一个随机过程的输出观察序列观测。
设状态转移序列为S=T s s s 21,,输出的符号序列为O=1o ,T o o 2。
由于模型本身是看不见的,即模型的状态不为外界所见,只能根据观察序列推导出来,所以称为隐马尔可夫模型。
离散HMM 中的元素对于语音识别使用的HMM 可以用下面六个模型参数来定义,即:观察值序列 o 1, o 2, ..., o T图1 HMM 的组成示意图},,,,,{F B A O S M π=S :模型中状态的有限集合,即模型由哪几个状态组成。
设有N 个状态,S ={i s|i=1,2,……,N}。
记t 时刻模型所处状态为t s ,),,(1N ts s s ∈。
O :输出的观察值符号的集合,即每个状态对应的可能的观察值数目。
记M 个观察值为1o ,……,M o ,记t 时刻观察到的观察值为t o 其中1(,,)t M o o o ∈ 。
A :状态转移概率的集合。
所有转移概率可以构成一个转移概率矩阵,即:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=NN N N a a a a A 1111其中ij a 是从状态i s 到状态j s 的转移概率,i ≤1,N j ≤且有10≤≤ij a ,∑==Nj ij a 11。
B :输出观测值概率的集合。
{()}j B b k =。
其中()[v |],1j t k t b k p o s j k M ===≤≤,其中V k k 表示第个观察符号根据B 可将HMM 分为连续型和离散型HMM 等。
()1j kb k =∑ (离散型HMM )()1jb k dk ∞-∞=⎰ (连续型HMM )π:系统初始状态概率的集合,}{i ππ=,i π表示初始状态是i s 的概率,即:1[],(1) 1i i P s i i N ππ==≤≤=∑ (6)F :系统终了状态的集合。
Markov 模型没有终了状态的概念,只是在语音识别里用的Markov 模型要设定终了状态。
π,F},为了便于表示,常用下面的形式表示一个HMM,这样,可以记一个HMM为M={S,O,A,B,π}。
HMM可以分为两部分,一个是Markov链,由π,A描述,产生的输出为状即简写为M={A,B,态序列。
另一个随机过程,由B描述,产生的输出为观察符号序列。
HMM:示例图2 两个状态的HMMHMM 的三个基本问题HMM 核心理论是解决三个基本问题: 1.已知观测序列O ={1o ,2o ……T o }和模型},,{πλB A =,如何有效计算在给定模型的条件下产生观测序列O 的条件概率)/(λO P 最大。
2.已知观测序列O ={1o ,2o ……T o }和模型},,{πλB A =,如何选择相应的在某种意义上最佳的(能最好解释观测序列的)状态序列S 。
3.如何调整模型参数},,{πλB A =以使条件概率(|)P O λ最大。
第一个问题是评估问题,实际就是一个识别的问题,即已知模型λ和一个观测序列O ,如何计算由该模型产生出该观测序列的概率(|)P O λ,问题1的求解能选择出与给定观测序列最匹配的模型。
第二个问题目的是找出模型中隐藏的部分,即找出正确的状态序列(),,k j i s s s ,这是一个典型的估计问题。
第三个问题是模型的参数最优化,通过训练自适应调整模型参数使之适应于训练序列并最优化,从而得到实际应用中最好的模型,这是一个参数训练问题。
三个问题对应算法分别为:前后向算法,Viterbi 算法和Baum-Welch 算法。
隐马尔可夫模型的计算以孤立词识别为例,设有W 个单词要识别,我们可预先得到这W 个词的标准样本,第一步就是为每一个词建立一个N 个状态的HMM 模型。
这就要用到问题3(给定观察下求模型参数)。
为了理解模型状态的物理意义,可利用问题二将每一个单词的状态序列分割为一些状态,再研究导致与每一状态响应的观察结果的那些特征。
最后,识别单词就要利用问题1,即对给定观察结果找出一个最合适的模型,使得(|)P O λ最大。
第一个问题的求解给定观察序列O ={1o ,2o ……T o }和模型},,{πλB A =,求解(|)P O λ,最直接的方法就是通过穷举所有的长度为T 状态序列。
共有TN 个状态序列,考虑其中一个:12S (...)T s s s =,1s 是初始状态。
给定S ,观察序列O 出现的概率为1(O|s,)(|,)Tt t t p p o s λλ==∏ (7)因为各观察量假设是统计独立的,因此得到:1212(O|s,)()()...()t s s s t p b o b o b o λ=⋅ (8)上面的状态序列的概率为:112231(s |)...T T s s s s s s s p a a a λπ-= (9)O 和S 的联合概率为:(O ,s |)(O |s ,)p pp λλλ= (10)将联合概率中的所有s 序列累加就得到O 的概率(给定模型参数)。
即:s(O|)(O|s,)(s |)all p p p λλλ=∑111221T 1212T ,,...,()()...()T TTs s s s s ss s s s s b o a b o a b o π-=∑(11)根据上式,要计算(O|)p λ,需要2TTN⋅规模的计算量。
如果对于N=5(状态数),T=100(观察量),需要2*100*51007210≈次计算。
前向-后向算法定义前向概率为:)(i t α=)|,(21λθi t t s o o o P =即状态模型为λ,部分观测序列为1o 2o ……t o ,且对应t 时刻HMM 的状态为i t s θ=时的概率,利用)(i t α计算输出条件概率)|(λO P 1.初始化11()(), 1i N i i i b o απ=≤≤ (12) 2.选代计算111()()() 1t T-1,1j N N t t ij j t i j i a b o αα++=⎡⎤=≤≤≤≤⎢⎥⎣⎦∑ (13)3.终止计算∑==Ni T i O P 1)()|(αλ (14)其中步骤2的迭代过程为前向算法的核心:时刻t+1的状态j 可由时刻t 的i 状态到达。
其中1i N ≤≤。
终止条件中:12()(...,|)T T T i p o o o s i αλ==。
(15)前向算法只需要2N T 次计算。
对于N=5,T=100,只需要3000次计算。
后向算法定义后向概率为12()(|,)t t t T t i i P o o o s βθλ++== ,计算过程同前向算法类似。
第二个问题的求解(Viterbi 算法)第二个问题是给定观察序列O 以及模型参数,选择相应的在某种意义上最佳的(能最好解释观测序列的)状态序列S 。
Viterbi 算法在最佳意义上确定一个状态序列S ,这个最佳的定义,是指使)|,(λO S P 最大时确定的序列。
定义)(i t δ为时刻t 沿一条路经1s 2s ……t s 且i t s θ=,产生出观测序列1o 2o ……t o 的最大概率,即有:12112112()max (,,|)t t t t i t s s s i P s s s s o o o δθλ--== (16)所以:1t+1()[max ()](o )t t ij j ij i a b δδ+=⋅ (17) 那么,求最佳状态序列S 的算法过程: 1.初始化N i 1 ),()(11≤≤=o b i i i πδ (18)1()0, 1i N i ψ=≤≤ (19)2.选代计算11()max[()](), 2t T,1j N t t ij j t i Nj i a b o δδ-≤≤=≤≤≤≤ (20) 11()arg max[()], 2t T,1j N t t ij i Nj i a ψδ-≤≤=≤≤≤≤ (21)3.终止计算)]([max 1*i P T Ni δ≤≤= (22))]([max arg 1*i s T Ni T δ≤≤= (23)4.状态序列求取**11(), 1,2,,1t t t s st T T ψ++==-- (24)其中:()t i δ为t 时刻处于i 状态时的累积输出概率,()t i ψ为t 时刻处于i 状态时的前序状态号,*t s 为最优状态序列中t 时刻所处的状态,*P 为最终的输出概率。