概率图模型(PGM)学习笔记(五)——模板模型

模板模型(Template Models)主要包括模板变量(TemplateVariables)和语言(Language)。

模板模型可以应用于无限大的贝叶斯网络;

模板变量是被多次复用的变量:

如:地点(时间)、基因型(人物)、标签(像素)、难度(课程),等等。

语言用来描述模板变量如何从模板中继承依赖关系。

语言有很多种,各种语言都有各种应用条件,从而构造出大量非常有用的语言。

模板模型可以用紧凑的方式描述

1.时序上的重复(如动态贝叶斯网络Dynamic Bayesian Networks)。

2.对象关系上的重复(有向或无向)

时序模型(Temporal Models)

用链式法则可以描述一个时序模型:

为了简化模型,我们做以下2个假设:

马尔科夫假设(Markov Assumption——遗忘假设)

一旦知道现有状态,不再关心之前状态:

这个假设实际常常并不合理,可以通过2种手段修正:

1.增加描述状态的变量。

2.增加与之前状态的相关性(半马尔科夫模型)。

时间不变性(Time Invariance)假设

系统状态间的变化并不依赖于时间:

这个假设也常常不合理,如交通系统。

模板转换模型(Template Transition Model)

以交通系统为例。

如图左侧是t时间状态,右图是t+1时间状态。这个模型很好地展示了交通系统如何随着时间动态变化,变量为天气、汽车速度、汽车位置、传感器是否失效。右下角的Obs是传感器观测量。

整个模型用链式法则表示就是:

注意观察图片,发现在同一时间状态内(如Failure’-Obs’)或不同状态之间(如Failure-Failure’)都有依赖关系,为什么会这样呢?因为Failure’-Obs’是瞬时的,不用经过时间的变换。

另外,为什么左边没有Obs呢?因为上一个状态的Obs不影响下一个状态的任何变量。

图中有几种典型的边:

PersistenceEdges:Location-Location’

Intra-TimeSlice Edges:Failure’-Obs’

Inter-TimeSlice Edges:Location-Location’

有了以上基础,就能展开得到Ground Bayesian Network(也是一个动态贝叶斯网络):

动态贝叶斯网络(Dynamic Bayesian Network)的特点

1.网络结构在每个TimeSlice内都是相同的。

2.第t片网络只跟第t-1片和t+1片网络有关。

3.DBN是任意长度时间序列结构分布的紧凑表示。

隐马尔科夫模型(Hidden Markov Models, HMM)

较详细的介绍见我之前的博客

隐马尔科夫模型(HMM)及其实现

用图模型表示出来采用HMM的机器人定位系统为:

核心成分为红圈中间的部分。

-HMM是DBN的子类。

-从随机变量的条件概率来看,HMM的结构是非常稀疏的(与一般DBN相比)

-HMM用途很广,用于语音识别领域效果非常好。

板模型(Plate Models)

之所以叫板,是因为它主要用来建模重复变量:“像一摞同样的板子(And the reason for calling it a plate is because the intuition ofthis is a stack of identical plates, that‘s kind of where the idea comes from, fora plate model.)”

板就是在输出变量周围画个小盒子,在盒子的右下角写上输出变量的索引。例如重复成绩模型,就是以学生s为索引的:

嵌套板(Nested Plates)

嵌套板以为着内层板还要以外层板为索引。

重叠板(Overlapping Plates)

对于板模型,则其父节点的索引必须是模板变量索引的子集。

即Grades(s,c)--->Honor(s)这种结构是不能表示的。

欢迎参与讨论并关注本博客微博以及知乎个人主页后续内容继续更新哦~

转载请您尊重作者的劳动,完整保留上述文字以及文章链接,谢谢您的支持!

时间: 2024-10-14 14:11:42

概率图模型(PGM)学习笔记(五)——模板模型的相关文章

C++ Primer 学习笔记_79_模板与泛型编程 --模板编译模型

模板与泛型编程 --模板编译模型 引言: 当编译器看到模板定义的时候,它不立即产生代码.只有在用到模板时,如果调用了函数模板或定义了模板的对象的时候,编译器才产生特定类型的模板实例. 一般而言,当调用函数时[不是模板],编译器只需看到函数的声明.类似的,定义类类型的对象时,类定义必须可用,但成员函数的定义不是必须存在的.因此,应该将类定义和函数声明放在头文件中,而普通函数和类成员函数的定义放在源文件中. 模板则不同:要进行实例化,编译器必须能够访问定义模板的源代码.当调用函数模板或类模板的成员函

