深蓝学院-概率图模型-第三章

变量消元法

基本思想: 通过从联合概率分布逐步消除变量,求解边缘概率

变量消元法示例一

小结

  • 变量消元法把全局概率的推理计算,转换为局部变量的因子乘积和因子求和运算
  • 变量消元法地的时间复杂度由消元过程中产生的中间因子的规模决定
  • 变量消元法的时间复杂度与消元顺序有关,如:选择具有最少近邻节点的变量进行消元

团树传播算法

 团树传播算法先构造一个团树,把概率推理计算转为团树节点之间的消息传递,消息传递的本质也是因子的乘积求和运算

聚类图(cluster graph)

定义:对于给定的概率图模型,因子集为 Φ = ϕ \Phi={\phi} Φ=ϕ ,变量集为X,聚类图是定义在概率图模型上的一个无向图,每个节点i是变量集的子集 C i ⊆ X C_i\subseteq X CiX。聚类图必须满足族保持(family preserving),即每个因子 ϕ \phi ϕ必须与一个节点 C i C_i Ci关联,使得 S c o p e [ ϕ ] ⊆ C i Scope[\phi]\subseteq C_i Scope[ϕ]Ci。一对节点 C i C_i Ci C j C_j Cj之间的每条边与一个割集 S i j ⊆ C i ∩ C j S_{ij} \subseteq C_i\cap C_j SijCiCj关联。
在这里插入图片描述

变量消元法构建聚类图性质

  • 性质1:树状图 在变量消元的过程中,每个中间因子被使用了一次,每个聚类图的节点传递一个消息给唯一的另一个节点,因此整个变量消元过程产生的聚类图为一个树状图
  • 性质2:族保持 概率图模型的每个因子必须出现在某个消元步骤,所以满足族保持性质
    • 族保持定义:在一个概率图模型中,变量集合A和变量集合B在给定一些其他变量的条件下是条件独立的,那么在任何子图模型中,这个条件独立性仍然保持
  • 执行交叉性质:对于聚类图,如果对于任意变量 X ∈ C i , X ∈ C j X\in C_i,X\in C_j XCi,XCj,若X也出现在两个节点之间唯一路径上的每个节点,则该聚类图满足执行交叉性质.
    团树定义:如果聚类图满足以上三个性质,则称为团树,由变量消元法得到的聚类图为团树

团速传播算法计算X的边缘概率

  1. 利用变量消元构造团树,团树节点势函数初始化
  2. 选取变量X所在的节点为根节点
  3. 计算叶子节点到根节点的消息
  4. 根节点的势函数乘以来自邻节点的消息
  5. 计算变量X所在节点的边缘概率

求概率图所有节点的边缘概率

小结

  • 变量消元法和团树传播算法在本质上是一样的,从不同的角度出发
    -团树传播算法只需要从叶子节点到根节点,再从根节点到叶子节点,即可计算出所有节点的边缘概率

信念传播算法(BP)

简介:BP算法在树模型上收敛,能得到准确的结果,在环状图模型上为近似推理算法;可以在聚类图上运行,也可以在因子图上执行,
算法流程(聚类图)

  1. 节点势函数初始化
  2. 所有消息初始化为1
  3. 选取所有边,迭代更新消息
  4. 当消息传递收敛时,计算所有节点的信念(blief)
    在树状图模型中,BP算法收敛,且所有节点的信念收敛为每个节点的边缘概率

BP算法(Bethe聚类图)

  • BP算法一般在Bethe聚类图上执行,Bethe聚类图等价于因子图
  • 定义(Bethe聚类图):Bethe聚类图具有两类节点,图模型的每个因子 ϕ k ∈ Φ \phi_k\in\Phi ϕkΦ对应一个节点 C k = S c o p e [ ϕ k ] C_k = Scope[\phi_k] Ck=Scope[ϕk],每个变量 X i X_i Xi对应一个节点 X i {X_i} Xi,如果变量满足 X i ∈ C k X_i\in C_k XiCk,则 X i {X_i} Xi C k C_k Ck之间有边连接。 简单来说,跟因子图的定义差不多
    在这里插入图片描述

BP算法和团树传播算法的联系

  • BP算法在团树上执行,传递机制等价于团树传播算法
  • BP算法在因子图上执行,不用构造团树,算法更简洁,BP算法只能在树状图模型上收敛

