http://blog.csdn.net/pipisorry/article/details/46618991
任何一个可以用这种方式描述的系统都是一个马尔科夫过程。
[马尔科夫模型 Markov model ]
1、马尔科夫过程的局限性
在某些情况下,我们希望找到的模式用马尔科夫过程描述还显得不充分。回顾一下天气那个例子,一个隐士也许不能够直接获取到天气的观察情况,但是他有一些水藻。民间传说告诉我们水藻的状态与天气状态有一定的概率关系——天气和水藻的状态是紧密相关的。在这个例子中我们有两组状态,观察的状态(水藻的状态)和隐藏的状态(天气的状态)。我们希望为隐士设计一种算法,在不能够直接观察天气的情况下,通过水藻和马尔科夫假设来预测天气。
一个更实际的问题是语音识别,我们听到的声音是来自于声带、喉咙大小、舌头位置以及其他一些东西的组合结果。所有这些因素相互作用产生一个单词的声音,一套语音识别系统检测的声音就是来自于个人发音时身体内部物理变化所引起的不断改变的声音。
一些语音识别装置工作的原理是将内部的语音产出看作是隐藏的状态,而将声音结果作为一系列观察的状态,这些由语音过程生成并且最好的近似了实际(隐藏)的状态。在这两个例子中,需要着重指出的是,隐藏状态的数目与观察状态的数目可以是不同的。一个包含三个状态的天气系统(晴天、多云、雨天)中,可以观察到4个等级的海藻湿润情况(干、稍干、潮湿、湿润);纯粹的语音可以由80个音素描述,而身体的发音系统会产生出不同数目的声音,或者比80多,或者比80少。
在这种情况下,观察到的状态序列与隐藏过程有一定的概率关系。我们使用隐马尔科夫模型对这样的过程建模,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,以及一个与隐藏状态某种程度相关的可观察到的状态集合。
[隐马尔可夫模型HMM]
皮皮blog
马尔科夫链的节点是状态,边是转移概率,是template CPD(条件概率分布)的一种有向状态转移表达。马尔科夫过程可以看做是一个自动机,以一定的概率在各个状态之间跳转。
考虑一个系统,在每个时刻都可能处于N个状态中的一个,N个状态集合是 {S1,S2,S3,...SN}。我们现在用q1,q2,q3,…qn来表示系统在t=1,2,3,…n时刻下的状态。Note: 每个状态都是一个向量分布,即在N个状态集合是 {S1,S2,S3,...SN}上的概率分布。
处理顺序数据的最简单的方式是忽略顺序的性质,将观测看做独立同分布,对应于图13.2所示的图。然而,这种方法无法利用数据中的顺序模式,例如序列中距离较近的观测之间的相关性。
为了在概率模型中表示这种效果,我们需要放松独立同分布的假设。完成这件事的一种最简单的方式是考虑马尔科夫模型( Markov model )。
马尔科夫模型( Markov model )表示观测序列的联合概率分布
一阶马尔科夫链( first-order Markov chain )模型中, N 次观测的序列的联合概率分布为
根据 d -划分的性质,给定时刻 n 之前的所有观测,我们看到观测 x n 的条件概率分布为
在这种模型的大部分应用中,条件概率分布 p(x n | x n−1 ) 被限制为相等的,对应于静止时间序列(数据会随着时间发生变化,但是生成数据的概率分布保持不变)的假设。这样,这个模型被称为同质马尔科夫链( homogeneous Markov chain )。例如,如果条件概率分布依赖于可调节的参数(参数的值可以从训练数据中确定),那么链中所有的条件概率分布会共享相同的参数值。
二阶马尔科夫链
假设观测是具有 K 个状态的离散变量,那么一阶马尔科夫链中的条件概率分布 p(x n | x n−1 ) 由 K − 1 个参数指定,每个参数都对应于 x n−1 的 K 个状态,因此参数的总数为 K(K − 1) 。
现在假设我们将模型推广到 M 阶马尔科夫链,从而联合概率分布由条件概率分布 p(x n | x n−M , . . . , x n−1 ) 构建。如果变量是离散变量,且条件概率分布使用一般的条件概率表的形式表示,那么这种模型中参数的数量为 K^M * (K − 1) 。
对于连续变量来说,我们可以使用线性高斯条件概率分布,其中每个结点都是一个高斯概率分布,均值是父结点的一个线性函数。这被称为自回归( autoregressive )模型或者 AR 模型( Box et al., 1994; Thiesson et al., 2004 )。另一种方法是为 p(x n | x n−M , . . . , x n−1 ) 使用参数化的模型,例如神经网络。这种方法有时被称为抽头延迟线( tapped delay line ),因为它对应于存储(延迟)观测变量的前面 M 个值来预测下一个值。这样,参数的数量远远小于一个一般的模型(例如此时参数的数量可能随着 M 线性增长),虽然这样做会使得条件概率分布被限制在一个特定的类别中。
[PRML]
某小皮
这里只讨论一阶同质的马尔科夫过程。
(一阶同质)马尔科夫模型有两个假设:
1. 系统在时刻t的状态只与时刻t-1处的状态相关;(也称为无后效性)
2. 状态转移概率与时间无关;(也称为齐次性或时齐性)
第一条具体可以用如下公式表示:
P(qt=Sj|qt-1=Si,qt-2=Sk,…)= P(qt=Sj|qt-1=Si)
其中,t为大于1的任意数值,Sk为任意状态
第二个假设则可以用如下公式表示:
P(qt=Sj|qt-1=Si)= P(qk=Sj|qk-1=Si)
其中,k为任意时刻。即任意时刻两个状态之间的转移概率是一样的,整个转移概率矩阵在所有时间步之间是共享参数的。
Note: For you language folks, this is precisely the same idea as modeling word sequences using a bigram model, where here we have states z instead of having words w.一阶马氏链思想同词序列的bigram模型,只是将词w换成了状态z。
马氏链的数学定义很简单
也就是状态转移的概率只依赖于前一个状态,Markov Chain 体现的是状态空间的转换关系,下一个状态只决定与当前的状态(可以联想网页爬虫原理,根据当前页面的超链接访问下一个网页)。社会学家经常把人按其经济状况分成3类:下层(lower-class)、中层(middle-class)、上层(upper-class),我们用1,2,3 分别代表这三个阶层。社会学家们发现决定一个人的收入阶层的最重要的因素就是其父母的收入阶层。如果一个人的收入属于下层类别,那么他的孩子属于下层收入的概率是 0.65, 属于中层收入的概率是 0.28, 属于上层收入的概率是 0.07。事实上,从父代到子代,收入阶层的变化的转移概率如下
使用矩阵的表示方式,转移概率矩阵记为
假设当前这一代人处在下层、中层、上层的人的比例是概率分布向量 ,那么他们的子女的分布比例将是, 他们的孙子代的分布比例将是 , ……, 第代子孙的收入分布比例将是。
假设初始概率分布为, 则我们可以计算前代人的分布状况如下。我们发现从第7代人开始,这个分布就稳定不变了,这个是偶然的吗?我们换一个初始概率分布 试试看,继续计算前代人的分布状况如下
我们发现,到第9代人的时候, 分布又收敛了,事实上,在这个问题中,从任意初始概率分布开始都会收敛到这个上面这个稳定的结果。最为奇特的是,两次给定不同的初始概率分布,最终都收敛到概率分布, 也就是说收敛的行为和初始概率分布 无关。这说明这个收敛行为主要是由概率转移矩阵决定的。我们计算一下
我们发现,当 足够大的时候,这个矩阵的每一行都是稳定地收敛到 这个概率分布。自然的,这个收敛现象并非是我们这个马氏链独有的,而是绝大多数马氏链的共同行为。
关于马氏链的收敛我们有如下漂亮的定理:
马氏链定理: 如果一个非周期马氏链具有转移概率矩阵,且它的任何两个状态是连通的,那么 存在且与无关,记, 我们有
其中,称为马氏链的平稳分布。
所有的 MCMC(Markov Chain Monte Carlo) 方法都是以这个定理作为理论基础的。 定理的证明相对复杂。
某小皮
从初始概率分布 出发,我们在马氏链上做状态转移,记Xi的概率分布为πi, 则有
所以 Xn,Xn+1,Xn+2,⋯∼π(x) 都是同分布的随机变量,当然他们并不独立。如果我们从一个具体的初始状态 x0 开始,沿着马氏链按照概率转移矩阵做跳转,那么我们得到一个转移序列x0,x1,x2,⋯xn,xn+1⋯, 由于马氏链的收敛行为,xn,xn+1,⋯ 都将是平稳分布π(x) 的样本。
[顺序数据:状态空间模型 ]
from:http://blog.csdn.net/pipisorry/article/details/46618991
ref:
==================================================================
分隔符
==================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在之前介绍贝叶斯网络的博文中,我们已经讨论过概率图模型(PGM)的概念了。Russell等在文献【1】中指出:“在统计学中,图模型这个术语指包含贝叶斯网络在内的比较宽泛的一类数据结构。” 维基百科中更准确地给出了PGM的定义:“A graphical model or probabilistic graphical model is a probabilistic model for which a graph expresses the conditional dependence structure between random variables. ” 如果你已经掌握了贝叶斯网络,那么你一定不会对PGM的概念感到陌生。本文将要向你介绍另外一种类型的PGM,即隐马尔可夫模型(HMM,Hidden Markov Model)。更准确地说,HMM是一种特殊的贝叶斯网络。
随机过程(Stochastic Process)是一连串随机事件动态关系的定量描述。如果用更为严谨的数学语言来描述,则有:设对每一个 t∈Tt∈T,X(t,w)X(t,w) 是一个随机变量,称随机变量族 XT={X(t,w),t∈T}XT={X(t,w),t∈T} 为一随机过程(或随机函数),其中 T∈RT∈R 称为指标集,RR 是实数集。w∈Ωw∈Ω,ΩΩ为样本空间。用映射来表示XTXT,
参数 t∈Tt∈T 一般表示时间。当 TT 取可列集时,通常称 XTXT 为随机序列。XT (t∈T)XT (t∈T) 可能取值的全体集合称为状态空间,状态空间中的元素称为状态。
马尔科夫过程(Markov Process)是本文中我们所要关注的一种随机过程。粗略地说,一个随机过程,若已知现在的 tt 状态 XtXt, 那么将来状态 Xu (u>t)Xu (u>t) 取值(或取某些状态)的概率与过去的状态Xs (s>t)Xs (s>t) 取值无关;或者更简单地说,已知现在、将来与过去无关(条件独立),则称此过程为马尔科夫过程。
同样,我们给出一个精确的数学定义如下:若随机过程{Xt,t∈T}{Xt,t∈T}对任意 t1<t2<…<tn<tt1
在前面给出的贝叶斯网络例子中,每一个随机变量都有唯一的一个固定取值。当我们观察到一个结果或状态时(例如Mary给你打电话),我们的任务是据此推断此时发生地震的概率有多大。而在此过程中,Mary是否给你打过电话这个状态并不会改变,而地震是否已经发生也不会改变。这就说明,我们其实是在一个静态的世界中来进行推理的。
但是我们现在要研究的HMM,其本质则是基于一种动态的情况来进行推理,或者说是根据历史来进行推理。假设要为一个高血压病人提供治疗方案,医生每天为他量一次血压,并根据这个血压的测量值调配用药的剂量。显然,一个人当前的血压情况是跟他过去一段时间里的身体情况、治疗方案,饮食起居等多种因素息息相关的,而当前的血压测量值相等于是对他当时身体情况的一个“估计”,而医生当天开具的处方应该是基于当前血压测量值及过往一段时间里病人的多种情况综合考虑后的结果。为了根据历史情况评价当前状态,并且预测治疗方案的结果,我们就必须对这些动态因素建立数学模型。
而隐马尔科夫模型就是解决这类问题时最常用的一种数学模型,简单来说,HMM是用单一离散随机变量描述过程状态的时序概率模型。HMM的基本模型可用下图来表示,其中涂有阴影的圆圈 yt−2,yt−1,ytyt−2,yt−1,yt 相当于是观测变量,空白圆圈 xt−2,xt−1,xtxt−2,xt−1,xt 相当于是隐变量。回到刚刚提及的高血压治疗的例子,你所观测到的状态(例如血压计的读数)相当于是对其真实状态(即病人的身体情况)的一种估计(因为观测的过程中必然存在噪声),用数学语言来表述就是P(yt|xt)P(yt|xt),这就是模型中的测量模型或测量概率(Measurement Probability)。另外一方面,当前的(真实)状态(即病人的实际身体状况)应该与其上一个观测状态相关,即存在这样的一个分布P(xt|xt−1)P(xt|xt−1),这就是模型中的转移模型或转移概率(Transition Probability)。当然,HMM中隐变量必须都是离散的,观测变量并无特殊要求。
再结合HMM的基本图模型(即上图),我们就会得出HMM模型中的两个重要概率的表达式:
现在我们已经了解了HMM的基本结构,接下来不妨通过一个实际的例子来考察一下,HMM的转移概率和测量概率到底是什么样的。下图给出了一个用于表示股市动态的概率图模型,更具体的说这是一个马尔科夫模型(Markov Model),因为该图并未涉及隐状态信息。根据之前(以贝叶斯网络为例的)PGM学习,读者应该可以看懂改图所要展示的信息。例如,标记为 1 的圆圈表示的是当前股市正处于牛市,由此出发引出一条指向自身,权值为0.6的箭头,这表示股市(下一时刻)继续为牛市的概率为0.6;由标记为 1 的圆圈引出的一条指向标记为 2 的圆圈的箭头,其权值为0.2,这表示股市(下一时刻)转入熊市的概率是0.2;最后,由标记为 1 的圆圈引出的一条指向标记为 3 的圆圈的箭头,其权值为0.2,这表示股市(下一时刻)保持不变的概率是0.2。显然,从同一状态引出的所有概率之和必须等于1。
如果马尔科夫模型中有 kk 个状态,那么对应的状态转移矩阵的大小就是 k×kk×k。其中第 mm 行,第 nn列所给出的值就是 P(xt=n|xt−1=m)P(xt=n|xt−1=m)。也就给定状态 mm 的情况下,下一时刻转换到状态 nn 的概率。例如,第2行,第1列的值为 0.5,它的意思就是如果当前状态是标记为 2 的圆圈(熊市),那么下一时刻转向标记为 1 的圆圈(牛市)的概率是 0.5。而且,矩阵中,每一行的所有值之和必须等于1。
至此,我们已经知道可以用一个矩阵 AA 来代表 P(xt|xt−1)P(xt|xt−1),那又该如何表示 P(yt|xt)P(yt|xt) 呢?当然,由于P(yt|xt)P(yt|xt) 可能是连续的,也可能是离散的,所以不能一言以蔽之。为了简化,我们当前先仅考虑离散的情况。当引入 P(yt|xt)P(yt|xt) 之后,我们才真正得到了一个隐马尔科夫模型,上面我们所说的标记为1、2 和 3 的(分别代表牛市、熊市和平稳)三个状态现在就变成了隐状态。当隐状态给定后,股市的表现可能有 l=3l=3 种情况,即当前股市只能处于“上涨”,“下跌”,或者“不变”三种状态之一。完整的HMM如下图所示。
再次强调,只有当测量概率是离散的情况下,我们才能用一个矩阵来表示P(yt|xt)P(yt|xt) 。对于连续的情况,比如我们认为观测变量的取值符合高斯分布,也即是概率 P(yt|xt)P(yt|xt) 的分布符合高斯分布,那么应该有多少个高斯分布呢?显然有多少个隐状态(例如 kk 个),就应该有多少个高斯分布。那么矩阵 BB 就应该变成了由 kk 个高斯分布的参数,即 σ1,μ1,σ2,μ2,⋯,σk,μkσ1,μ1,σ2,μ2,⋯,σk,μk,组成的一个集合。
之前的文章里我们谈过,人类学习的任务是从资料中获得知识,而机器学习的任务是让计算机从数据中获得模型。那模型又是什么呢?回想一下机器学习中比较基础的线性回归模型 y=∑iwixiy=∑iwixi,我们最终是希望计算机能够从已有的数据中或者一组最合适的参数 wiwi,因为一旦 wiwi 被确定,那么线性回归的模型也就确定了。同样,面对HMM,我们最终的目的也是要获得能够用来确定(数学)模型的各个参数。通过前面的讨论,我们也知道了定义一个HMM,应该包括矩阵 AA 和 矩阵 BB (如果测量概率是离散情况的话),那只有这些参数能够足以定义个HMM呢?
要回答这个问题,我们不妨来思考一下这样一个问题。假如我们现在已经得到了 矩阵 AA 和 矩阵 BB ,那么我们能否求出下面这个序列的概率 P(y1=上涨,y2=上涨,y3=下跌)P(y1=上涨,y2=上涨,y3=下跌)。注意对于这样一个序列,我们并不知道隐状态的情况,所以采用贝叶斯网络中曾经用过的方法,设法把隐状态加进去,在通过积分的方法将未知的隐状态积分积掉。于是有
于是我们知道,要确定一个HMM模型,我们需要知道三个参数,我们将其记作 λ(A, B, π)λ(A, B, π)。
在后续的文章中我们会进一步探讨,如何让机器能够自己学到上面这些参数,以及HMM的具体应用