数学模型5-2隐马氏模型
- 格式:pdf
- 大小:229.72 KB
- 文档页数:14
隐马尔可夫模型综述于江德摘要:隐马尔可夫模型是一种有着广泛应用的统计模型,它是在马尔可夫模型基础上发展起来的。
本文首先简要介绍了马尔可夫模型,然后对隐马尔可夫模型的基本概念、一般形式、三个基本问题及其解决算法进行了详细介绍,最后就隐马尔可夫模型的应用及当前研究的热点、难点进行了论述。
关键字:马尔可夫模型;隐马尔可夫模型;前向算法;后向算法;韦特比算法1引言隐马尔可夫模型(Hidden Markov Model,简称HMM)是一种用参数表示,用于描述随机过程统计特性的概率模型,它是在马尔可夫模型基础上发展起来的。
早在20世纪的60年代末和70年代初,HMM的基本理论就由Baum等人建立起来了,并由卡耐基-梅隆大学(CMU)的Baker和IBM的Jelinek等人将其应用到语音识别之中,取得了很大的成功[1]。
但是,HMM引起世界各国从事语音处理研究的学者们广泛关注,并成为语音识别系统中构建统计模型的重要手段,却是20世纪80年代中期以后的事情,究其原因主要有两个[1]:首先,HMM理论起先发表在数学杂志上,并未被很多从事语音处理研究的工程技术人员获悉。
其次,HMM首次应用于语音处理时,并没有提供足够的一般性介绍,从而使得多数研究人员无法理解其基本理论并将其应用到自己所从事的研究中去。
直到1983年以后,Bell实验室的Rabiner等人发表了很有影响的一系列系统介绍HMM的理论和应用的文章[1]上述状况才得以根本改变。
从上世纪80年代末开始,马尔可夫模型和隐马模型除了在语音识别领域继续得到广泛应用外,从上世纪90年代初到现在,HMM开始用到许多新的领域,如:自然语言处理领域的词性标注(Part-of-speech Tagging)[2~7]、命名实体识别[8]、特定信息抽取[9,10]、词法分析等;生物信息学中HMM被广泛用来分析基因序列[2,11]等。
由于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|λ)可以通过前向算法或后向算法计算。
隐马尔可夫模型维基百科,自由的百科全书跳转到:导航, 搜索隐马尔可夫模型状态变迁图(例子)x—隐含状态y—可观察的输出a—转换概率(transition probabilities)b—输出概率(output probabilities)隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。
其难点是从可观察的参数中确定该过程的隐含参数。
然后利用这些参数来作进一步的分析,例如模式识别。
在正常的马尔可夫模型中,状态对于观察者来说是直接可见的。
这样状态的转换概率便是全部的参数。
而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的某些变量则是可见的。
每一个状态在可能输出的符号上都有一概率分布。
因此输出符号的序列能够透露出状态序列的一些信息。
目录[隐藏]∙ 1 马尔可夫模型的演化∙ 2 使用隐马尔可夫模型o 2.1 具体实例o 2.2 隐马尔可夫模型的应用∙ 3 历史∙ 4 参见∙ 5 注解∙ 6 参考书目∙7 外部连接[编辑]马尔可夫模型的演化上边的图示强调了HMM的状态变迁。
有时,明确的表示出模型的演化也是有用的,我们用x(t1)与x(t2)来表达不同时刻t1和t2的状态。
在这个图中,每一个时间块(x(t), y(t))都可以向前或向后延伸。
通常,时间的起点被设置为t=0 或t=1.另外,最近的一些方法使用Junction tree算法来解决这三个问题。
[编辑]具体实例假设你有一个住得很远的朋友,他每天跟你打电话告诉你他那天作了什么.你的朋友仅仅对三种活动感兴趣:公园散步,购物以及清理房间.他选择做什么事情只凭天气.你对于他所住的地方的天气情况并不了解,但是你知道总的趋势.在他告诉你每天所做的事情基础上,你想要猜测他所在地的天气情况.你认为天气的运行就像一个马尔可夫链.其有两个状态 "雨"和"晴",但是你无法直接观察它们,也就是说,它们对于你是隐藏的.每天,你的朋友有一定的概率进行下列活动:"散步", "购物", 或 "清理".因为你朋友告诉你他的活动,所以这些活动就是你的观察数据.这整个系统就是一个隐马尔可夫模型HMM.你知道这个地区的总的天气趋势,并且平时知道你朋友会做的事情.也就是说这个隐马尔可夫模型的参数是已知的.你可以用程序语言(Python)写下来:states = ('Rainy', 'Sunny')observations = ('walk', 'shop', 'clean')start_probability = {'Rainy': 0.6, 'Sunny': 0.4}transition_probability = {'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},}emission_probability = {'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},}在这些代码中,start_probability代表了你对于你朋友第一次给你打电话时的天气情况的不确定性(你知道的只是那个地方平均起来下雨多些).在这里,这个特定的概率分布并非平衡的,平衡概率应该接近(在给定变迁概率的情况下){'Rainy': 0.571, 'Sunny': 0.429}< transition_probability表示基于马尔可夫链模型的天气变迁,在这个例子中,如果今天下雨,那么明天天晴的概率只有30%.代码emission_probability表示了你朋友每天作某件事的概率.如果下雨,有 50% 的概率他在清理房间;如果天晴,则有60%的概率他在外头散步.这个例子在Viterbi算法页上有更多的解释。
隐马尔科夫模型HMM自学(1)介绍崔晓源翻译我们通常都习惯寻找一个事物在一段时间里的变化规律。
在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等。
一个最适用的例子就是天气的预测。
首先,本文会介绍声称概率模式的系统,用来预测天气的变化然后,我们会分析这样一个系统,我们希望预测的状态是隐藏在表象之后的,并不是我们观察到的现象。
比如,我们会根据观察到的植物海藻的表象来预测天气的状态变化。
最后,我们会利用已经建立的模型解决一些实际的问题,比如根据一些列海藻的观察记录,分析出这几天的天气状态。
Generating Patterns有两种生成模式:确定性的和非确定性的。
确定性的生成模式:就好比日常生活中的红绿灯,我们知道每个灯的变化规律是固定的。
我们可以轻松的根据当前的灯的状态,判断出下一状态。
非确定性的生成模式:比如说天气晴、多云、和雨。
与红绿灯不同,我们不能确定下一时刻的天气状态,但是我们希望能够生成一个模式来得出天气的变化规律。
我们可以简单的假设当前的天气只与以前的天气情况有关,这被称为马尔科夫假设。
虽然这是一个大概的估计,会丢失一些信息。
但是这个方法非常适于分析。
马尔科夫过程就是当前的状态只与前n个状态有关。
这被称作n阶马尔科夫模型。
最简单的模型就当n=1时的一阶模型。
就当前的状态只与前一状态有关。
(这里要注意它和确定性生成模式的区别,这里我们得到的是一个概率模型)。
下图是所有可能的天气转变情况:对于有M个状态的一阶马尔科夫模型,共有M*M个状态转移。
每一个状态转移都有其一定的概率,我们叫做转移概率,所有的转移概率可以用一个矩阵表示。
在整个建模的过程中,我们假设这个转移矩阵是不变的。
该矩阵的意义是:如果昨天是晴,那么今天是晴的概率为0.5,多云的概率是0.25,雨的概率是0.25。
注意每一行和每一列的概率之和为1。
另外,在一个系统开始的时候,我们需要知道一个初始概率,称为向量。