概率有向图模型

1. 前言

主要参考书籍《深度学习导论及案例分析》、维基百科“贝叶斯网络”、老笨妞的博客、PRML中文翻译,重点还是概念的掌握和几个小理论的推导,比较枯燥。加入了自己的一些简单理解。

个人感觉概率有向图模型最大的意义在于:一个特定的有向图表示将联合概率分布分解为条件概率分布乘积的形式。

2. 概念

2.1 等价概念

概率有向图模型、贝叶斯网络(Bayesian network)、信念网络(belief network)、有向无环图模型(directed acyclic graphical model)

2.2  一般结构

图由节点和边构成。节点一般是指随机变量,可以是观察到的,也可以是因变量或者未知参数等,边就标明了节点之间的条件概率关系,比如常说的P(X|Y)就说明在节点X出发有一条有向边连接到节点Y

【更新日志2018-11-14】上述加横线的描述感觉有点反人类,正常是因连到果,即Y连到X,不过我记得是哪本书说是X连到Y,所以可以暂时把上面那句话当做“常说的P(X|Y)就说明在节点Y出发有一条有向边连接到节点X”,以后如果再找到这句话的引用之处会贴出来,咳咳。

“因”与“果”:箭头出发的节点为“因”,被箭头指向的节点为“果”

所有节点的联合概率分布可以表示为:

这里面条件概率中的条件指的是xi节点的因,也就是直接相邻的出发节点。注意中间跨度一个节点再连接到xi的不算。

拿书中的例子来说:

图好大啊,就这样吧,懒。如上图所示的这个贝叶斯网络所有节点的联合概率分布就是

其实写下来简单:①对于节点X1,没有节点连接到它,就单独放;②对于节点X2,只有X1连接到它,那就是第二项;③对于X3,只有X2连到它,那就是第三项;.......;⑥对于X6,有两个直接连接到它的“因”节点,表达出来就是第六项;⑦对于X7,只有X6连到它,那就是最后一项。最后都乘起来就是联合概率了

【注意】这里的“因果”是一个单箭头连接起来的两个节点,对于经过多个节点的多个箭头连接起来的两个节点不是“因果”节点。

2.3 条件局部独立性

概念:任意节点与其非后代节点都条件独立于其父节点。

从三中拓扑结构来证明:

(1)串行连接或链

其联合分布为:

根据“条件局部独立性”可以得出这样一个结论:给定节点k时,节点 j 和其非后代节点 i 关于节点 j 的父节点 k 条件独立。

证明如下:

(2)发散连接

其联合分布为:

根据“条件局部独立性”可以得出这样一个结论:给定节点k时,节点 j 和其非后代节点 i 关于节点 j 的父节点 k 条件独立。

(3)收敛连接(书中图可能错了)

其联合分布为:

根据“条件局部独立性”可以得出这样一个结论:节点 i 和节点 j 是先验独立的

主要是因为

带入联合分布中就得到了

【结论】通过上面三个结构和证明可以得到这样一个结论(个人总结,对错可在评论区指出)

①对于串行连接和发散连接,在观察到中心变量k 时,节点 i 和节点 j 条件独立

②对于收敛连接,在没有观察到中心变量k时,节点 i 和节点 j ,先验独立,但是条件独立不确定。

2.4 d-划分

假设A、B、C是任意无交集的结点的集合,考虑从A中任意结点到B中任意结点所有可能的路径(此路径忽视箭头方向),如果满足下列任何一种条件:

①路径上的箭头从头到尾(串行连接)或者尾到尾(发散连接)的方式交汇于一个结点,且此结点在集合C中

②箭头从头到头(收敛连接)的方式交汇于一点,且这个结点和它所有的后继都不在集合C中

就说所有的路径被“阻隔”,即C把A从B中d-划分。

左图:交汇节点是e和f,对于aec和bfec串行连接,中间节点e没有被观察到,说明不独立。而aef虽然属于收敛连接,且独立,但是e的后继c被观察到了。对于f节点,发散连接,f 没被观察到,不独立。所以从a到b的路径并未被节点f阻隔。

右图:f节点是发散连接且被观察到了,条件独立,因而从a到b的路径被节点f阻隔。对于e节点,收敛连接,未被观察到,独立,且其后继节点c不被观察的变量内,所以路径也被e节点阻隔。

2.5 朴素贝叶斯图结构

朴素贝叶斯(naive Bayes)模型是一种分类方法,可以用图结构表示,使用条件独立性假设来简化模型结构。

假设观测变量是D维的,即

目标:将x的观测值分配到K个类别中的一个。

生成模型定义:引入类别标签上的多项式先验概率分布P(z|μ),其中μ的第k个元素表示类别Ck的先验概率,再引入观测向量x的条件概率分布P(x|z)。举个例子,给你一堆不同颜色的带有编号的球,每种编号的数目不同,而且在同一种颜色中,可能某个编号占据多数,先验分布P(z|μ)意思就是随便拿一个球,不观察颜色的时候瞎猜,猜对的概率是多少,其实也就是(某个编号的球的个数/球总数),而观测向量x就是颜色,条件概率分布P(x|z)意思就看了颜色以后,你心里有个谱,知道这个颜色的那个编号多,然后猜对的概率。

