主讲人 张巍

(新浪微博: @张巍_ISCAS

软件所-张巍<zh3f@qq.com> 19:01:27 
我们开始吧,十三章是关于序列数据,现实中很多数据是有前后关系的,例如语音或者DNA序列,例子就不多举了,对于这类数据我们很自然会想到用马尔科夫链来建模:

例如直接假设观测数据之间服从一阶马尔科夫链,这个假设显然太简单了,因为很多数据时明显有高阶相关性的,一个解决方法是用高阶马尔科夫链建模:

但这样并不能完全解决问题 :1、高阶马尔科夫模型参数太多;2、数据间的相关性仍然受阶数限制。一个好的解决方法,是引入一层隐变量,建立如下的模型:

这里我们假设隐变量之间服从一阶马尔科夫链,观测变量由其对应的隐变量生成。从上图可以看出,隐变量是一阶的,但是观测变量之间是全相关的,今天我们主要讨论的就是上图中的模型。如果隐变量是离散的,我们称之为Hidden Markov Models;如果是连续的,我们称之为: Linear Dynamical Systems。现在我们先来看一下HMM ,从图中可以看出,要完成建模,我们需要指定一下几个分布:
1、转移概率:

2、马尔科夫链的初始概率:

3、生成观测变量的概率(emission probabilities):

对于HMM, 这里1和2我们已经假设成了离散分布,由隐变量Zn生成观测数据可以用混合高斯模型或者神经网络,书上的Zn是一个k维的布尔变量,由此再看隐变量转移概率公式、观测数据的生成公式就容易理解了。模型建好了,我们接下来主要讨论下面三个问题:
1、学习问题:就是学习模型中的参数;
2、预测问题:即,给定当前序列预测下一个观测变量;
3、解码问题:即p(Z|X),给定观测变量求隐变量,例如语音识别;

游侠(419504839) 19:24:21 
什么是解码问题?
软件所-张巍<zh3f@qq.com> 19:25:18 
例如观测到了一段语音,要求识别其对应的句子。@游侠 我前面没怎么举例子,不知道这样说清楚没?
游侠(419504839) 19:27:20 
这个和一般说的"推断"一样不
软件所-张巍<zh3f@qq.com> 19:28:27 
这个也可以叫推断,只是推断是个比较一般的词汇。
我们来看一下HMM有多少参数要学,对应于刚才说到的三个分布,我们也有三组参数要学。
球猫(250992259) 19:30:46 
其实就是假设东西是一个马尔科夫模型生成的。。然后把参数用某种方法弄出来,最后根据模型的输出来给答案……是这样吧?

软件所-张巍<zh3f@qq.com> 19:32:45 
@球猫 对,都是这个思路,先把参数学出来,然后就可以做任何想要的推断了,在这里所谓的解码问题只是大家比较关心。
软件所-张巍<zh3f@qq.com> 19:32:51 
好,继续,我们先来看1、学习问题。这里我们用EM算法来学习HMM的参数:
1、是转移概率对应的转移矩阵;
2、初始概率对应的离散分布参数;
3、观测变量对应的分布参数(这里暂不指定)。
用EM我们要做的就是:
E步里根据当前参数估计隐变量的后验:


M步里最大化下面的期望:

先来看M步,这里相对简单一点,整个模型的全概率展开为:

把13.10代入13.12,我们会发现计算时需要下面两个式子:

为了方便,我们就定义:

这样我们在E步就主要求出这两个式子就行了,当然这也就意味着求出了整个后验,利用这两个式子,13.12可以化为:

这个时候就可以用一些通用方法,例如Lagrange来求解了,结果也很简单:

对于观测变量的分布参数,与其具体分布形式相关,如果是高斯:,对应的最优解为:

如果是离散:对应的最优解为:

好,M步就这样, 现在来看E步,也是HMM比较核心的地方。刚才我们看到,E步需要求的是:
由马尔科夫的性质,我们可以推出:

其中:


接下来我们就建立的递推公式

其中:

这样我们从开始,可以递推出所有的,对于,也进行类似的推导:


从上式可以看到是一个逆推过程,所以我们需要初始值,定义13.35并没有明确的定义:

因为z_N后没有观测数据,不过我们可以从,得出:
 
这样就等于1,现在我们可以方便的求出所有的了,利用13.13也就可以求出所有的。类似的,我们可以求出

这样在M步里求解所需要的分布就都求出来了,也就可以用EM来学习HMM的参数了,这里式子比较多,大家自己推一下会比较好理解。

第一个学习问题就这样了,接下来是预测问题,预测问题可以直接推导:

现在就剩最后一个解码问题,也就是argmax_Z{p(Z|X)},刚才我们在E步已经求出了:

但是现在的问题要复杂一点,因为我们要求概率最大的隐变量序列,用13.13可以求出单个隐变量,但是他们连在一起形成的整个序列可能概率很小,这个问题可以归结为一个动态规划:

我们把HMM化成如上图的样子,最大化后验等价于最大化全概率,对于上图中的边,我们赋值为:
log(
初始节点赋值为:
log(*p(x_1|z_1))
其余节点赋值为:
log()
这样任何一个序列Z,其全概率等于exp(Z对应路径上节点和边的值求和),这样,解码问题就转化为一个最长路径问题,用动态规划可以直接求解。大家看这里有没有问题,HMM的主要内容就是这些

接下来的Linear Dynamical Systems 其实和HMM大同小异,只是把离散分布换成了高斯,然后就是第二章公式的反复应用,都是细节问题,就不在这里讲了,大家看看有问题我们可以讨论。这一章还是式子主导的,略过了不少式子,大家推的时候有问题我们可以随时讨论。

天涯游(872352128) 21:09:21 
我对hmm 的理解,觉得这麻烦的是概率的理解的了,概率分解才是hmm的核心,当然了还有动态规划了。概率分解其实是实验事件的分解,如前向 和后向了,还有就是EM算法了。

PRML读书会讲稿PDF版本以及更多资源下载地址:http://vdisk.weibo.com/u/1841149974

PRML读书会第十三章 Sequential Data(Hidden Markov Models,HMM)的更多相关文章

  1. Hidden Markov Models(HMM) 初理解

    1. 一个简单例子

  2. 机器学习 Hidden Markov Models 2

    Hidden Markov Models 下面我们给出Hidden Markov Models(HMM)的定义,一个HMM包含以下几个要素: ∏=(πi)表示初始状态的向量.A={aij}状态转换矩阵 ...

  3. 隐马尔科夫模型(Hidden Markov Models)

    链接汇总 http://www.csie.ntnu.edu.tw/~u91029/HiddenMarkovModel.html 演算法笔记 http://read.pudn.com/downloads ...

  4. [综]隐马尔可夫模型Hidden Markov Model (HMM)

    http://www.zhihu.com/question/20962240 Yang Eninala杜克大学 生物化学博士 线性代数 收录于 编辑推荐 •2216 人赞同 ×××××11月22日已更 ...

  5. 理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM)

    理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM) 参考链接:http://www.zhihu.com/question/20962240 参考链接:http://blog. ...

  6. 机器学习 Hidden Markov Models 1

    Introduction 通常,我们对发生在时间域上的事件希望可以找到合适的模式来描述.考虑下面一个简单的例子,比如有人利用海草来预测天气,民谣告诉我们说,湿漉漉的海草意味着会下雨,而干燥的海草意味着 ...

  7. 隐马尔科夫模型(Hidden Markov Models) 系列之三

    转自:http://blog.csdn.net/eaglex/article/details/6418219 隐马尔科夫模型(Hidden Markov Models) 定义 隐马尔科夫模型可以用一个 ...

  8. PRML读书会第七章 Sparse Kernel Machines(支持向量机, support vector machine ,KKT条件,RVM)

    主讲人 网神 (新浪微博: @豆角茄子麻酱凉面) 网神(66707180) 18:59:22  大家好,今天一起交流下PRML第7章.第六章核函数里提到,有一类机器学习算法,不是对参数做点估计或求其分 ...

  9. PRML读书会第五章 Neural Networks(神经网络、BP误差后向传播链式求导法则、正则化、卷积网络)

    主讲人 网神 (新浪微博:@豆角茄子麻酱凉面) 网神(66707180) 18:55:06 那我们开始了啊,前面第3,4章讲了回归和分类问题,他们应用的主要限制是维度灾难问题.今天的第5章神经网络的内 ...

