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的更多相关文章
随机推荐
- Android学习之基础知识五—创建自定义控件
下面是控件和布局的继承关系: 从上面我们看到: 1.所有控件都是直接或间接继承View,所有的布局都是直接或间接继承ViewGroup 2.View是Android中最基本的UI组件,各种组件其实就是 ...
- java 面向对象基本知识
1.继承 使用extends实现继承 只有单继承 子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法). instanceof是二元 ...
- android 工具大集合
http://www.androiddevtools.cn/ http://www.sourcetreeapp.com/
- Python不能用于大型项目?人们对Python的十大误解
Python 类型系统的特点是拥有强大.灵活的类型操作. 维基百科上对此作出的阐述. 而存在一个不争而有趣的事实是, Python 是比Java更加强类型的. Java 对于原生类型和对象区分了类型系 ...
- ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击 (转载)
什么是反伪造攻击? 跨站点请求伪造(也称为XSRF或CSRF,发音为see-surf)是对Web托管应用程序的攻击,因为恶意网站可能会影响客户端浏览器和浏览器信任网站之间的交互.这种攻击是完全有可能的 ...
- LESS SCSS 预编译语言
前 言 JRedu LESS 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. LESS 为 Web 开发者带来了福音,它在 ...
- 对于ps基本操作的归纳
1.开始新的制作 1)新建 快捷键:Ctrl+n 格式:宽高根据要求自选:颜色模式常用R(红)G(绿)B(蓝) 2)打开电脑上的图片 快捷键:Ctrl+o 2.选框工具 快捷键:M 作用:能 ...
- Python零基础入门(安装步骤,验证方式, 简单操作)
本篇文章适合新人小白初步了解Python,涵盖Python的介绍.安装以及简单的基础操作. 1.Python简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.它的设 ...
- 基于SimpleChain Beta的跨链交互与持续稳态思考
1. 区块链扩展性迷局 比特币作为第一个区块链应用与运行到目前为止最被信任的公链,其扩展性问题却持续被作为焦点贯穿着整个链的发展周期.事实上,在2009年1月4日比特币出现的那一天到2010年10月1 ...
- Git常用命令梳理
在日常的Git版本库管理工作中用到了很多操作命令,以下做一梳理: 查看分支列表,带有*的分支表示是当前所在分支 [root@115~~]#git branch 查看分支详细情况 (推荐这种方式) [r ...