pgm12
作为 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的更多相关文章
随机推荐
- <转>浅谈缓存击穿、缓存并发和缓存失效
原文地址:缓存穿透.缓存并发.缓存失效之思路变迁 我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题: 缓存穿透 缓存并发 缓存失效 一.缓存穿透 注 ...
- Linux下ftp安装配置及三种用户的验证
一.原理简介 二.安装配置 三.三种用户的验证 一.简介 FTP即文件传输协议(File Transfer Protocol),完成各主机的文件共享功能,基于客户端-服务器的协议,工作在应用层,tcp ...
- 2-物联网开发标配方案(51单片机程序介绍+WIFI程序介绍)
上一节 https://www.cnblogs.com/yangfengwu/p/9944438.html 购买云服务器安装MQTT就不用说了,以前写过文章介绍 https://www.cnblog ...
- Tensorflow[目录结构]
1 - Tensorflow源码目录结构 基于2018年5月28日github的tensorflow源码,即1.8版本 第一层: tensorflow: 核心代码目录. third_party:第三方 ...
- linux下文件共享的几种常用方式
1. python方式,做一个简单的服务器.默认是开启8000端口. > python -m SimpleHTTPServer 执行命令后,在浏览器上输入该机器IP+8000端口即可 2. sc ...
- Luogu3793 由乃救爷爷 分块、ST表
传送门 因为昨天写暴力写挂在UOJ上用快排惨遭卡常,所以今天准备写一个卡常题消遣消遣,然后时间又垫底了QAQ 这道题显然需要支持一个\(O(N)\)预处理\(O(1)\)查询的ST表,显然普通的ST表 ...
- windows平台快速搭建Linux(CentOS)
VMware简介 VMware Workstation(简称 “虚拟机”)是一款功能强大的桌面虚拟计算机软件,用户可在Windows平台通过VMware软件同时运行不同的操作系统.这对IT开发人员而言 ...
- IOC框架之 Unity 入门
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 1. ...
- [Spark][Python]DataFrame select 操作例子II
[Spark][Python]DataFrame中取出有限个记录的 继续 In [4]: peopleDF.select("age","name") In ...
- 汇编 SETG,SETL ,SETGE, SETLE指令
一.SETG SETZ(SETE) //取ZF标志位值 放到寄存器里 SETNZ(SETNE) == > SETG //setg cl//ZF==0 并 SF==0 并 OF==0 时 cl=1 ...