最大后验概率状态推理(MAP推理)

  • 推理算法包括求边缘概率、最大后验概率状态、归一化因子三类
  • 变量消元法、团树传播算法、BP算法把求和算子替换为求最大算子,即可用于MAP推理

变量消元法求MAP

**MRF(链状图模型):MAP推理
 就是要求A、B、C、D、E分别取什么值的时候,因子的累加和最大
逐层消去之后

文字叙述求解过程
这样化简到 m a x E λ 4 ( E ) max_E\lambda_4(E) maxEλ4(E),反过来推,就是E取什么值,使得 λ 4 ( E ) \lambda_4(E) λ4(E)最大;这样就确定了E的取值,然后将E的取值带入到左边 m a x D ( θ 4 ( D , E ) + λ 3 ( D ) ) max_D(\theta_4(D,E)+\lambda_3(D)) maxD(θ4(D,E)+λ3(D))中,可以求得一个D的取值,使得该式子的值最大。

团树传播算法求MAP

**MRF(链状图模型):MAP推理

文字叙述求解过程
正向推理
 由节点一到节点二,节点一中的变量减去割集,剩下A,因此对A求最大化,也就是 m a x a θ 1 max_a\theta_1 maxaθ1
反向推理
 由节点四到节点一,求解过程与正向推理相同
举个栗子

 首先是求从节点一到二,对于A来说,分为取 b 0 和 b 1 b_0和b_1 b0b1 当取 b 0 时 当取b_0时 当取b0 A 分为 a 0 和 a 1 A分为a_0和a_1 A分为a0a1,当取 a 0 a_0 a0的时候,值最大,同理,当取 b 1 b_1 b1时,分析同上;求节点二到节点一时,分析也同上;没啥意思

二值图切法

算法特点

  • 主要用来做最大后验概率状态推理(或能量最小化问题)
  • 图切法能在特定的二值概率图模型中得到精确推理结果,该图模型特点如下:
    • 每个变量的取值数为2
    • 边上的势函数满足次模型不等式

最小s-t切分 (图论)

定义:图G上找一个最小权重的s-t切分,s-t切分定义为将节点集合V划分成两个不连通的子集合S和T,其中源节点s在集合S,汇节点t在集合T中,即找到一个切分使得所有切边权重之和最小
c ( S , T ) = ∑ u ∈ S , v ∈ T , ( u , v ) ∈ E W u v c(S,T) = \sum_{u\in S,v\in T,(u,v)\in E}^{} W_{uv} c(S,T)=uS,vT,(u,v)EWuv

最小s-t切分等价于最大流问题

最大流问题

  • 寻找一个从s节点到t节点的路径,路径的容量大于0;
  • 从该路径上流经最大流量
  • 构造残差图
  • 重复上述过程,直到没有满足条件的路径
图一到图二,构造残差图,让这条线上的每个边减去这条边的最大流量;图4中$v_1和v_2$不是s t节点,因此减去一个,另一个方向就要加上对应的值;一直循环,直到图中路径容量不大于0;把每次求得的最大流量相加起来,即为整个图的最大流。
由上图可以看出,三个流量为0的管道,将图分为两部分,将与source节点由有管道相连,且不为0的部分,划分到S;同理T的划分也同上。

利用图切分求概率推理问题

能量函数: m i n x ∑ p θ p ( x p ) + ∑ p q θ p q ( x p , x q ) 能量函数:\mathop{min}\limits_{x} \sum_{p}^{}\theta_p(x_p)+\sum_{pq}\theta_{pq}(x_p,x_q) 能量函数:xminpθp(xp)+pqθpq(xp,xq)

  • 假设有一个概率图模型,其有N个节点,则我们为了利用图切法求解上述的能量函数,就需要构造一个带有权重的有向图,其包含N+2个节点,多出来的那两个节点为源节点 s汇节点 t
  • 将能量函数的每一个节点势函数和边势函数通过一定的规律复制到图G,将赋值后的边的权重累加,最终得到带权重的图G

图切法的适用条件

