HMM系列之二:Forward Algorithm

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

Section 1

Finding the probability of an observed sequence

1. Exhaustive search for solution

给定HMM,要找出 observed sequence 的概率。

在 weather model 中,我们有一个 HMM 描述了 weather 以及 weather 和 seaweed states 的关系。如果观察到的连续 3 天,seaweed 状态是 (dry, damp, soggy),则可以将 observations 和 hidden states 的关系绘制成格子性质 trellis:

相邻的 column 列之间的概率是由 transition matrix 确定的,每个 column 下边的 observation 在不同的 hidden states (也就是weather)下的概率是由 confusion matrix 决定的。

为了计算 Pr(dry, damp, soggy),一个方法是:

Pr(dry,damp,soggy | HMM) = Pr(dry,damp,soggy | sunny,sunny,sunny) + Pr(dry,damp,soggy | sunny,sunny ,cloudy) + Pr(dry,damp,soggy | sunny,sunny ,rainy) + . . . . Pr(dry,damp,soggy | rainy,rainy ,rainy)

这里的计算相当麻烦,可以利用 概率的时间不变性(time invariance of the probabilities) 进行简化。

2. Reduction of compleity using recursion

假定 T-long observed sequence 是

2a. Partial Probabilities, (a‘s  alpha‘s)

到达每个中间状态的概率,是所有路径的概率的和。

例如:

at(j) : partial probability of state j at time t

at(j) = Pr(observation | hiden state is j) * Pr(all paths to state j at time t)

最后一个观测 (observation) 代表了通过所有可能的路径到达这些状态的概率,对于以上例子,final partial probabilities 计算如下:

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

t = 1 时,没有到这个状态的路径,因此 Pr(state | t = 1) = π(state),因此

初始状态处于 j 的概率依赖于 状态 j 的概率,以及观察到的状态的概率。

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

假定第一个状态是已知的,考虑第二项 Pr(all paths to state j at time t)。这一项可以通过计算每个路径的概率,然后再加和。

路径的数目随着观察序列的增长呈指数增长,可以通过 at-1来进行计算,也就是:

2d. Reduction of computational complexity

对于一个长度为 T 的观测序列,它的 HMM 有 n 个 hidden states, l=(π, A, B)。

遍历的方法,复杂度是指数级,然而通过 forward algorithm,利用上一步计算的结果计算一个新的值,期复杂度是 T的线形级别。

Section 2

Forward algorithm definition

使用 forward algorithm 来计算一个 T 长度的观测序列的概率:

y 代表 observable set 中的元素。

中间的概率可以递归的采用 a1(j) 来算出。

对于t > 1的情况,可以递归求出:

最终所有 partial probabilities 的概率之和给出了观测序列的概率

对于天气的例子,t=2时,a对于 cloudy 状态的概率计算如下:

时间: 2024-10-21 01:53:45

HMM系列之二:Forward Algorithm的相关文章

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 可以采用执行网格

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系列<二>(成长)

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

数学之美——HMM模型(二)解码和Forward算法

上一篇讨论了HMM的基本概念和一些性质,HMM在现实中还是比较常见的,因此也带来一了一系列的HMM应用问题.HMM应用主要面向三个方面:预测.解码和学习.这篇主要讨论预测. 简单来说,预测就是给定HMM,和一个观察得到的可观察状态序列,求出通过HMM得到这个序列的概率是多少,这也是一般机器学习等领域中比较常见的应用,得到一个模型后我们当然是希望通过这个模型来得到一些预测的结果.这个也是HMM应用比较基本比较简单的一个. 首先对于给定的HMM和观察序列,第一反应当然是穷举搜索,不妨假设模型为λ,

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

Powershell管理系列(二十六)PowerShell操作之批量导出&导入邮箱

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 项目中有时候做跨林邮箱迁移的时候,条件不成熟,比如安全考虑或者其他考虑,不能做双林信任,这样就提出了一个问题,历史邮件需要使用的话怎么办,一个简单高效的解决办法就是从源森林批量导出邮件为.pst文件,在批量导入到目的域森林,具体操作如下: 1.赋予管理账号邮件导入导出权限,命令如下: cls whoami New-Manageme

算法系列之二十三:离散傅立叶变换之音频播放与频谱显示

算法系列之二十三:离散傅立叶变换之音频播放与频谱显示 算法系列之二十三离散傅立叶变换之音频播放与频谱显示 导语 什么是频谱 1 频谱的原理 2 频谱的选择 3 频谱的计算 显示动态频谱 1 实现方法 2 杂项说明 结果展示 导语 频谱和均衡器,几乎是媒体播放程序的必备物件,没有这两个功能的媒体播放程序会被认为不够专业,现在主流的播放器都具备这两个功能,foobar 2000的十八段均衡器就曾经让很多人着迷.在上一篇对离散傅立叶变换介绍的基础上,本篇就进一步介绍一下频谱是怎么回事儿,下一篇继续介绍

hbase源码系列(二)HTable 如何访问客户端

hbase的源码终于搞一个段落了,在接下来的一个月,着重于把看过的源码提炼一下,对一些有意思的主题进行分享一下.继上一篇讲了负载均衡之后,这一篇我们从client开始讲吧,从client到master再到region server,按照这个顺序来开展,网友也可以对自己感兴趣的部分给我留言或者直接联系我的QQ. 现在我们讲一下HTable吧,为什么讲HTable,因为这是我们最常见的一个类,这是我们对hbase中数据的操作的入口. 1.Put操作 下面是一个很简单往hbase插入一条记录的例子.

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建一个web service .  但是对于如何部署及调用,以及一些细节的部分基本上没有介绍. 应某些博友的要求, 也适逢自己有空, 接下来就详细介绍一下整个部分如何进行. 环境准备 JDK 肯定要安装了, 这个就不多讲了. 1. eclipse  3.5.2 对eclipse 版本的要求其实不是很严