概率无向图模型

1. 前言

前面看了概率有向图模型,必然对无向图模型也要研究一下。而且这个概率无向图模型对学习RBM有很大的帮助,它关系到能量函数的来源,所以还是看看吧。参考资料依旧是概率有向图模型中参考的三个资料。

有向图将一组变量上的联合概率分布分解为局部条件概率分布的乘积;同时定义了一组条件独立的性质,根据图进行分解的任何概率分布都必须满足这些条件独立性质(也就是有向图中的那三种拓扑结构)。

无向图也是一种分解方式,也表示一组条件独立的关系。

2. 概念

2.1 等价概念

概率无向图模型(undirect graphical model)、马尔科夫随机场(Markov Random Filed,MRF)、马尔科夫网络(Markov Network,MN)

2.2 一般结构

包含一组结点,每个结点都对应着一个变量或一组变量。连接是无向的,即不含箭头。

2.3 条件独立性质

考虑连接集合A和B的节点的所有可能路径,如果所有路径都通过集合C中一个或者多个节点,那么所有这样的路径都被“阻隔”,条件独立性质成立;如果存在至少一条未被阻隔的路径,那么条件独立性质就未必成立,专业点就是说:存在至少某些对应于图的概率分布不满足条件独立性质。

另一种检测方法是,将图中属于集合C的节点以及与这些节点相连的连接线全部删除,然后再看有没有从A到B的路径。如果没有,那么条件独立一定成立。

无向图的马尔科夫毯比较简单,节点只依赖与相邻节点,而条件独立于任何其他的节点。因为相邻节点都有线连接,如果把相邻节点当做C,那么它连接到其它节点的路径都要经过C,也就是对于除了相邻节点C以外的其它节点条件独立。

图中集合A到集合B的所有路径都通过集合C中的结点,所以图所描述的任意概率分布,都是以C为条件,A与B都条件独立。

2.4 分解性质

利用条件独立性质去分解联合分布,如果第i和第j个结点之间不存在连接,那么给定图中其它结点,这两个结点一定条件独立,可以用下式表示出来

反斜杠代表除了大括号结点之外的结点。联合概率分布的分解一定要让xi和xj不出现在同一个因子中,进而让属于这个图的所有可能的概率分布都满足条件独立性。

在了解联合概率分布的写法之前先看看两个概念:

团块:图结点的子集,每一个子集的每对节点之间都有连接(跨度一个或者多个连接起来的不算)。团块中的节点集合是全连接的。

最大团块:不可能将图中任何一个其它节点包含到团块中而不破坏团块的性质。

图中有两个节点的团有五个

两个最大团块

将团块记为C,团块中的变量为x_c,联合概率分布分解的因子定义为最大团块中变量的函数。简单点就是可以写成图的最大团块的势函数(potential function)乘积的形式:

这里的C就是无向图中所有的极大团,是非负函数,称为极大团因子或者势函数,Z是归一化常数,称为配分函数(partition function)

此图中包含三个极大团

C_1=\left \{ x_1,x_2,x_3 \right \}, C_2=\left \{ x_3,x_4 \right \}, C_3=\left\{x_3,x_5\right\}

那么此马尔科夫网络的联合概率分布可以写为:

 

再说一下配分函数怎么拆开加和形式的, 其实就是每个节点所在团块的势函数乘积的和, 具体表达式如下:

其实想想也是有道理的,对于某个变量, 只需要计算它所在的势函数的乘积即可, 最终把所有的加和起来就是所有变量的联合概率分布了. 其实如果到这里还是有点迷糊的话,强烈建议去看看联合概率分布, 不用看公式, 直接百度文库搜那些计算联合概率分布的题目即可, 顺便还能复习一下边缘分布之类的概率知识

上式为了好看用了latex排版,可能看着有点懵,可以去看评论区@yongzhu2925的理解,是对的

更新日志:2018-4-2

发现很多同学还是不清楚上述的配分函数的计算方法啊,我把这个式子写成一行就懂了:

右边总共有五项,分别表示五个节点所在的极大团的块势函数,比如节点x1 在团块C1 中,节点x2 在团块C1(感谢@刘爱然老哥的提醒),节点x3 在团块C1、C2、C3中......,最后加起来就是整个模型的势函数了。

2.5 势函数与配分函数