定义(图可表示,graph-representable):一个n个变量的二值能量函数 E ( X 1 , X 2 , . . . . , X n ) E(X_1,X_2,....,X_n) E(X1,X2,....,Xn)称为是图可不表示的,如果存在一个带有源节点s和一个汇节点t的图 G ( V , E ) G(V,E) G(V,E),其中 V = { s , t } ∪ { X 1 , X 2 , . . . . , X n } V={\{s,t\}}\cup {\{X_1,X_2,....,X_n\}} V={s,t}{X1,X2,....,Xn},对于任意变量取值,能量函数的取值等于一个常数加上s-t切分的权重。当一个节点u属于S,则该节点的变量取值为0;当该节点u属于T,则变量取值为1。
次模性:对于定义在成对MRF上的能量函数,该能量函数是图可表示的条件是,边上的势函数满足次模性,即:
θ p q ( 0 , 1 ) + θ p q ( 1 , 0 ) − θ p q ( 0 , 0 ) − θ p q ( 1 , 1 ) > 0 \theta_{pq}(0,1)+\theta_{pq}(1,0)-\theta_{pq}(0,0)-\theta_{pq}(1,1)>0 θpq(0,1)+θpq(1,0)θpq(0,0)θpq(1,1)>0

能量函数的图表示

Statistical learning refers to a set of tools for modeling and understanding complex datasets. It is a recently developed area in statistics and blends with parallel developments in computer science and, in particular, machine learning. The field encompasses many methods such as the lasso and sparse regression, classification and regression trees, and boosting and support vector machines. With the explosion of “Big Data” problems, statistical learning has be- come a very hot field in many scientific areas as well as marketing, finance, and other business disciplines. People with statistical learning skills are in high demand. One of the first books in this area—The Elements of Statistical Learning (ESL) (Hastie, Tibshirani, and Friedman)—was published in 2001, with a second edition in 2009. ESL has become a popular text not only in statis- tics but also in related fields. One of the reasons for ESL’s popularity is its relatively accessible style. But ESL is intended for individuals with ad- vanced training in the mathematical sciences. An Introduction to Statistical Learning (ISL) arose from the perceived need for a broader and less tech- nical treatment of these topics. In this new book, we cover many of the same topics as ESL, but we concentrate more on the applications of the methods and less on the mathematical details. We have created labs illus- trating how to implement each of the statistical learning methods using the popular statistical software package R . These labs provide the reader with valuable hands-on experience.
### 关于深蓝学院路径规划课程第三章的内容 #### 3.1 主要概念和技术介绍 在深蓝学院的路径规划课程中,第三章主要探讨了基于采样的路径规划方法。这部分内容深入讲解了随机配置空间树(RRT, Rapidly-exploring Random Tree)[^1] 和其改进版本RRT*算法的特点及其应用场景。这些算法特别适用于高维度的空间以及存在复杂障碍物环境中寻找可行路径的情况。 #### 3.2 RRT与RRT*工作原理详解 - **RRT** 是一种增量式的搜索策略,在未知环境下通过不断向未探索区域扩展节点来构建一棵连接起点至目标点之间的树形结构。 - **RRT*** 不仅继承了RRT的优点,还引入重连线机制使得最终得到的解更加优化接近全局最优解。随着迭代次数增加,找到更优路径的概率也会随之增大. ```python import numpy as np class Node: def __init__(self, x, y): self.x = x self.y = y self.parent = None def get_random_node(): # Generate random node within environment bounds. pass def nearest_neighbor(nodes, new_node): # Find the closest existing node to a given point. pass def steer(from_node, to_node, extend_length=.5): # Create a new node by moving from one position towards another up until some distance limit. theta = math.atan2(to_node.y-from_node.y, to_node.x-from_node.x) new_x = min(extend_length*math.cos(theta)+from_node.x, max(-env_width/2.,min(env_width/2.,to_node.x))) new_y = min(extend_length*math.sin(theta)+from_node.y, max(-env_height/2.,min(env_height/2.,to_node.y))) new_node = Node(new_x,new_y) return new_node def rrt(start, goal, obstacle_list, rand_area=[-2, 2], expand_dis=0.1, path_resolution=0.05,max_iter=500): nodes = [start] for i in range(max_iter): rnd_node = get_random_node(rand_area) near_ind = nearest_neighbor(nodes,rnd_node) near_node = nodes[near_ind] new_node = steer(near_node, rnd_node, expand_dis) if check_collision(new_node,obstacle_list): continue new_node.parent=near_node nodes.append(new_node) dist_to_goal=np.linalg.norm([new_node.x-goal.x , new_node.y-goal.y]) if dist_to_goal<=expand_dis : final_nodes=steer(new_node,goal) if check_collision(final_nodes,obstacle_list)==False : return True,nodes return False,[] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼带师小弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值