关键:朴素贝叶斯的关键假设就是,以类别z为条件,输入变量x的分布是独立的,原因看图。

发散连接,观测到z的时候,每个变量条件独立。但是无法对z求和或积分(意思就是z不是可观测变量了),那么z就不在阻隔x之间了,它们就不条件独立了。这就告诉我们,通常边缘概率密度P(x)是不可以关于x的元素进行分解。意思应该是,只能计算联合概率密度,即P(x1,x2,...,xD)但是无法拆开计算P(x1)、P(x2)....

再举一例:

假设每个类别的概率密度分布为高斯分布,根据朴素贝叶斯的假设,表明每个高斯分布的协方差为对角矩阵(因为各个观测变量独立了),且每个类别中常数密度的轮廓线是与坐标轴对其的椭球。边缘概率密度由对角高斯叠加组成(权系数由类别先验给出),因此不能对各个分量再进行分解。

2.6 全局马尔科夫独立性

几个概念:

① 在贝叶斯网络中,如果两个节点能够通过一条路径产生有效的相互影响(也就是说两个节点不独立),那么这条路径就称为有效路径(有效迹)

② 如果给定观察变量Z的时候,两个节点相互独立(通过2.3中的三种拓扑结构判断独立与否),就称为这就是所谓的全局独立性

判断有效路径小技巧:

对于串行连接和发散连接,只要两个节点之间可通过观测变量连接起来,那么这条路径就不是有效路径。

对于收敛连接,如果中间节点属于观测变量,而且路径上的其他节点都不属于观测变量,那么它就是有效路径。

例如在第一幅图的网络中,如果令(这里书上可能错了,因为书中的X和Z都包含第二个节点了,而Z是可观测变量,它的节点不可能出现在有效路径中)

显然在给定Z的时候,X和Y是相互独立的:节点1和3给定2独立;节点5和7给定节点6独立。(好像都是串行连接下的独立。PS个人认为书中有问题,如有疑问请评论区标注)

2.7马尔科夫随机毯(Markov blanket)

考虑联合概率分布,考虑第i个结点以其它所有节点为条件的条件概率分布

式子的分子分母中,所有与xi无关的因子都能提出来消去,唯一剩余的因子是第i个结点自身的条件概率以及以xi为父节点的节点xk,即第k个结点有两个父节点,其中一个父节点就是i,而此节点的条件概率分布的条件就是两个父节点。这样的由父节点、子节点、同父节点构成的节点集合称为马尔科夫毯。如下图所示:

此图就是节点xi的马尔科夫毯,由父节点、子节点、同父节点的集合构成。特点是以图中所有剩余节点为条件,xi的条件概率分布值依赖于马尔科夫毯中的变量。

马尔科夫毯是节点xi与图中剩余部分隔开的最小节点的集合,需要注意的是只有子节点和父节点是不够的,因为子节点的观测不会阻隔某个节点到同父节点的路径,因而也需要观测同父节点,按照上面的三个拓扑结构分析此图就能清晰。

 

3. 解释消除(explaining away)

概念:原本相互独立的多个原因在给定观察结果时,可能不再相互独立,而是变得相互依赖、相互影响。

书中的例子非常好,这里直接拿过来作为实例了:(我又感觉书画错了,书中箭头是反的)

B代表电池(battery)节点,1代表电池有电,0代表电池没电

F代表燃料(fuel)节点,1代表油箱还有有,0代表油箱没油了

G代表油表指针(ggauge)节点,1代表指针说油箱还有油,0代表指针说油箱没油了

这个有向图这样画的原因是根据常识:油表指针是由电量和实际燃料量决定的。也就是说电量和燃料的变动情况是油表指针变动情况的“因”,指针是“果”

这里要分析的是:①直接猜测F=0(没油)的概率,② 观察油表,猜测油箱没油的概率,③ 电池没电时候观察油表,猜测油箱没油的概率

形象点用条件概率表达,依次为:

先说一下已知条件:

根据贝叶斯网络结构,得到联合概率分布

然后就能计算得到知道油表指针空(G=0)的时候,油箱真的空(F=0)的概率为

对于分子

对于分母

 

注意求分母的这个式子中,第二个等号变换到第二个等号说明B和F是独立的,而独立原因在于我们并不知道收敛连接中心节点G的状态(参考拓扑结构3).

带入原式就能得到

这比不观察任何东西,瞎猜油箱满不满的概率(P(F=0)=0.1)高是必然的

再来计算一下观察到油表和电池都为0的时候,没油的概率

对比着三个计算油箱状态的方法:①瞎猜②看油表③看油表和电池。发现看油表猜油箱的油比较靠谱,但是当我们发现油表的电池快没电了,那么油表的可靠度就在下降。

这个例子就是所谓的解释消除(explaining away),本来相互独立的多个原因在给定观察结果时,可能不再独立,而是相互依赖,相互影响。根据收敛连接,没给定油表观察结果的时候,电池和燃料是相互独立(先验独立)的,但是给定油表的观察结果时,它俩又不独立了。

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

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

相关文章

概率无向图模型

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

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)中, 我们声明了权重、…