HMM系列之三:Viterbi Algorithm

http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/viterbi_algorithm/s1_pg1.html

Finding the most probable sequence of hidden states

给出一个HMM,以及某个观测序列,你可能想得到概率最大的那个隐式序列 sequence of hidden states.

1. Exhaustive search for a solution

可以采用执行网格 Execution trellis 来对状态和 观测 observations 的关系可视化:

通过列出所有可能的隐式序列,并对每个序列计算以下概率,可以找到概率最大的隐式序列。

例如对于执行网格中的观测序列,可能的隐式序列概率:

这种方法很直观,可是计算量很大。与 forward algorithm 类似,我们也可以利用概率的时间不变性 time invariance of probabilities 来降低计算复杂度。

2. Reducint complexity using recursion

考虑通过递归的方法来找出最有可能的隐式序列。首先定义

(以下简称 Y),Y是到达某个中间状态的概率。

Partial probability Y 和在 forward algorithm中计算的不同,因为 Y 代表了在时间 t 到达某个状态的最有可能的路径的概率,而不是全部。

2a. Partial probabilities (Y) 和 Partial best paths

对于上述网格,每个 中间 和 终结 状态 (intermediate and terminating state),都有一个最有可能的路径到达该状态。例如:t=3 时,三个状态的最可能路径可能是这样的:

这些路径成为 partial best paths. 每个 Partial best paths 都有一个概率,称为 partial probability Y。

Y(i,t) 是所有在时间 t 到达状态 i 的所有序列中的最大概率,partial best path 是有最大概率的序列。

特别地,t = T 时,每个状态都有一个 partial probability 以及一个 partial best path。通过选择拥有最大的 partial probability 的路径,可以找出全局的最优路径 overall best path.

2b. Calculating Y‘s at time t=1

当 t = 1时,到达某状态的最可能路径是并不存在;不过可以使用 t=1时,系统在该状态,且观察状态在 k1的概率来计算:

这和 forward algorithm 中的计算方法是一样的。

2c. Calculating Y‘s at time t > 1

计算时间 t 到达状态 X 的最可能路径,这个路径需要在时间 t-1 通过状态 A,B 或 C中的某一个。因此到达 X 的最可能路径是其中的一个:

我们希望找出以 AX, BX, CX 结尾的,拥有最大概率的序列。

Markov 假设当前状态的概率只依赖于前 n 个状态的,因此对于 first order markov assumption, X 在某序列发生的概率只依赖于前一个状态。因此以 AX 结尾的,最可能路径的概率是:

因此到 X 的最可能路径的概率是:

其中第一项是由 Y 在 t-1 时刻给出的,第二项是由 transition probabilities 给出的,第三项是由 observation probabilities 给出的。

将以上的公式一般化,可以得到在时间 t 到达状态 i 的 partial best path,且观测状态是 kt 的概率是:

2d. Back pointers, F‘s

在每个中间和终结状态 (intermediate and end state),我们都可以得到 partial probabilities, Y(i,t)。然而,我们的目标是在给定观测序列的情况下,找出最可能路径。因此我们需要某种记录下 partial best paths 的方式。

在计算 partial probability 的过程中,Y 在时间 t 的值,我们只需要知道 Y 在 t-1 时刻的值。在计算了这个 partial probability 的情况下,可以记录下是由哪一个状态产生的 Y(i,t) 的。这种记录方法通过为每个状态保持一个 back pointer F 来实现, F 指向上一个时刻产生当前 Y(i,t) 的那个状态。

注意到这个表达式是从 Y 的上一个状态的值以及 transition probabilities 得到的,并不需要包含 observation probability (和计算 Y 是不一样的)。这是因为我们希望 F 可以解决 “通过那个路径最优可能到我所在的这个状态。”这个问题和 hidden states 有关,因由于观测产生的 confusing factors 可以忽略。

2e. Advantage of the approach

采用 Viterbi algorithm 对观测序列进行解码,有两个优势:

1. 计算复杂度降低了;

2. Viterbi algorithm 有很好的性质,可以在整个观测序列的基础上提供最好的解释。

另一种可以用来求得 执行序列的方法是:

其中,

这种方法可能出现偏离正确答案的情况。

然而 Viterbi algorithm 会考虑整个观测序列,然后通过 F pointers (指针) 回溯 backtracking,找出最可能路径。

3. Section Summary

Viterbi algorithm 提供了一种计算方便的分析 HMM观测序列的方法,找出最可能序列。算法通过为每个节点计算 Partial Probability,同时使用一个 back-pointer F 指向如何到达该节点。 在完成计算后,就可以通过 后向指针 找到整个路径。

Definition

Viterbi algorithm definition

1. Formal definition of algorithm

对于 i = 1,。。。, n,

通过 初始隐式状态 (initial hidden state) 的概率以及观测概率 observation probabilities 可以计算 t=1 时的 partial probabilities.

对于 t=2,...,T,i=1,..., n,

因此可以得到 到下一个状态的最可能路径,并记录下是如何到达该状态的。

记录了在 t=T 时刻哪个状态是最可能的。

对于 t=T-1, ... , 1,

可以回溯得到整个最可能的路径。

2. Calculating individual Y‘s and F‘s

