白板机器学习笔记 P46-P59 概率图模型

视频地址:https://www.bilibili.com/video/BV1aE411o7qd?p=46
笔记地址:https://www.yuque.com/books/share/f4031f65-70c1-4909-ba01-c47c31398466/bchg42

P46 概率图模型1 - 背景介绍
本节内容:前半部分讲了概率模型在面对高维随机变量时的困境:计算复杂度高。为了解决数据集D下的联合概率计算问题P(x1,x2,…,xn),我们要假设一些条件从而简化计算。从样本xi各属性无条件相互独立,到马尔科夫性(仅依赖前边一个或几个节点),再到条件独立性假设(在一定条件下样本属性集合之间相互独立),逐渐减小约束,使得问题近似和减少计算方面达到一个平衡;后半部分从表示、推断、学习、决策 等几个阶段对概率图进行分类。概率图模型中概率计算是目的,用图表示只是一种手段。
在这里插入图片描述
P47 概率图模型2 - 贝叶斯网络(有向图模型) - 条件独立性
两个工具
①链式法则:P(x1,x2,…,xn)=P(x1)·P(x2|x1)···P(xn|xn-1,xn-2,…,x1)。链式法则是对所有概率模型都有效的,是联合概率推导必然满足的一条数学规则;
在这里插入图片描述
②因子分解:按有向图直接写出的依赖关系概率式子。
在这里插入图片描述
本节内容:一个联合事件发生的概率从必然满足的数学规则收缩为概率图模型才满足的因子分解式,这是因为我们对概率图模型引入了额外的约束,也即条件独立性假设。视频后半部分推导了三种概率图模型的基本子结构,说明了条件独立假设是如何蕴含在这样的图节点表示之中的。
在这里插入图片描述
三种子结构
① tail-to-tail
直接列出这种结构的链式法则和因子分解表示,因为链式法则是对所有概率模型都成立,因子分解是只对概率图模型成立,故:对于概率图模型而言,两个等式分解是相等的。消去共有部分,得到 P(c|a)=P(c|a,b)。这里有两种方法证明条件独立:(1)直接可得。如式子所示,只要a发生了,c发生的条件概率跟b是否发生无关,显然条件c与条件b在条件a发生的情况下是相互独立的;(2)将上边等式同时右乘P(b|a),推导可得:P(c|a)·P(b|a)=P(b,c|a)。显然,a发生的情况下,b、c联合发生的概率等于它们各自发生概率的乘积,也说明在a发生情况下条件b和c相互独立。注意:第二种证法是由贝叶斯定理推导的,P(c|a,b)·P(b|a)=P(c|a,b)·P(b|a)·P(a)/P(a)=P(a,b,c)/P(a)=P(b,c|a)。
在这里插入图片描述
② head-to-tail
在b发生的情况下,a和c是条件独立的。
在这里插入图片描述
③ head-to-head
条件a和条件b是先天独立的,在c被观测到的情况下反而出现联系。
在这里插入图片描述
P48 概率图模型3 - 贝叶斯网络(有向图模型) - D-seperation
本节内容一:D划分。其实就是上节三种子结构描述的内容,用来判断两个条件集合之间是否相关。
在这里插入图片描述
本节内容二:推导证明xi基于其他所有条件的条件概率P(xi|x1,x2,…,xi-1,xi+1,…,xn)=P(xi|x-i)只与概率图中跟xi相邻的节点有关。这也就是马尔科夫毯的概念,之前一直疑惑马尔科夫毯为什么要把子节点的其他父节点包含进来,现在明白是算P(xi|x-i)时,其中子节点的条件概率P(xchild|xi,xparent(child))会把其他父节点包含进来,最后也计算入P(xi|x-i)之中。注意:下图红框部分的计算,分子分母都是一样的连乘形式,分母是对xi积分,所以与xi无关项可以被提到积分号外边跟分子约去,也就是说P(xi|x-i)的计算最后只跟包含xi的项有关。
在这里插入图片描述
P49 概率图模型4 - 贝叶斯网络(有向图模型) - 具体例子
本节内容:对贝叶斯模型的整体分类作以系统性介绍。从单一模型(朴素贝叶斯)到混合模型(GMM);从有限到无限(时间无限Marcov链、空间无限从离散到连续);混合模型+时间线==>动态模型(HMM、卡曼滤波、粒子滤波)。
在这里插入图片描述
P50 概率图模型5 - 马尔科夫随机场(无向图模型) - 条件独立性
本节内容:前半部分讲了马尔科夫网络的三种性质:全局马尔科夫性、局部马尔科夫性、成对马尔科夫性,并强调了这三种性质是等价的。后半部分为条件概率无向图的因子分解做了铺垫,引入了最大团的概念。因为不能像有向图那样直观的写成子节点基于父节点的条件概率,无向图中其实不分子节点和父节点的,其上下的节点只要联通都存在条件概率。因此,无向图的因式分解我们其实是按团为单位表示条件概率的,然后把所有团的条件概率再连乘起来。因为每个团内都是完全联通的,也即团内所有节点都相互依赖,可据此写出团的条件概率表示。
在这里插入图片描述
P51 概率图模型6 - 马尔科夫随机场(无向图模型) - 因子分解
在这里插入图片描述
P52 概率图模型7 - 推断(Inference) - 总体介绍
本节内容:概率图模型的本质还是求出那几个条件概率和先验概率,然后用贝叶斯公式求解。只不过原来完全求解的话,要用链式法则对所有变量进行积分,很多时候无法计算。概率图模型通过引入条件独立性假设,把这些概率计算收缩到只用算马尔科夫毯范围内的数个节点就可以了,通过这种方式让高维变量的贝叶斯估计可行。但是概率图模型的本质还是求概率,求概率被称为推断,包括给定联合概率P(x1,x2,…,xp)求解边缘概率P(xi)、条件概率P(xi|xj)和最大后验概率MAP。推断包括精确推断和近似推断,本节对两种推断包括的主流方法作以介绍。
在这里插入图片描述
P52 概率图模型8 - 精确推断(Inference) - 变量消除
变量消除:正常给定联合概率P(x1,x2,…,xp)计算边缘概率P(xi),要把联合概率按照xi之外的所有节点分别进行积分,最后只留下xi就得到了P(xi)。这时,比如要先后对x1和x2进行积分,两次积分中,我们对x3到xp这不含x1和x2的部分都要重复计算。这里的变量消除其实就是把同一个特征变量xi的所有式子先算,把这个变量消掉,这样在后续对其他变量的积分过程中避免重复计算。作者提的看法是类似乘法分配律,原来是先各项乘法再算加法,现在是先算加法再算乘法。
缺点:①计算复杂度跟图节点的计算次序关系很大,选择最优消去次序是一个NP难问题 ②求完P(xi)后再求P(xj)会引入重复计算。
在这里插入图片描述
P53 概率图模型9 - 精确推断(Inference) - Belief Propagation
本节内容:BP算法就是在变量消除的基础上,将子结构的值保存下来,避免重复计算。
在这里插入图片描述
P54 概率图模型10 - 精确推断(Inference) - Belief Propagation
本节内容:子结构mij的值是通过图的遍历计算的。如下图红框部分所示,a收集的信息量等于b收集的信息量乘以a/b之间的关系,其中b收集的包括b在内的其整个子树的信息量就叫做Belief。
在这里插入图片描述
P55 概率图模型11 - 精确推断(Inference) - Max Product
本节内容:之前BP算法讲的是求边缘概率P(xi),是要对所有xi之外的变量积分。本节不是求边缘概率,而是求最大的联合概率 argmax(P(x1,x2,…,xp))。只用联合概率展开式中每一项都求最大值即可。
在这里插入图片描述
P59 概率图模型14 - 道德图
核心思想:将有向图转化为无向图,方便一些计算和证明。①②两种有向图结构可以直接去掉箭头转化为无向图结构,其因子分解的势函数表示不变。③这种有多个双亲节点的结构,可以看其有向图因子分解中P(a,b,c) = P(a)·P(b)·P(c|a,b),最后一项P(c|a,b)如果在无向图中也能找到对应a,b,c三项的势函数,则a,b,c必须是一个团。但实际上双亲节点a和b之间不联通。所以如④所示,道德图的规则其实就是:当把有向图转为无向图时,一个节点的多个双亲节点之间要两两配上一条无向边,把子节点和它的所有父节点变成一个全连接的团。
在这里插入图片描述
P58 概率图模型13 - 因子图
本节内容:前边讲的BP算法只对树结构有效,而上一节我们讲的道德图将有向图转成无向图之后可能出现环,也就变成了图结构,BP算法无法处理,因此本节讲的因子图就是将图结构再变成树结构的方法。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个题怎么写题目描述 对于输入的任意一个非负十进制整数N,打印输出与其等值的m进制数。 本题特别说明: 1)我们以此题作为栈的入门级验证性实验,如果是实验课,请不要采用其它优化算法,老老实实按照数据结构(C语言版)教材p46-p48页上的类C代码进行改编。 2)关键是要仿照教材p46-p48页上的类C代码,编写初始化栈、入栈、出栈及判断栈空等函数。 3)类C代码99%可以照抄,主要是要注意类C代码各函数形参中的符号“&”--属于C++语言中的引用。在VC中调试时,如果文件扩展名为.c,则要遵循C语法规则,对于“&”不能照抄,“&”只能作为求地址运算符,因此,需要改编,实际上只要保证“传地址”就行了。如果文件扩展名为.cpp,则可按C++语法编写程序,“&”可作为引用运算符,因此“&”可以照抄...... 4)扩展名为.CPP的程序的总体框架,提示如下,仅供参考。 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef int Status; typedef struct { int *base; int *top; int stacksize; }SqStack; SqStack S; Status InitStack(SqStack &S) { //...... return OK; } Status Push(SqStack &S, int e) { //...... return OK; }//Push Status Pop(SqStack &S, int *e) { //...... return OK; }//Pop Status StackEmpty(SqStack &S) { //...... } void conversion() { int N,m; int e; InitStack(S); while(scanf("%d,%d",&N,&m)!=EOF) { //...... } } int main() { conversion(); return 0; }
最新发布
03-25

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值