势函数的选择并没有具体的概率含义,但是在有向图中,每一个因子表示对应变量以它的父节点为条件的概率分布。势函数的通用性产生了一个结果就是它们的乘积没有被归一化,所以就引入了一个显式的归一化因子,即配分函数。为啥要被归一化?对比有向图中,分解后的每个因子作为条件概率分布都被归一化了(加和为1),因此俩和概率分布会自动被归一化,无向图用的是势函数,所以只能显式加入配分函数进行归一化了。

归一化常数(配分函数)的存在是无向图的主要缺点。因为归一化项的计算涉及到对K^M个状态求和,在最坏情况下,计算量是模型大小的指数形式。对于参数学习,势函数是必须的,用于控制势函数的任意参数的函数。对于局部条件概率的计算不是必须的,因为条件概率计算的是两个边缘概率的壁纸,可以计算未归一化的联合概率分布,然后在计算的最后阶段显式地归一化边缘概率。如果边缘概率涉及到少量的变量,那么归一化稀疏就可以计算。

由于势函数是严格为正,所以可以将势函数表示为指数形式:

其中E就被称为能量函数(energy function),指数表示被称为玻尔兹曼分布(Boltzmann distribution)。联合概率分布被定义为势函数的乘积,因此总能量可通过将每个最大团块的能量相加的方法得到。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

softmax理论及代码解读——UFLDL

前言 看了各种softmax以后迷迷糊糊的,还是研究一下UFLDL的教程稳点。当然还是得参考挺多教程的:UFLDL-softmax 、Softmax的理解与应用 、Logistic 分类器与 softmax分类器 、详解softmax函数以及相关求导过程 、Exercise:Softmax Regression 。 【UFLDL…

马尔科夫链和马尔科夫链蒙特卡洛方法

前言 译自:《Training Restricted Boltzmann Machines: An Introduction 》 马尔科夫链在RBM的训练中占据重要地位,因为它提供了从复杂的概率分布(比如马尔科夫随机场MRF的吉布斯分布)中提取样本。这一部分主要就是对马尔科夫链做个基本的理论介绍,将…

二值RBM与实值RBM理论及代码解读

1. 前言 虽然推导过二值形式的RBM,但是对于可见层为实值的输入还是半知半解的。最近写个深度学习相关综述,看了一些关于RBM的文献,这里做一下对比总结。但是不倾向于对实值RBM的推导,而是相关代码的实现。 2. RBM回顾 RBM是具有…

【caffe-Windows】添加工程-以classification为例

前言 兴趣所向,研究一下如何在caffe工程之外建立一个属于自己的工程,这里以分类为例,将classification.cpp提取出来,然后调用相应的三方库和libcaffe.lib进行编译。这里比较建议有一丢丢C功底的同志参考学习,主要涉及…

MKL学习——数学运算库安装调试

前言 最近要用C折腾一些东西,涉及到矩阵运算,看了一下网上推荐的数学库,貌似MKL还是蛮不错滴,放到VS2013里面试试 国际惯例,来波地址 blas, cblas, openblas, atlas, lapack, mkl性能对比 Compiling and Linking I…

MKL学习——功能简介

基本术语 BLAS : Basic Linear Algebra Subprograms 基本线性代数子程序 BLACS : Basic Linear Algebra Communication Subprograms 基本线性代数通信子程序 LAPACK : Linear Algebra PACKage 线性代数包 ScaLAPACK : Scalable LAPACK PBLAS : Parallel Basic Linear Alg…

MKL学习——向量操作

前言 推荐两个比较好的教程: BLAS (Basic Linear Algebra Subprograms) LAPACK for Windows 命名规范 BLAS基本线性代数子程序的函数命令都有一定规范&#xff0c;便于记忆 <character> <name> <mod> () character 定义的是数据类型 s实数域&#…

【caffe-Windows】识别率批量输出——matlab实现

前言 今天看到群里有人问”用matlab输出测试集的精度“&#xff0c;瞎试了一下&#xff0c;好像还成功了。主要还是依据前面所有在matlab中操作caffe的博客。 这里说一下&#xff1a;classification.m是适用单张图片的精度&#xff0c;类似于classification.exe的功能&#x…

MKL学习——矩阵向量操作

前言 前面介绍的BLAS Level 1是向量-向量的操作&#xff0c;而这里的BLAS Level 2主要还是对矩阵-向量之间的操作。命名规则与前面的一样&#xff0c;主要记住定义的是数据类型 s实数域&#xff0c;单精度c复数域&#xff0c;单精度d实数域&#xff0c;双精度z复数域&#xf…

MKL学习——矩阵矩阵操作

