马尔可夫模型介绍(从零开始)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

马尔可夫模型介绍(从零开始)

(一):定义及简介:

介绍(introduction)

通常我们总是对寻找某一段时间上的模式感兴趣,这些模式可能出现在很多领域:一个人在使用电脑的时候使用的命令的序列模式;一句话中的单词的序列;口语中的音素序列。总之能产生一系列事件的地方都能产生有用的模式。

考虑一个最简单的情况:有人(柯南?)试图从一块海藻来推断天气的情况。一些民间的传说认为“soggy”的海藻意味着潮湿(wet)的天气,“dry”的海藻预示着晴朗(sun)。如果海藻处于中间状态“damp”,那就无法确定了。但是,天气的情况不可能严格的按照海藻的状态来变化,所以我们可以说在一定程度上可能是雨天或是晴天。另一个有价值的信息是之前某些天的天气情况,结合昨天的天气和可以观察到的海藻的状态,我们就可以为今天的天气做一个较好的预报。

这是在我们这个系列的介绍中一个非常典型的系统。

∙首先我们介绍一个可以随时间产生概率性模型的系统,例如天气在晴天或者雨天之间变动。∙接下来我们试图去预言我们所不能观察到的"隐形"的系统状态,在上面的例子中,能被观察到的序列就是海藻的状态吗,隐形的系统就是天气情况

∙然后我们看一下关于我们这个模型的一些问题,在上面那个例子中,也许我们想知道

1. 如果我们观察一个星期每一天的海藻的状态,我们是否能知相应的其天气情况

2. 如果给出一个海藻状态的序列,我们是否能判断是冬天还是夏天?我们假设,如果海藻干(d

ry)了一段时间,那就意味着是夏天如果海藻潮湿(soggy)了一段时间,那可能就是冬天。

(二):生成模式(Generating Patterns)

∙确定的模式(Deterministic Patterns)

考虑交通灯的例子,一个序列可能是红-红/橙-绿-橙-红。这个序列可以画成一个状态机,不同的状态按照这个状态机互相交替

我们可以注意到,每一个状态都只依赖于此前的状态,如果当前的是绿灯,那么接下来就是橙灯,这就是一个确定型的系统。确定型的系统更容易理解和分析,只要这些状态转移都是已知的。

不确定的模式(Non-Deterministic Patterns)

为了让之前那个天气的例子更贴近现实,我们可以添加一个状态-多云。和交通灯的例子不同,我们不能得到一个确定的状态转移系统,但是我们还是希望能得到一个天气的模式。

一种办法就是假设这个模型的每个状态都只依赖于之前的状态,这个假设被称为马尔科夫假设,这个假设可以大大的简化这个问题。显然,这个假设可能是一个非常糟糕的假设,导致很多重要的信息都丢失了。

当涉及到天气的时候,马尔科夫假设假设如果我们知道之间一些天的天气的信息,不考虑风力、气压等因素,那么我们就能预言今天的天气。当然,和其他许多例子一样,这个列子也是不合实际的。但是,这样一个简化的系统可以有利于我们的分析,所以我们通常接受这样的假设,因为我们知道这样的系统能让我们获得一些有用的信息,尽管不是十分准确的。

一个马尔科夫过程就是指过程中的每个状态的转移只依赖于之前的n个状态,这个过程被称为1个n阶的模型,其中n是影响转移的状态的数目。最简单的马尔科夫过程就是一阶过程,每一个状态的转移只依赖于其之间的那一个状态。注意这和确定型的系统不一样,因为这种装因是有概率的,而不是确定的。下面这个图展示了天气这个例子中所有可能的一阶转移:

注意一个含有M个状态的一阶过程有M的平方个状态转移。每一个转移的概率叫做状态转移概率(state transition probability),就是从一个状态转移到另一个状态的概率。这所

间的变化而变化,这又是一个不现实但很重要的假设。下面就是一个状态转移矩阵的列子:为了初始化这样一个系统,我们需要一个初始的概率向量:

是一个简单的一阶马尔科夫过程,并且他们两两之间都可以相互转换。

来说,用λ={ π, A, B} 表示HMM参数。

被分别观察成集中不同的可以观察的状态的概率,在天气的例子中,这个矩阵如下图:

(四):隐马尔科夫模型(Hidden Markov Models)

定义:隐马尔科夫模型可以用一个三元组(π,A,B)来定义:

1. π 表示初始状态概率的向量

2. A =(aij)(隐藏状态的)转移矩阵P(Xit|Xj(t-1))t-1时刻是j而t时刻是i的概率

3. B =(bij)混淆矩阵P(Yi|Xj)在某个时刻因隐藏状态为Xj而观察状态为Yi的概率

值得注意的是,在状态转移矩阵中的每个概率都是时间无关的,也就是说我们假设这个概率是固定的,不随时间变化。当然,这是马尔科夫模型最不切合实际的一个假设。

隐马尔科夫模型的使用

如果一个模型可以被描述成一个隐马尔科夫模型,有三个问题可以得到解决。

前两个是模式识别的问题:1)根据隐马尔科夫模型得到一个可观察状态序列的概率(评价);

2)找到一个隐藏状态的序列使得这个序列产生一个可观察状态序列的概率最大(解码)。

第三个问题就是根据一个可以观察到的状态序列集产生一个隐马尔科夫模型(学习)。

1.评价

假设我们有很多隐马尔科夫模型(也就是说一个三元组的集合)描述不同的系统和一个可观察状态序列集。我们也许想知道哪一个隐马尔科夫模型最可能产生某个可观察状态序列。比如说,我们也许有一个海藻的“Summer”模型和一个“Winter”模型,因为海藻在夏天和冬天的状态应该是不同的,我们希望根据一个可观察状态(海藻的潮湿与否)序列来判断现在是夏天还是冬天。

我们可以使用前向算法来计算在某个特定的HMM下一个可观察序列的概率,然后据此找到最可能的模型。

这种类型的应用通常出现在语音设别中,通常我们会使用很多HMM,每一个针对一个特别的单词。一个可观察状态的序列是从一个可以听到的单词向前得到的,然后这个单词就可以通过找到满足这个可观察状态序列的最大概率的HMM来识别。

2.解码

根绝可观察状态的序列找到一个最可能的隐藏状态序列。

和上面一个问题相似的并且更有趣的是根据可观察序列找到隐藏序列。在很多情况下,我们队隐藏状态更有兴趣,因为其包含了一些不能被直接观察到的有价值的信息。比如说在海藻和天气的例子中,一个隐居的人只能看到海藻的状态,但是他想知道天气的状态。这时候我们就可以使用Viterbi算法来根据可观察序列得到最优可能的隐藏状态的序列,当然前提是已经有一个HMM。

相关文档
最新文档