作为 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 布局管理器的使用

    很多的时候,需要布局管理器的使用, 在此介绍一下布局管理器的使用,直接上代码 #include "widget.h" #include "ui_widget.h" ...

  2. jmeter(二十)阶梯式加压测试

    性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间. 在jmeter中,有这样一个插件,可以帮我们实现这个功能,这个插件就是:St ...

  3. SkylineGlobe6.5遍历信息树节点方法

    //------------------- //searchGeometries function searchGeometries2(parentNode, callbackFunc) { SGWo ...

  4. (转) Ubuntu 更改文件夹及子文件夹权限

    Linux系统下如何修改文档及文件夹(含子文件夹)权限,我们来看一下. 一 介绍: 可以使用命令chmod来为文件或目录赋予权限.Linux/Unix 的档案存取权限分为三级 : 档案拥有者.群组.其 ...

  5. css实现按钮固定在底部

    实现类似如下图的功能: 采用如下的样式来控制:

  6. python 的zip 函数小例子

    In [57]: name = ('Tome','Rick','Stephon') In [58]: age = (45,23,55) In [59]: for a,n in zip (name,ag ...

  7. iOS开发简记(3):tips提示

    我有一个需求:在点击或长按某个按钮时,需要显示提示,包括简单的文字提示,还有复杂一点的图片甚至是动态图的提示(可能还要加上文字). (1)文字tips 使用之前介绍的qmuikit里面的QMUITip ...

  8. .Net Core Cookie-Based认证与授权

    .Net Core的其中一种认证与授权模式是基于Cookie的,首先我们先创建一个.Net Core MVC 项目: 然后增加对页面访问的权限控制,对要访问的页面Conytroller增加Author ...

  9. ireportdesigner下载页面

    iReport主页:http://community.jaspersoft.com/project/ireport-designer iReport下载地址:http://sourceforge.ne ...

  10. LVS负载均衡-基础知识梳理

    一. 集群的概念 服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台服务器.集群系统中的单个服务器通常称 ...