作为 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. <转>浅谈缓存击穿、缓存并发和缓存失效

    原文地址:缓存穿透.缓存并发.缓存失效之思路变迁 我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题: 缓存穿透 缓存并发 缓存失效 一.缓存穿透       注 ...

  2. Linux下ftp安装配置及三种用户的验证

    一.原理简介 二.安装配置 三.三种用户的验证 一.简介 FTP即文件传输协议(File Transfer Protocol),完成各主机的文件共享功能,基于客户端-服务器的协议,工作在应用层,tcp ...

  3. 2-物联网开发标配方案(51单片机程序介绍+WIFI程序介绍)

    上一节  https://www.cnblogs.com/yangfengwu/p/9944438.html 购买云服务器安装MQTT就不用说了,以前写过文章介绍 https://www.cnblog ...

  4. Tensorflow[目录结构]

    1 - Tensorflow源码目录结构 基于2018年5月28日github的tensorflow源码,即1.8版本 第一层: tensorflow: 核心代码目录. third_party:第三方 ...

  5. linux下文件共享的几种常用方式

    1. python方式,做一个简单的服务器.默认是开启8000端口. > python -m SimpleHTTPServer 执行命令后,在浏览器上输入该机器IP+8000端口即可 2. sc ...

  6. Luogu3793 由乃救爷爷 分块、ST表

    传送门 因为昨天写暴力写挂在UOJ上用快排惨遭卡常,所以今天准备写一个卡常题消遣消遣,然后时间又垫底了QAQ 这道题显然需要支持一个\(O(N)\)预处理\(O(1)\)查询的ST表,显然普通的ST表 ...

  7. windows平台快速搭建Linux(CentOS)

    VMware简介 VMware Workstation(简称 “虚拟机”)是一款功能强大的桌面虚拟计算机软件,用户可在Windows平台通过VMware软件同时运行不同的操作系统.这对IT开发人员而言 ...

  8. IOC框架之 Unity 入门

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

  9. [Spark][Python]DataFrame select 操作例子II

    [Spark][Python]DataFrame中取出有限个记录的   继续 In [4]: peopleDF.select("age","name") In ...

  10. 汇编 SETG,SETL ,SETGE, SETLE指令

    一.SETG SETZ(SETE) //取ZF标志位值 放到寄存器里 SETNZ(SETNE) == > SETG //setg cl//ZF==0 并 SF==0 并 OF==0 时 cl=1 ...