机器学习之模型评估与模型选择(学习笔记)

时间:2014.06.26 地点:基地 -------------------------------------------------------------------------------------- 一.训练误差和测试误差 机器学习或者说统计学习的目的就是使学习到的模型不仅对已知数据而且对未知数据都都很好的预测能力.不同的学习方法会得出不同的模型.在评判学习方法的好坏时,常用的是: 1.基于损失函数的模型的训练误差                          2.模型的测试误

V-rep学习笔记:机器人模型创建2—添加关节

下面接着之前经过简化并调整好视觉效果的模型继续工作流,为了使模型能受控制运动起来必须在合适的位置上添加相应的运动副/关节.一般情况下我们可以查阅手册或根据设计图纸获得这些关节的准确位置和姿态,知道这些信息以后就可以通过[Menu bar --> Add --> Joints --> ...]来添加关节了, 之后可以通过位置和姿态对话框来调整关节位置姿态.在之前写过的V-rep学习笔记:曲柄摇杆机构中就是按照这种方式添加的关节. 如果我们有机器人的DH参数表也可以使用VREP中的工具来生成

V-rep学习笔记:机器人模型创建3—搭建动力学模型

接着之前写的V-rep学习笔记:机器人模型创建2-添加关节继续机器人创建流程.如果已经添加好关节,那么就可以进入流程的最后一步:搭建层次结构模型和模型定义(build the model hierarchy and finish the model definition).但是想要进行动力学仿真(碰撞.接触.自由落体...)的话,还需要进行额外的一些操作: Building the dynamic shapes VREP中几何体的属性可以分为: dynamic or static: 具有动态属性

操作系统学习笔记----进程/线程模型----Coursera课程笔记

操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进程创建.撤销.阻塞.唤醒.... 0.2 线程模型 为什么引入线程 线程的组成 线程机制的实现 用户级线程.核心级线程.混合方式 1. 进程的基本概念 1.1 多道程序设计 允许多个程序同时进入内存运行,目的是为了提高CPU系统效率 1.2 并发环境与并发程序 并发环境: 一段时间间隔内,单处理器上

NLTK学习笔记(五):分类和标注词汇

[TOC] 词性标注器 之后的很多工作都需要标注完的词汇.nltk自带英文标注器pos_tag import nltk text = nltk.word_tokenize("And now for something compleyely difference") print(text) print(nltk.pos_tag(text)) 标注语料库 表示已经标注的标识符:nltk.tag.str2tuple('word/类型') text = "The/AT grand/J

深度学习笔记(五):LSTM

深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 深度学习笔记(三):激活函数和损失函数 深度学习笔记(四):循环神经网络的概念,结构和代码注释 深度学习笔记(五):LSTM 看到一篇讲LSTM非常清晰的文章,原文来自Understanding LSTM Networks , 译文来自理解LSTM网络 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的

laravel3学习笔记(五)

原作者博客:ieqi.net ==================================================================================================== 模型 在MVC模式的Web框架中,模型Model作为数据的抽象而存在,在Model层中,我们放置直接对数据的各种处理和操作,然后将抽象过的数据操作暴露为Model类给控制器,这样,在控制器中我们就不必拘泥于处理具体数据现实的各种细节中了,比如数据库如何连接,数据的类型

C++ Primer 学习笔记_81_模板与泛型编程 --类模板成员[续1]

模板与泛型编程 --类模板成员[续1] 二.非类型形参的模板实参 template <int hi,int wid> class Screen { public: Screen():screen(hi * wid,'#'), cursor(hi * wid),height(hi),width(wid) {} //.. private: std::string screen; std::string::size_type cursor; std::string::size_type height

Boost Thread学习笔记五

多线程编程中还有一个重要的概念:Thread Local Store(TLS,线程局部存储),在boost中,TLS也被称作TSS,Thread Specific Storage.boost::thread库为我们提供了一个接口简单的TLS的面向对象的封装,以下是tss类的接口定义: class tss{public:    tss(boost::function1<void, void*>* pcleanup);    void* get() const;    void set(void*