随机推荐

  1. 为什么Java中字符串是不可变的

    前言 在Java中,字符串是一个不可变的类,一个不可变的类指的是它的实例对象不能被修改,所有关于这个对象的信息在这个对象被创建时已初始化且不能被改变. 不可变类有很多优势,这篇文章总结了字符串类之所以 ...

  2. JavaScript Patterns 6.5 Inheritance by Copying Properties

    Shallow copy pattern function extend(parent, child) { var i; child = child || {}; for (i in parent) ...

  3. Java Security:keytool工具使用说明

    Keytool用法说明 Keytool是一个key与cert的管理工具.使用keytool可以管理public key.private key,以及与key之相关的certificate. 1.com ...

  4. 常用的主机监控Shell脚本

    最近时不时有朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能 ...

  5. openstack-kilo--issue(九) heat stacks topology中图形无法正常显示

    ======声明======= 欢迎转载:转载请注明出处 http://www.cnblogs.com/horizonli/p/6186581.html ==========环境=========== ...

  6. android 查看解压后的.xml文件代码(axmlprinter2)

    axmlprinter2工具下载地址:http://pan.baidu.com/s/1o67eXtS 方法:1.将要查看的.xml文件复制到AXMLPrinter2.jar所在目录2.通过cmd 输入 ...

  7. python 的异常及其处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  8. WPF捕获未处理的异常

     WPF程序中,对于异常的捕获一般使用try/catch块.就像程序中的bug一样,很难保证程序中所有的异常都能够通过try/catch捕获.如果异常没有被捕获,轻则影响用户体验,严重时会导致数据丢失 ...

  9. 在Windows Azure虚拟机上开发Windows 8 应用

    前提条件 Windows Azure开发者账号:如果您拥有微软MSDN Subscription账户,那么意味着您可免费申请Windows Azure开发者账号. 创建虚拟机 点击Windows Az ...

  10. Strcmp(字符串1,字符串2)函数 Sizeof && strlen() Substr(a,b)

    Strcmp(字符串1,字符串2)函数 { strcmp函数是比较两个字符串的大小,返回比较的结果.一般形式是:  i=strcmp(字符串,字符串); 其中,字符串1.字符串2均可为字符串常量或变量 ...