这里的计算方法和 forward algorithm 中的计算方法类似,不同之处在于 forward algorithm 中采用的是 summation 运算,而这里采用的是 max 运算。 在是因为 forward algorithm 是计算到达某个状态的总概率,而这里计算的是最大概率。

时间: 2024-12-15 07:37:03

HMM系列之三:Viterbi Algorithm的相关文章

HMM系列之四:Forward-Backward Algorithm and Summary

Forward-Backward Algorithm 与HMM相关的有用的问题,往往是 Evaluation 和 Decoding,taeny可以评测一个模型的相对可用性,或者估计某个模型实际上在做什么.这两种做法都依赖于 HMM 参数的先验知识—— the state transition matrix, the observation matrix, 以及 the π vector. 在很多情况下这些确实难以获得的,这就是 learning problem. Forward-backward

HMM 系列之一:Introduction

转自:http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html Introduction 经常,我们希望找出在一段时间里经常出现的一些模式,例如一个人经常使用的命令,句子里的词组序列,语音中的语音序列. 本系列文章包含三部分: 1.介绍概率模式系统: 2.预测的系统与观察的系统不同: 3.考察能够通过建模的系统解决的问题,例如天气预测. http://www.comp.leeds.ac.uk/roger/Hid

大数据之道 HMM系列<二>(成长)

一:HMM解码问题 (1)编程深处无非就是算法和结构,以及各种架构和版本的管理(如Git管理),因此作为程序员算法这一关是绕不过去的: (2)关于算法,个人比较崇尚的一本书是<算法导论>和ACM实战系类的算法培训: (3)对于自然语言处理领域或者部分机械学习领域的算法,HMM模型是非常经典的算法之一,非常适合初学者学习和研究: (4)HMM模型μ=(A,B,π),的状态是不可见的,我们看到的仅仅是状态表现出来的观察值和状态概率函数. 二:HMM简介(u = {N,M,A,B,pai} ---&

SCCM 2012 R2实战系列之三:独立主站点部署

3.1 SCCM 2012 R2主站点的安装 SCCM 2012 R2跟以前的SCCM 2007不同的是多了一个管理中心站点的角色, 管理中心站点主要负责SCCM管理控制和报表查看. 主站点跟以往的SCCM 2007主站点功能一样,具备软件分发.系统部署等主要功能,一个管理中心站点下可以有多个主站点,主站点的关系可以是并列的. 在SCCM服务器中放入SCCM2012的安装光盘,以域管理员身份登录.如下图所示,在安装光盘的smssetup\bin\X64目录下找到extadsch.exe,双击运行

【iOS与EV3混合机器人编程系列之三】编写EV3 Port Viewer 应用监测EV3端口数据

在前两篇文章中,我们对iOS与EV3混合机器人编程做了一个基本的设想,并且介绍了要完成项目所需的软硬件准备和知识准备. 那么在今天这一篇文章中,我们将直接真正开始项目实践. ==第一个项目: EV3 Port Viewer== 项目目的:在iOS设备上通过WiFi连接EV3并且读取EV3每个端口的数据. 大家可以一周之后在App Store上搜索EV3 Port Viewer,那么我已经做了一个范例App发布了,正在审核中 应用的基本使用要求:将EV3和iPhone同时连接到同一个WiFi网络中

Sql Server来龙去脉系列之三 查询过程跟踪

我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更新.CPU占用过高等,跟踪这些状态是非常有用地. 本章节覆盖了事件系统的关键区域:触发器.事件通知器.改变跟踪.SQL跟踪.扩展事件等.这些事件都有一个相似目的:响应或者记录发生的事件.但每一中事件的工作方式又不一样. 基础:触发器和事件通知器 触发器非常多,Data Manipulation La

完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三

手把手叫你玩转网络编程系列之三    完毕port(Completion Port)具体解释                                                              ----- By PiggyXP(小猪) 前 言 本系列里完毕port的代码在两年前就已经写好了,可是因为许久没有写东西了,不知该怎样提笔,所以这篇文档总是在酝酿之中--酝酿了两年之后,最终决定開始动笔了,但愿还不算晚-.. 这篇文档我很具体而且图文并茂的介绍了关于网络编程模型中完毕

TCP/IP网络编程系列之三

TCP/IP网络编程系列之三-地址族与数据序列 分配给套接字的IP地址和端口 IP是Internet Protocol (网络协议)的简写,是为首发网络数据而分配给计算机的值.端口号并非赋予计算机值,而是为了区分程序中创建的套接字而分配给套接字的序号. 网络地址 网络地址分为IPV4和IPV6,分别你别为4个字节地址簇和6个字节地址簇.IPV4标准的4个字节的地址分为网络地址和主机地址,且分为A.B.C.D.E 等类型.一般很少用到E类型.如下图所示:net-id指网络ID,host-id指主机

Ajax系列之三:UpdatePanel

UpdatePanel控件也是Ajax里用得最多的控件之一,UpdatePanel控件是用来局部更新网页上的内容,网页上要局部更新的内容必须放在UpdatePanel控件里,他必须和上一次说的ScriptManager控件一起使用.现在来看UpdatePanel的属性 UpdatePanel重要的属性如下: 属性 说明 ChildrenAsTriggers 当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新. R