作为 inference 部分的小结,我们这里对 machine learning 里面常见的三个 model 的 inference 问题进行整理,当然很幸运的是他们都存在 tractable 的算法是的我们避免了烦人的 approximate inference。

HMM

常意所说的 HMM 是对离散状态、离散观测情形下的一种 generative model,它包括

  • 状态的先验分布 (在下面的推导中我们可以将其藏在转移概率中)
  • 转移状态 ,这是对 的分布
  • 发射概率 ,这是对 的分布

这个模型的潜台词是

  • Markovian property:
  • time-invariance:

因此联合分布的概率为

其中 故可省略。下面我们分别讨论这上面的 message passing、belief update 和一些常见的 inference 问题。

message passing 需要建立一个 cluster graph,当然实际也是一个 clique tree,这个图上的顶点包括 ,这是将 绑在一起,;则每个对应的 。于是可以计算前向的消息,

其中 ,后向消息为

其中 。如果仔细分析一下这些消息,我们就会发现,前向消息其实是边际分布

我们可以继续代入后面的消息里面,

如果观测是给定的,即 已知,这获得的将是 。对后向消息而言,

代入后面的消息有

都是常数。如果 是已知的,这将获得

对于 MAP 类型的 query,我们需要使用 max-product 算法,此时的前向消息为(

后向消息为

对 belief update 来说,belief 是 上的边际分布

而对应的 belief update 为

类似可以导出 MAP 类型下的形式。这样,对于 filtering 来说 可以将前向消息归一化,而 prediction 使用的概率

是归一化后的值。smoothing 需要求 ,本质上就是 ,这直接使用 MAP 类型两种 message 就能给出两种算法。

LDS

LDS 和 HMM 具有类似的图结构,但是对应的状态和观测均为连续分布,因而常使用 Gaussian 建模。

其中,

另一种描述这种关系的形式是使用 additive noise,

使用的 clique tree 与前面一致,前向消息为

其中 and ,后向消息也均为 1。对 MAP 类型的 query,前向消息为

关于 的优化问题是

其解为

这是 的线性函数,因此大致的求解过程是,从 的二次方程中解出 得到一个使用 的线性函数表示的关系,代入后得到 的消息,这仍然是一个二次函数,向后代入即可。最后获得的 的方程解出 后进行回代就解出了其他的隐变量。

beliefs 为

类似有对应 belief。

对 filtering 问题,给定 后计算 可使用前向消息,

其中,

其中

则以上计算可用统一的形式表述。

对 prediction 问题,给定 可使用 filtering 的结果计算

MEMM

我们直接对 使用 ME 建模,但是为了引入上下文关系,我们可以将这个 ME 弄成多个 ,这也就是说前面一个状态决定了后面使用的 ME 的参数。这样似然函数为

这里的假定有,

  • Markovian 性:
  • ME 假定:

我们使用与 HMM 一致的 cluster graph,前向消息为

后向消息为

max-product message passing 仅仅需要将求和换成 max。belief propagation 中 belief 为

且 belief update 为

其 filtering、prediction 和 smoothing 算法与 HMM 完全一样。

CRF

其假设为

  • Markovian 性,与 MEMM 类似;
  • invariant factor:对每个 transition,我们引入一个 log-linear 表示,,其中 是所谓的 feature;

类似前面可以定义消息、belief 等。如果需要计算 log-likelihood,我们需要求 partition function 的函数值,这需要使用前向消息

就能避免指数求和项,而计算梯度的时候,

其中后者需要 ,这正是 belief。

——————
And Sarah saw the son of Hagar the Egyptian, which she had born to Abraham, mocking.

pgm12的更多相关文章

随机推荐

  1. Qt之创建并使用静态链接库

    1.创建静态链接库 静态库的工程名字 添加包含的模型 更改一下类的名字 我的静态编译库的工程. 写一个简单的静态哭的代码为后面测试静态库使用 cpp代码: #include "staticb ...

  2. Android使用属性动画ValueAnimator动态改变SurfaceView的背景颜色

    以下是主要代码,难点和疑问点都写在注释中: /** * 开始背景动画(此处为属性动画) */ private void startBackgroundAnimator(){ /* *参数解释: *ta ...

  3. Android 绘制一个Loading动画__向图片中缓慢填充颜色,从而形成动画效果

    需求:制作一个加载动画,向一个不规则图片图形中从从下到上依次填充颜色,形成动画效果. 效果如下:     代码如下: LoadingAnimatorView.java package cn.yw.li ...

  4. ThreadGroup其实比ExecutorService更好

    用java做抓取的时候免不了要用到多线程的了,因为要同时抓取多个网站或一条线程抓取一个网站的话实在太慢,而且有时一条线程抓取同一个网站的话也比较浪费CPU资源.要用到多线程的等方面,也就免不了对线程的 ...

  5. 使用Webuploader大文件分片传输

    背景:50G大文件的HTTP上传至服务器. 好了,根据这个命题,可以开始研究我们怎么做才能把这么大的文件上传成功. 分片上传是肯定的,断点续传也是要有的,进度可视化那就更好了,基于这些,我选择了Web ...

  6. python中#!/usr/bin/python与#!/usr/bin/env python的区别

    目的是在运行python脚本的时候告诉操作系统我们要用python解释器去运行py脚本 所以我们在第一句往往会写如下两句中的其中一句: #!/usr/bin/python 或 >#!/usr/b ...

  7. IOC框架之 Unity 入门

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 1. ...

  8. Caffe源码中math_functions文件分析

    Caffe源码(caffe version:09868ac , date: 2015.08.15)中有一些重要文件,这里介绍下math_functions文件. 1.      include文件: ...

  9. MGR主从不一致问题排查与修复

    运行环境 linux:CentOS release 6.8 (Final) kernel:2.6.32-642.6.2.el6.x86_64 mysql Server version: 5.7.21- ...

  10. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故的原因和处理

    前文提要 承接前文<一次线上Mysql数据库崩溃事故的记录>,在文章中讲到了一次线上数据库崩溃的事件记录,建议两篇文章结合在一起看,不至于摸不着头脑. 由于时间原因,其中只讲了当时的一些经 ...