隐马尔可夫模型(有具体例子,方便理解)
- 格式:ppt
- 大小:7.81 MB
- 文档页数:77
隐马尔可夫模型及其典型应⽤【原】隐马尔可夫模型及其典型应⽤----by stackupdown ⽬录前⾔本⽂要介绍的是隐马尔可夫模型及其应⽤。
我们从⼀个史学家开始,假设他在看某国的史料时,⾟⾟苦苦地统计了上下数年,发现了粮⾷的增长和下降的⼀段,他会结合历史去分析⼀些问题。
但是如果史书的其他记载得太少,他就找不到问题的所在,所以⽆从下⼿。
⼜⽐如,⼀个⼈出去旅⾏,相信民间的传说,海藻的湿度跟未来的天⽓有关,未来不同天⽓,海藻的湿度不⼀样,但是海藻有⼀定概率是错的。
尽管如此,他还是想要根据这个来估计明天天⽓的可能性[1]。
这两个问题是跟时间相关的问题,有些这样的问题是解决不了的,有些则不然,我们在接下来的⽂章⾥会讲到相关问题的数学抽象和解决⽅法。
正⽂⼀、随机过程我们在⾃然世界中会遇到各种不确定的过程,它们的发⽣是不确定的,这种过程称为随机过程。
像花粉的布朗运动、股票市值、天⽓变化都是随机过程[2]。
马尔科夫随机过程是⼀类随机过程。
它的原始模型马尔可夫链,由俄国数学家A.A.马尔可夫于1907年提出。
该过程有以下的性质:指定⼀个时间点,则未来时间的状态只与现在有关,跟它的过去没有关系。
在现实⽣活中的马尔科夫过程是我们⼈为抽象进⾏简化的,如果我们认为⼀个事物的未来跟过去的变化没有太⼤关系,那么我们就可以把它抽象成马尔科夫过程[2]。
⽐如我们的天⽓,很不严谨地说,可以抽象成马尔科夫过程,从今天晴天转移到明天多云、下⾬的转移只取决于今天的天⽓,⽽跟前天的天⽓⽆关。
如下图,这样我们按照概率的知识就可以得到今天下⾬,明天放晴的概率:P(明天晴|今天⾬)=0.4 这就当做是我们最简单的⼀个模型了[3]。
马尔科夫过程的假设很简单,就是概率不依赖于之前的序列,写成公式:就好像⼀条鱼不知道⾃⼰之前的运动轨迹,只知道⾃⼰在哪⾥,接着它就会按照现在的位置随机选择⼀个⽅向去游动了。
鱼的前前后后的运动形成了⼀条链。
在⼀个马尔科夫模型中,我们可以利⽤它来计算概率,⽽且由于它是单个状态的转移,我们看起来它就像是⼀条链⼀样,状态从头到尾移动。
隐马尔可夫模型的基本用法隐马尔可夫模型(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(隐马尔可夫模型)什么是熵(Entropy)简单来说,熵是表⽰物质系统状态的⼀种度量,⽤它⽼表征系统的⽆序程度。
熵越⼤,系统越⽆序,意味着系统结构和运动的不确定和⽆规则;反之,,熵越⼩,系统越有序,意味着具有确定和有规则的运动状态。
熵的中⽂意思是热量被温度除的商。
负熵是物质系统有序化,组织化,复杂化状态的⼀种度量。
熵最早来原于物理学. 德国物理学家鲁道夫·克劳修斯⾸次提出熵的概念,⽤来表⽰任何⼀种能量在空间中分布的均匀程度,能量分布得越均匀,熵就越⼤。
1. ⼀滴墨⽔滴在清⽔中,部成了⼀杯淡蓝⾊溶液2. 热⽔晾在空⽓中,热量会传到空⽓中,最后使得温度⼀致更多的⼀些⽣活中的例⼦:1. 熵⼒的⼀个例⼦是⽿机线,我们将⽿机线整理好放进⼝袋,下次再拿出来已经乱了。
让⽿机线乱掉的看不见的“⼒”就是熵⼒,⽿机线喜欢变成更混乱。
2. 熵⼒另⼀个具体的例⼦是弹性⼒。
⼀根弹簧的⼒,就是熵⼒。
胡克定律其实也是⼀种熵⼒的表现。
3. 万有引⼒也是熵⼒的⼀种(热烈讨论的话题)。
4. 浑⽔澄清[1]于是从微观看,熵就表现了这个系统所处状态的不确定性程度。
⾹农,描述⼀个信息系统的时候就借⽤了熵的概念,这⾥熵表⽰的是这个信息系统的平均信息量(平均不确定程度)。
最⼤熵模型我们在投资时常常讲不要把所有的鸡蛋放在⼀个篮⼦⾥,这样可以降低风险。
在信息处理中,这个原理同样适⽤。
在数学上,这个原理称为最⼤熵原理(the maximum entropy principle)。
让我们看⼀个拼⾳转汉字的简单的例⼦。
假如输⼊的拼⾳是"wang-xiao-bo",利⽤语⾔模型,根据有限的上下⽂(⽐如前两个词),我们能给出两个最常见的名字“王⼩波”和“王晓波 ”。
⾄于要唯⼀确定是哪个名字就难了,即使利⽤较长的上下⽂也做不到。
当然,我们知道如果通篇⽂章是介绍⽂学的,作家王⼩波的可能性就较⼤;⽽在讨论两岸关系时,台湾学者王晓波的可能性会较⼤。
隐马尔可夫〔Hidden Markov Model,HMM〕一、马尔可夫过程〔Markov Process〕1、马尔可夫过程介绍马尔可夫过程(Markov Process),它因俄罗斯数学家安德烈·马尔可夫而得名,代表数学中具有马尔可夫性质的离散随机过程。
该过程中,每个状态的转移只依赖于之前的n个状态,这个过程被称为1个n阶的模型,其中n是影响转移状态的数目。
最简单的马尔科夫过程就是一阶过程,每一个状态的转移只依赖于其之前的那一个状态。
马尔可夫链是随机变量X1, …, X n的一个数列。
这些变量的范围,即他们所有可能取值的集合,被称为“状态空间”,而X n的值则是在时间n的状态。
如果X n+1对于过去状态的条件概率分布仅是X n的一个函数,则这里x为过程中的某个状态。
上面这个恒等式可以被看作是马尔可夫性质。
2、马尔可夫过程举例以下图展示了天气这个例子中所有可能的一阶转移:注意一个含有N 个状态的一阶过程有N2个状态转移。
每一个转移的概率叫做状态转移概率(state transition probability),即从一个状态转移到另一个状态的概率。
这所有的N2个概率可以用一个状态转移矩阵来表示,其表示形式如下:对该矩阵有如下约束条件:下面就是海藻例子的状态转移矩阵:这个矩阵表示,如果昨天是晴天,那么今天有50%的可能是晴天,37.5%的概率是阴天,12.5%的概率会下雨,很明显,矩阵中每一行的和都是1。
为了初始化这样一个系统,我们需要一个初始的概率向量:这个向量表示第一天是晴天。
3、一阶马尔可夫过程定义如上述马尔可夫过程例子可知,我们为一阶马尔可夫过程定义了以下三个部分:状态:晴天、阴天和下雨;初始向量:定义系统在时间为0的时候的状态的概率;状态转移矩阵:每种天气转换的概率;所有的能被这样描述的系统都是一个马尔可夫过程。
二、隐马尔可夫过程〔HMM〕1、隐马尔可夫模型介绍隐马尔可夫模型(HMM)是一个输出符号序列统计模型,具有T个状态X1,X2.......X t-1,它按一定的周期从一个状态转移到另一个状态,每次转移时,输出一个符号〔观测值〕。
隐马尔可夫模型(一)——马尔可夫模型马尔可夫模型(Markov Model)描述了一类随机变量随时间而变化的随机函数。
考察一个状态序列(此时随机变量为状态值),这些状态并不是相互独立的,每个状态的值依赖于序列中此状态之前的状态。
数学描述:一个系统由N个状态S= {s1,s2,...s n},随着时间的推移,该系统从一个状态转换成另一个状态。
Q= {q1,q2,...q n}为一个状态序列,q i∈S,在t时刻的状态为q t,对该系统的描述要给出当前时刻t所处的状态s t,和之前的状态s1,s2,...s t, 则t时刻位于状态q t的概率为:P(q t=s t|q1=s1,q2=s2,...q t-1=s t-1)。
这样的模型叫马尔可夫模型。
特殊状态下,当前时刻的状态只决定于前一时刻的状态叫一阶马尔可夫模型,即P(q t=s i|q1=s1,q2=s2,...q t-1=s j) =P(q t=s i|q t-1=s j)。
状态之间的转化表示为a ij,a ij=P(q t=s j|q t-1=s i),其表示由状态i转移到状态j的概率。
其必须满足两个条件: 1.a ij≥ 0 2.=1对于有N个状态的一阶马尔科夫模型,每个状态可以转移到另一个状态(包括自己),则共有N2次状态转移,可以用状态转移矩阵表示。
例如:一段文字中名词、动词、形容词出现的情况可以用有3个状态的y一阶马尔科夫模型M 表示:状态s1:名词状态s2:动词状态s3:形容词状态转移矩阵: s1 s2 s3A=则状态序列O=“名动形名”(假定第一个词为名词)的概率为:P(O|M) = P(s1,s2,s3,s4} = P(s1)*p(s2|s1)p(s3|s2)p(s1|s3)=p(s1)*a12*a23*a31=1*0.5*0.2*0.4=0.04在马尔可夫模型中,每一个状态都是可观察的序列,是状态关于时间的随机过程,也成为可视马尔可夫模型(Visible Markov Model,VMM)。
HMM隐马尔可夫模型在自然语言处理中的应用隐马尔可夫模型(Hidden Markov Model,HMM)是自然语言处理中常用的一种概率统计模型,它广泛应用于语音识别、文本分类、机器翻译等领域。
本文将从HMM的基本原理、应用场景和实现方法三个方面,探讨HMM在自然语言处理中的应用。
一、HMM的基本原理HMM是一种二元组( $λ=(A,B)$),其中$A$是状态转移矩阵,$B$是观测概率矩阵。
在HMM中,状态具有时序关系,每个时刻处于某一状态,所取得的观测值与状态相关。
具体来说,可以用以下参数描述HMM模型:- 隐藏状态集合$S={s_1,s_2,...,s_N}$:表示模型所有可能的状态。
- 观测符号集合$V={v_1,v_2,...,v_M}$:表示模型所有可能的观测符号。
- 初始状态分布$\pi={\pi (i)}$:表示最初处于各个状态的概率集合。
- 状态转移矩阵$A={a_{ij}}$:表示从$i$状态转移到$j$状态的概率矩阵。
- 观测概率矩阵$B={b_j(k)}$:表示处于$j$状态时,观测到$k$符号的概率。
HMM的主要任务是在给定观测符号序列下,求出最有可能的对应状态序列。
这个任务可以通过HMM的三种基本问题求解。
- 状态序列概率问题:已知模型参数和观测符号序列,求得该观测符号序列下各个状态序列的概率。
- 观测符号序列概率问题:已知模型参数和状态序列,求得该状态序列下观测符号序列的概率。
- 状态序列预测问题:已知模型参数和观测符号序列,求得使得观测符号序列概率最大的对应状态序列。
二、HMM的应用场景1. 语音识别语音识别是指将语音信号转化成文字的过程,它是自然语言处理的关键技术之一。
HMM在语音识别领域具有广泛应用,主要用于建立声学模型和语言模型。
其中,声学模型描述语音信号的产生模型,是从语音输入信号中提取特征的模型,而语言模型描述语言的组织方式,是指给定一个句子的前提下,下一个字或单词出现的可能性。
爱情的隐式马尔可夫模型(Love in the Hidden Markov Model)首先感谢原英文作者Tom Yeh的精彩描述,生动地讲述了HMM模型的原理,在此我斗胆用我自己的语言用中文修改描述一次.感兴趣的可以点击这里下载latex生成的pdf 版本男生和女生分别是来自不同星球的科学事实已经众所周知的了.男生们总是认为,女生们都是迷一样的生物,他们的情感状态浮动似乎是以秒单位在变化的,难以理解,更勿论预测了! 而女生们觉得男生都是没有感觉动物,完全不能理解什么叫感受-尽管已经告诉他们N次了!这种男女之间的根本差别,导致了他们之间的感情关系是受一种超级无敌复杂的系统所支配的.不过,我们可以用一个叫隐式马尔可夫(Hidden Markov Model)的数学模型来分析这个系统.决定性系统首先我们来看看一种最简单的预测系统- 决定性系统.在这个系统中,如果我们知道我们目前所在的状态,那么我们也就能够毫无疑问地预测出下一个状态是什么. 比如一年四季的轮替就是一个决定性系统:每个季节的交替是完全可以预测的,如果现在是春天,那么下一个季节就一定会是夏天,冬天的前一个状态就一定是秋天等等.另外值得一提的是,冬天过后,下一个季节就又会回到春天,以此循环...另外一个常见的决定系统,就是交通灯的轮换: 红灯过后就应该是绿灯. 绿灯过后就应该是黄灯,然后又回到红灯.这种系统非常常见,人的一生大致也能看作是这种系统. 有婴儿,少年,成年,老年,然后死亡等几种状态. 不过不同的是,人的一生又不是完全遵循这种状态轮换的, 每个人都有那么丁点的可能性会跳过其中一个或者多个状态,直接到达死亡的状态...(更勿论Benjamin Buttons的情况了,呵呵).讲到这里,聪明的男生或许已经能想到,我们的世界里最为精妙,最雷人的非决定性系统就是-- 你女朋友的情感状态!对于大部分男生来说,精确地预测女朋友的下一种的情感状态基本上属于扯淡. 一个mm现在可能心情很好,可是下一秒却进入抓狂;她或许某个时刻处于悲伤,下个时刻却变得异常兴奋.在每个女生的情感状态里面,都有一种基于概率却又难以预测的本质,这种无序的本质直接导致无数男生直接蹲地画圈圈......尽管看上去女生的情感状态似乎毫无预测性可言,经过一段长时间的观察,却能发现这种现象是有规律的! 于是小明,作为一名计算机科学家, 决定要系统地去分析他女朋友的情感不确定性, 挖掘出里面的规律!于是乎,小明仔细地记录了半年来他女朋友小丽每天的喜怒哀乐变化状态, 并作了一张图表(Table1)来表示小丽的历史情感变化.小明想知道, 有了这些数据,他能否从中得出知道, 如果小丽某天的情感状态是高兴, 那么第二天她更多的是保持好心情呢,还是更多地变得悲伤了.如此等等...数据胜于雄辩, 小明从这半年的数据里面发现,当小丽高兴的时候,3/4的情况下第二天她仍然保持着好心情,只有1/4的情况小丽第二天心情会改变,比如变得气愤,悲伤等等(小明真TM走运!).小明继续分析其他各种情感状态变化情况,比如从高兴到悲伤, 悲伤到气愤, 高兴到气愤等所有的可能组合.很快小明就得到所有的组合变化数据,从中得知对于任意小丽的某天情感状态下,下一个最有可能的情感状态.为了便于教学,我们假设小明只关心小丽的四种感情状态: 高兴悲伤气愤还有忧虑高兴悲伤气愤忧虑高兴0.75 0.1 0.10.05悲伤0.05 0.5 0.250.2气愤0.15 0.2 0.40.25忧虑0.05 0.2 0.250.5 Table 1: 小丽的情绪状态变化表在这个表格中, 每个数字代表了小丽情绪从某列转变到某行的概率. 比方说, 如果小丽某天的情绪是高兴,那么她将有0.1的概率下一天她会变得悲伤或者是气愤, 有0.05的可能性转变为忧虑. 每一行代表了从某种情绪转变到各种情绪的概率,因此每行的概率之和为 1.同理,每一列代表了由各种情绪转变为该列所代表的情绪的概率,因此每列的概率总和也应该为1.我们可以画一个状态图(图1)来表示表格1, 每个圆圈代表着一种心情状态, 每两种心情变化由一个有向弧,从当前的心情状态指向下一个心情状态表示,每个弧上均带有一个状态转换的概率.Figure 1: 小丽的情绪状态变化图有了这个图表,小明就可以非常直观地看得到小丽最有可能的下个心情会是如何. 她会很有可能变得悲伤吗?(准备好鲜花巧克力),还是更有可能是气愤?(赶紧闪开!) 每天小明只需要看看哪个弧指向的心情概率最大就可以了.这个过程,同学们,就是有名的"马尔可夫过程" (Markov process)不过需要注意的是, 马尔可夫过程有一些假设的前提. 在我们的例子里面, 预测下一天小丽的心情, 我们只依赖当天小丽的心情,而没有去考虑更先前她的心情. 很明显这种假设下的模型是远不够精确的. 很多时候,随着日子一天一天的过去,女生一般会变得越来越体谅.经常女生生气了几天后,气就会慢慢消了. 比方说如果小丽已经生气了3天了,那么她第二天变得高兴起来的可能性,在多数情况下,要比她只生气了一天而第二天变得高兴的可能性要高. 马尔可夫过程并没有考虑这个, 用行话讲, 就是马尔可夫模型忽略远距离历史效应( longrange dependency).我很佩服各位能坚持读到这里, 不过,还没完呢, 我仍然没有说,隐式马尔可夫模型(Hidden Markov Model)是什么呢! 诸位如果已经有点头昏脑涨,请就此打住,以免大脑过热死机!隐式马尔可夫模型- Hidden Markov Model, or HMM for short.有些时候,我们无法直接观测一个事物的状态. 比方说, 有些女生是很能隐瞒自己的情感而不流露出来的! 他们可能天天面带微笑但不代表他们就天天高兴.因此我们必须要有窍门, 去依赖某些我们能够直接观察到的东西.话说回来我们的主人公小明, 自从被小丽发现他这种近乎变态的科学分析行为后,变得非常善于隐藏自己的心情,导致某天小明错误估计了小丽的心情!在误以为那天小丽会心情好的情况下,小明告诉小丽自己不小心摔坏了她心爱的iPod...,小明没想到其实那天小丽正因为前一天错过了商场名牌打折扣的活动而异常气愤... 一场血雨腥风过后,两个人最终分手了.不过很快小明凭着自身的英俊高大潇洒,很快又交上了另外一个女朋友- 小玲. 鉴于小明意识到,女生表面的情感流露非常不可靠, 小明决定要另寻他径, 继续预测女朋友的心情! (作为一个科学家,小明的确有着不怕碰壁的精神!)小明每个月都帮小玲付信用卡的费用(真不明白,有这样的男朋友,小玲有什么理由不高兴啊!), 因此小明每天都可以通过Online banking知道小玲每天都买了什么东西. 小明突然灵机一动: "没准我能通过观测她的购物规律,推导预测出小玲的心情!".听起来有点匪夷所思,不过这个过程,的的确确是可以使用叫作隐式马尔可夫的数学模型来表示并分析的.由于我们需要预测的变量- 心情状态是无法直接观测的,是隐藏(Hidden)起来的.因此这种模型才叫隐式马尔可夫模型.在一次和小玲的好朋友们一起吃饭的时候, 小明得知了以下重要的信息:"小玲高兴的时候经常去买一大堆新衣服", "那天小玲一个人去超市买了一堆吃的,一定是有什么心事了(忧虑)", "你千万不要惹小玲生气阿,不然她会刷爆你的信用卡的!", "小玲好几次伤心难过的时候,一整天都宅在家里看杂志.". 知道了这些信息,小明扩展了他原先一直采用的马尔可夫模型, 为每种隐藏的状态(心情)赋予了新的可观测状态(Observables),这些可观测状态为:1.大部分(>50%)花费是Fashion商场(O1)2.大部分(>50%)花费在超市(O2)3.Oh my God! 一天刷了5000元以上!!! (O3)4.Oh yeah! 这一天她都没花钱(O4)为图简便,我们假设小玲和小明的ex小丽,有着同样的实际心情转换概率(图1).小明通过归类统计小玲过往的信用卡帐单(天啊,怎么这么多!),发现了如表2所示的每天心情与每天信用卡消费之间的关系:Table 2: 小玲的每天情绪状态与当天信用卡花费的关系概率表我要加一句的是, 由于概率的归一性(各种可能性之和为1), 我们为了不降低本文的娱乐搞笑性, 规定如果某天小玲大部分的花费是Fashion或者是在超市,那么她的花费不可能超过5000, 这样我们才有各行的O1+O2+O3+O4 =1.也就是说,当小玲高兴的时候, 小明发现80%的情况下那些天小玲基本都买性感小衣衣了(:Q), 也有那么10%的情况下大部分买吃的了, 令小明郁闷的是,居然小玲高兴了,还有那么5%的情况,刷了他5000+ ;最后剩下5%的情况小玲可能因为太高兴而顾不上消费了(小明暗笑:"对对,就是那次,她心情特好, we BEEP all day, it was the best we ever had!" )自此, 小玲心情的隐式马尔可夫模型就出来了(图2).Figure2: 小玲的隐式马尔可夫模型有了这个模型,我们就可以回答这个问题:"如果我知道了小玲的信用卡花费规律,我能否找出她最有可能的心情变化序列是什么?"具体一点吧, 某次小玲到外地出差了一个星期, 小明每天打电话给她问她今天开心嘛? 小玲都说"开心"...但实际呢?小明自言自语说, 哼你不告诉我, 我就只好算算了! 小明Login到了小玲信用卡网站,打开statement,统计了一下,发现小玲这一个星期的消费规律是:"O2 O1 O4 O2 O3 O1 O4" (对应着消费序列穿的, 吃的, 没刷, 吃的, 刷爆, 穿的, 没刷)有了这个消费序列和图2的模型, 有办法找出小玲这7天最有可能的心情序列是什么吗?信不信由你, Viterbi search algorithm (维特比搜索算法)就是用来计算出HMM模型中给定观测序列O(消费规律), 对应的最有可能的隐藏状态序列(心情变化). 关于Viterbi的原理和实现已经超出本文的讲解范围了,有兴趣的同学可以去Wiki或者动手Google一下. 简单来说Viterbi属于动态规划(Dynamic programming) 算法的一种,用来比较高效地计算出一个转移矩阵及其观测矩阵(分别对应我们的Table1 和Table2)制约下的最大可能的隐藏状态转移序列-如果我们事先知道观测序列的话.根据以上的转移矩阵(table 1})和观测矩阵(table 2), 建立起HMM模型并采用Viterbi算法(HMM还需要添加一个状态起始概率来表示每种状态作为起始状态的可能性,由于小明没有办法知>道这个数字,因此只能作最简单的假设- 假设他们都是均匀分布的(uniformly distributed),所以每种状态的起始>概率均为1/4).可以知道,对应以上观察序列,小玲那七天最为可能的情绪序列为:忧虑悲伤悲伤忧虑气愤高兴悲伤概率为p=1.4x10^-5看来小玲这次出差压力不小啊!呜呼! 至此整个Hidden Markov Model就介绍完了.当然,中间仍然有很多细节我是直接忽略了. 而且在现实使用当中,HMM模型中的规模要大得多,无论是隐藏的状态数目,还是可观测的状态数目,都超过千计. HMM 及其相关算法被大量广泛使用在各行各业.在计算机信息学中, 大量语音识别, 中文分词,中文拼音汉字转换系统采用的都是隐式马尔可夫模型.。
机器学习之隐马尔科夫模型(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个样本中初始状态为的频率。
如何用简单易懂的例子解释隐马尔可夫模型如何用简单易懂的例子解释隐马尔可夫模型? - 知乎隐马尔可夫(HMM)好讲,简单易懂不好讲。
我想说个更通俗易懂的例子。
我希望我的读者是对这个问题感兴趣的入门者,所以我会多阐述数学思想,少写公式。
霍金曾经说过,你多写一个公式,就会少一半的读者。
还是用最经典的例子,掷骰子。
假设我手里有三个不同的骰子。
第一个骰子是我们平常见的骰子(称这个骰子为D6),6个面,每个面(1,2,3,4,5,6)出现的概率是1/6。
第二个骰子是个四面体(称这个骰子为D4),每个面(1,2,3,4)出现的概率是1/4。
第三个骰子有八个面(称这个骰子为D8),每个面(1,2,3,4,5,6,7,8)出现的概率是1/8。
假设我们开始掷骰子,我们先从三个骰子里挑一个,挑到每一个骰子的概率都是1/3。
然后我们掷骰子,得到一个数字,1,2,3,4,5,6,7,8中的一个。
不停的重复上述过程,我们会得到一串数字,每个数字都是1,2,3,4,5,6,7,8中的一个。
例如我们可能得到这么一串数字(掷骰子10次):1 6 3 5 2 7 3 5 2 4这串数字叫做可见状态链。
但是在隐马尔可夫模型中,我们不仅仅有这么一串可见状态链,还有一串隐含状态链。
在这个例子里,这串隐含状态链就是你用的骰子的序列。
比如,隐含状态链有可能是:D6 D8 D8 D6 D4 D8 D6 D6 D4 D8一般来说,HMM中说到的马尔可夫链其实是指隐含状态链,因为隐含状态(骰子)之间存在转换概率(transition probability)。
在我们这个例子里,D6的下一个状态是D4,D6,D8的概率都是1/3。
D4,D8的下一个状态是D4,D6,D8的转换概率也都一样是1/3。
这样设定是为了最开始容易说清楚,但是我们其实是可以随意设定转换概率的。
比如,我们可以这样定义,D6后面不能接D4,D6后面是D6的概率是0.9,是D8的概率是0.1。
HMM(隐马尔可夫模型)及其应用摘要:隐马尔可夫模型(Hidden Markov Model,HMM)作为一种统计分析模型,创立于20世纪70年代。
80年代得到了传播和发展,成为信号处理的一个重要方向,现已成功地用于语音识别,行为识别,文字识别以及故障诊断等领域。
本文先是简要介绍了HMM的由来和概念,之后重点介绍了3个隐马尔科夫模型的核心问题。
关键词:HMM,三个核心问题HMM的由来1870年,俄国有机化学家Vladimir V. Markovnikov第一次提出马尔可夫模型。
马尔可夫在分析俄国文学家普希金的名著《叶夫盖尼•奥涅金》的文字的过程中,提出了后来被称为马尔可夫框架的思想。
而Baum及其同事则提出了隐马尔可夫模型,这一思想后来在语音识别领域得到了异常成功的应用。
同时,隐马尔可夫模型在“统计语言学习”以及“序列符号识别”(比如DNA序列)等领域也得到了应用。
人们还把隐马尔可夫模型扩展到二维领域,用于光学字符识别。
而其中的解码算法则是由Viterbi和他的同事们发展起来的。
马尔可夫性和马尔可夫链1. 马尔可夫性如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程。
马尔可夫性可用如下式子形象地表示:X(t+1)=f(X(t))2. 马尔可夫链时间和状态都离散的马尔可夫过程称为马尔可夫链。
记作{Xn=X(n), n=0,1,2,…}这是在时间集T1={0,1,2,…}上对离散状态的过程相继观察的结果。
链的状态空间记作I={a1, a2,…}, ai ∈R.条件概率Pij(m, m+n)=P{ Xm+n = aj | Xm = aj }为马氏链在时刻m处于状态ai条件下,在时刻m+n转移到状态aj的转移概率。
3. 转移概率矩阵如下图所示,这是一个转移概率矩阵的例子。
由于链在时刻m从任何一个状态ai出发,到另一时刻m+n,必然转移到a1,a2…,诸状态中的某一个,所以有当与m无关时,称马尔可夫链为齐次马尔可夫链,通常说的马尔可夫链都是指齐次马尔可夫链。
从饮食习惯知天气冷暖——浅谈隐马尔可夫模型1 引言明天的世界只与今天有关,而与昨天无关。
这句话是对马尔可夫模型的一个很好的诠释。
在概率论中,马尔可夫模型是一个非常重要的状态空间随机模型(stochastic state space model)。
该模型假设一个系统或随机变量在下一时刻的状态仅和当前的状态有关,而与任何过去的历史状态都无关,即当前的状态已经包括了预测未来所需的所有信息。
这个特性被称为马尔可夫性质(Markov property),也被称为无记忆性(memorylessness)。
马尔可夫模型由俄罗斯数学家安德雷· 马尔可夫(Андрей Андреевич Марков)提出(就是下面这位帅哥,漂亮的实力派)。
该模型在预测建模方面有着广泛的应用。
近年来,也有越来越多的人将它用在量化投资领域。
根据在时间上以及在状态空间中是否连续,马尔可夫模型又有不同的版本,比如连续的马尔可夫过程(Markov process)和离散的马尔可夫链(Markov chain)。
本文中,为了便于介绍,我们考虑最简单的离散模型,即模型在时间和状态上都是离散的。
时间上离散意味着系统仅在特定的时间点上发生状态的变化(比如每小时或者每天发生一次变化);状态空间上离散意味着系统状态的取值是非连续的。
此外我们假设状态的取值个数是有限的。
离散模型虽然简单,但在本文最后一节可以看出,它在量化投资领域同样有重要的应用价值。
在正常的马尔可夫模型中,系统的状态对于观察者来说是直接可见的,我们关心的是诸如系统在不同时刻处于不同状态的概率这类问题。
遗憾的是,在一些应用中(比如量化投资中的一些问题),我们并不能直接观测到系统的状态——这些状态对我们来说是隐形的。
虽然无法直接观测到状态,但是受这些状态影响的观测量的取值对我们来说是可见的;我们需要透过这些观测量的取值来推测系统所处的状态。
这样的模型称为隐马尔可夫模型(Hidden Markov Models,简称 HMM)。
马尔科夫过程马尔科夫过程可以看做是一个自动机,以一定的概率在各个状态之间跳转。
考虑一个系统,在每个时刻都可能处于N个状态中的一个,N个状态集合是{S1,S2,S3,...S N}。
我们如今用q1,q2,q3,…q n来表示系统在t=1,2,3,…n时刻下的状态。
在t=1时,系统所在的状态q取决于一个初始概率分布PI,PI(S N)表示t=1时系统状态为S N的概率。
马尔科夫模型有两个假设:1. 系统在时刻t的状态只与时刻t-1处的状态相关;〔也称为无后效性〕2. 状态转移概率与时间无关;〔也称为齐次性或时齐性〕第一条详细可以用如下公式表示:P(q t=S j|q t-1=S i,q t-2=S k,…)= P(q t=S j|q t-1=S i)其中,t为大于1的任意数值,S k为任意状态第二个假设那么可以用如下公式表示:P(q t=S j|q t-1=S i)= P(q k=S j|q k-1=S i)其中,k为任意时刻。
下列图是一个马尔科夫过程的样例图:可以把状态转移概率用矩阵A表示,矩阵的行列长度均为状态数目,a ij表示P(S i|S i-1)。
隐马尔科夫过程与马尔科夫相比,隐马尔科夫模型那么是双重随机过程,不仅状态转移之间是个随机事件,状态和输出之间也是一个随机过程,如下列图所示:此图是从别处找来的,可能符号与我之前描绘马尔科夫时不同,相信大家也能理解。
该图分为上下两行,上面那行就是一个马尔科夫转移过程,下面这一行那么是输出,即我们可以观察到的值,如今,我们将上面那行的马尔科夫转移过程中的状态称为隐藏状态,下面的观察到的值称为观察状态,观察状态的集合表示为O={O1,O2,O3,…O M}。
相应的,隐马尔科夫也比马尔科夫多了一个假设,即输出仅与当前状态有关,可以用如下公式表示:P(O1,O2,…,O t|S1,S2,…,S t)=P(O1|S1)*P(O2|S2)*...*P(O t|S t) 其中,O1,O2,…,O t为从时刻1到时刻t的观测状态序列,S1,S2,…,S t那么为隐藏状态序列。
隐马尔可夫模型(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。
该算法在实际应用中具有高效性和准确性。
在实际应用中,隐马尔可夫模型的三个基本问题及相应的算法给我们提供了强大的建模和分析工具。
通过概率计算问题,我们可以计算出观测序列出现的概率;通过学习问题,我们可以从观测序列学习到模型的参数;通过预测问题,我们可以预测出最有可能的状态序列。
模型的表达:隐马尔可夫模型(HMM)可以用五个元素来描述,包括2个状态集合和3个概率矩阵:1. 隐含状态 S这些状态之间满足马尔可夫性质,是马尔可夫模型中实际所隐含的状态。
这些状态通常无法通过直接观测而得到。
(例如S1、S2、S3等等)2. 可观测状态 O在模型中与隐含状态相关联,可通过直接观测而得到。
(例如O1、O2、O3等等,可观测状态的数目不一定要和隐含状态的数目一致。
)3. 初始状态概率矩阵π(隐含状态,初始概率)表示隐含状态在初始时刻t=1的概率矩阵,(例如t=1时,P(S1)=p1、P(S2)=P3、P(S3)=p3,则初始状态概率矩阵π=[ p1 p2 p3 ].4. 隐含状态转移概率矩阵 A。
(隐含状态转隐含状态)描述了HMM模型中各个状态之间的转移概率。
其中Aij = P( Sj | Si ),1≤i,,j≤N.表示在 t 时刻、状态为 Si 的条件下,在 t+1 时刻状态是 Sj 的概率。
5. 观测状态转移概率矩阵 B (英文名为Confusion Matrix,直译为混淆矩阵不太易于从字面理解)。
(隐含状态转观察状态)令N代表隐含状态数目,M代表可观测状态数目,则:Bij = P( Oi | Sj ), 1≤i≤M,1≤j≤N.表示在 t 时刻、隐含状态是 Sj 条件下,观察状态为 Oi 的概率。
总结:一般的,可以用λ=(A,B,π)三元组来简洁的表示一个隐马尔可夫模型。
隐马尔可夫模型实际上是标准马尔可夫模型的扩展,添加了可观测状态集合和这些状态与隐含状态之间的概率关系。
/blog/static/59746327201123111118635/崔晓源翻译我们通常都习惯寻找一个事物在一段时间里的变化规律。
在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等。
一个最适用的例子就是天气的预测。
首先,本文会介绍声称概率模式的系统,用来预测天气的变化然后,我们会分析这样一个系统,我们希望预测的状态是隐藏在表象之后的,并不是我们观察到的现象。
隐马尔可夫模型及Viterbi算法隐马尔可夫模型(HMM,hidden Markov model)是可⽤于标注问题的统计学模型,描述由隐藏的马尔可夫链随机⽣成观测序列的过程,属于⽣成模型。
HMM模型主要⽤于语⾳识别,⾃然语⾔处理,⽣物信息,模式识别等领域。
引⼊ 某天,你的⼥神告诉你说,她放假三天,将要去上海游玩,准备去欢乐⾕、迪⼠尼和外滩(不⼀定三个都会去)。
她呢,会选择在这三个地⽅中的某⼏个逗留并决定是否购物,⽽且每天只待在⼀个地⽅。
根据你对她的了解,知道她去哪个地⽅,仅取决于她去的上⼀个地⽅,且是否购物的概率仅取决于她去的地⽅。
已知她去的三个地⽅的转移概率表如下:欢乐⾕迪⼠尼外滩欢乐⾕0.80.050.15迪⼠尼0.20.60.3外滩0.20.30.5稍微对这个表格做些说明,⽐如第⼀⾏,前⼀天去了欢乐⾕后,第⼆天还待在欢乐⾕的概率为0.8,去迪⼠尼的概率为0.05,去外滩的概率为0.15。
她在每个地⽅的购物概率为:地点购物概率欢乐⾕0.1迪⼠尼0.8外滩0.3 在出发的时候,她跟你说去每个地⽅的可能性相同。
后来,放假回来后,你看了她的朋友圈,发现她的购物情况如下:第⼀天不购物,第⼆三天都购物了。
于是,你很好奇,她这三天都去了哪些地⽅。
怎么样,聪明的你能求解出来吗?HMM的模型参数 接下来,我们将会介绍隐马尔可夫模型(HMM)。
隐马尔可夫模型是关于时序的概率模型,描述由⼀个隐藏的马尔可夫链随机⽣成不可观测的状态随机序列,再由各个状态⽣成⼀个观测⽽产⽣观测随机序列的过程。
隐藏的马尔可夫链随机⽣成的状态的序列,称为状态序列;每个状态⽣成⼀个观测,⽽由此产⽣的观测的随机序列,称为观测序列。
序列的每⼀个位置⼜可以看作是⼀个时刻。
隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。
隐马尔可夫模型的形式定义如下: 设Q是所有可能的状态的集合,V是所有可能的观测的集合,也就是说,Q是不可见的,⽽V是可见的,是我们观测到的可能结果。