前言 前面介绍了BLAS Level 1中向量-向量操作&#xff0c;以及BLAS Level 2中矩阵-向量的操作&#xff0c;就剩下这一篇的BLAS Level 3中的矩阵-矩阵的操作了。对稀疏矩阵的操作以后等要用再看看。对基本的矩阵和向量运算的函数有所了解以后&#xff0c;就进行常用参数分析&am…

MKL学习——线性代数概念相关

前言 回顾一下BLAS Level 1 2 3中的运算都有什么类型 BLAS Level 1 在BLAS Level 1中&#xff0c;进行的是向量-向量的操作。其中相关概念有 向量类型: 实数域&#xff0c;复数域&#xff0c;共轭运算操作: 元素求和&#xff0c;向量相加&#xff0c;向量拷贝&#xff0c;点乘…

MKL学习——基本操作C++实现

前言 前面介绍了各种向量-向量&#xff0c;矩阵-向量&#xff0c;矩阵-矩阵的函数简介。根据自身目前状况&#xff0c;主要使用实数域的操作&#xff0c;也就是说关注单精度float类型的s和双精度double类型的d。还有就是用的基本都是全矩阵&#xff0c;没有经过压缩&#xff0…

相机矩阵(Camera Matrix)

前言 最近翻阅关于从2D视频或者图片中重构3D姿态的文章及其源码&#xff0c;发现都有关于摄像机参数的求解&#xff0c;查找了相关资料&#xff0c;做一下笔记。 国际惯例&#xff0c;来一波参考网址 透视变换、透镜畸变及校正模型、相机校正(Camera Calibration)、Matlab相…

损失函数梯度对比-均方差和交叉熵

前言 我们都知道在机器学习中&#xff0c;希望算法或者网络收敛更快&#xff0c;有些是对数据预处理&#xff0c;尤其是Batch Normalization&#xff0c;有些是采用不同的激活函数&#xff0c;尤其是Relu激活函数取得了巨大的成功&#xff0c;还有一种加速收敛方法是更换损失函…

如何选择深度学习优化器

前言 转载地址&#xff1a;如何选择深度学习优化器 作者&#xff1a;不会停的蜗牛 CSDN AI专栏作家 在很多机器学习和深度学习的应用中&#xff0c;我们发现用的最多的优化器是 Adam&#xff0c;为什么呢&#xff1f; 下面是 TensorFlow 中的优化器&#xff0c; https://w…

【caffe-Windows】以mnist为例的hdf5单标签处理——matlab实现

前言 主要是想尝试看一下多标签的caffe是如何进行输入输出的&#xff0c;但是目前还未找到基于原始caffe做多标签输入的代码&#xff0c;大部分都是基于源码做了一部分修改实现多标签分类&#xff0c;caffe官网倒是有一个多标签的Python程序&#xff0c;这个我慢慢研究研究&am…

【caffe-Windows】基于Python多标签方法——VOC2012数据集

前言 按照上一篇博客所遗留的话题&#xff1a;多标签分类&#xff0c;进行初步探索&#xff0c;此篇博客针对caffe官网的多分类进行配置&#xff0c;只不过是Python接口的&#xff0c;不过官网在开头说明可以使用HDF5或者LMDB进行操作&#xff0c;只不过Python更加方便罢了 国…

【theano-windows】学习笔记一——theano中的变量

前言 因为目前需要搭建一些关于RBM或者其他之类的模型&#xff0c;感觉不太会折腾caffe&#xff0c;然而我发现了几个有趣网址&#xff0c;使用theano实现了各种各样的模型&#xff0c;所以&#xff0c;尝试学一下theano。主要以官方教程为主&#xff0c;所以博客会以译文的方…

【theano-windows】学习笔记二——theano中的函数和共享参数

前言 上一篇博客中学到了theano中的变量类型&#xff0c;也就是dscalar、dvector之类的, 然后还有一个theano.function和eval函数, 将我们所定义的操作转换成theano可执行的函数&#xff0c;类似于def, 还有就是简单的线性代数运算操作。 在神经网络(NN)中, 我们声明了权重、…

【theano-windows】学习笔记三——theano中的导数

前言 就一个NN而言&#xff0c;包含梯度、偏置、参数更新&#xff0c;而前面第一篇博客学习了theano中符号变量的定义, 第二篇博客学习了变量的随机初始化, 变量之间的互相操作(类似于sigmoid(w∗xb)), 但是参数更新还应涉及到损失函数的偏导计算&#xff0c;这一章节就是看看…