贝叶斯网络(2)

目录

贝叶斯网络中的精确推理

通过枚举进行推理
变量消元算法
精确推理的复杂度
团算法

贝叶斯网络中的近似推理

直接采样算法
Markov链仿真推理

通过枚举进行推理

在这里插入图片描述
P ( B ∣ j , m ) = P ( B , j , m ) / P ( j , m ) = a ∗ P ( B , j , m ) = a ∑ e ∑ a P ( B , e , a , j , m ) P(B | j,m)\\ = P(B, j, m) / P(j,m) \\ = a*P(B, j, m)\\ = a\sum_e \sum_a P(B, e,a,j,m) P(Bj,m)=P(B,j,m)/P(j,m)=aP(B,j,m)=aeaP(B,e,a,j,m) (通过枚举隐变量来计算)

下面用链式规则计算 P ( B ∣ j , m ) P(B|j,m) P(Bj,m)

若使用全联合概率分布:
在这里插入图片描述

使用链式法则计算,转化为使用父节点表示模式,然后在CPT图找到相应值。
在这里插入图片描述

枚举算法伪代码:
在这里插入图片描述

枚举算法十分低效,其中有很多重复的计算,即 P ( j ∣ a ) P ( m ∣ a ) P(j|a) P(m|a) P(ja)P(ma)等都计算了两次。
在这里插入图片描述

精确推理的复杂度:在最坏的情况下,具有指数级时间空间复杂度
团算法,(类似记忆化搜索,联合搜索:个人推测)通过团算法,可以将一个复杂度为 O ( n 2 ) O(n^2) O(n2)的算法降到 O ( n ) O(n) O(n)

变量消元算法

按照从右到左的次序,把计算的中间结果保存下来,对每个变量的求和只需要查表就行了
在这里插入图片描述

贝叶斯网络的近似推理

由于精确推理时间空间复杂度太高,对大规模多联通网络是不可操作的,(NP)。
近似推理基本思想:
1、从分布S中进行N个样本的采样;
2、计算一个逼近的后验概率;
3、证明这个后验概率收敛到真实概率P。

近似推理方法

直接采样方法

根据已知概率分布生成样本,根据已知父节点得到赋值

在这里插入图片描述

直接采样,按照拓扑顺序依次对变量进行采样,采样时每个点取正负是由该点的概率分布决定的,即某个点取正的次数和负的次数比值需要符合一定的概率分布。

对与下列分布,先取Cloudy为真:
在这里插入图片描述

取完后看Cloudy的子节点中,C为T的概率分布,即S和R的第一行
在这里插入图片描述

这个时候取S为F, P ( S = f ) = 0.90 P(S = f) = 0.90 P(S=f)=0.90, 取R为T, P ( R = t ) = 0.80 P(R = t) = 0.80 P(R=t)=0.80
在这里插入图片描述

由于现在S = F且 R = T,所以直接看W的 &lt; F , T &gt; &lt;F,T&gt; <F,T>一栏
在这里插入图片描述

  • 直接采样法生成的样本服从网络所指定的先验联合概率分布
  • S p s ( x 1 , . . . , X n ) Sps(x_1, ..., X_n) Sps(x1,...,Xn)为先验采样生成的特定事件的概率由采样过程得到:
    在这里插入图片描述

所得到的该真实事件的概率:
S p s ( t , f , t , t ) = 0.5 ∗ 0.9 ∗ 0.8 ∗ 0.9 = 0.324 = P ( t , f , t , t ) S_{ps}(t,f,t,t) = 0.5*0.9*0.8*0.9 = 0.324 = P(t,f,t,t) Sps(t,f,t,t)=0.50.90.80.9=0.324=P(t,f,t,t)
当N的大量样本极限下,我们期望有32.4%的样本是这个事件

在任何采样方法中,都是通过对实际生成的样本数来计算的,其实就是求出生成的样本的分布,然后证明这些概率收敛到真实概率,利用取样概率去近似真实概率:
在这里插入图片描述

  • 估计概率在大量样本极限下成为精确值,这样的估计被称为一致估计
  • 例如:可以为不完全指定事件 x 1 , . . . , x m x_1, ... ,x_m x1,...,xm的概率产生一个一致估计,其中 m ≤ n m \leq n mn, 即:
    P ( x 1 , . . . , x m ) ≈ N p s ( x 1 , . . . , x m ) / N P(x_1, ... ,x_m) \approx N_{ps}(x_1, ..., x_m) / N P(x1,...,xm)Nps(x1,...,xm)/N

Rejection sampling(拒绝采样)

由一个易于采样的分布出发,为一个难以直接采样的分布产生采样样本的通用算法,在其最简单的形式中,它可以用于计算条件概率,也就是确定 P ( X ∣ e ) P(X|e) P(Xe)

计算步骤:

  • 1、根据网络指定的先验概率分布生成采样样本;
  • 2、拒绝所有与证据不匹配的样本;
  • 3、在剩余样本中对事件 X = x X = x X=x的出现频繁程度计数从而得到估计概率。

算法伪代码:

for j = 1 to N do:
    x  = PRIOR-SAMPLE(bn) //先验信息采样(直接采样)
    if x is consistent with e then
    	N[x] = N[x]+ 1 where x is the value of X in x
 return NORMALIZE(N)

拒绝采样的缺点是它拒绝了太多的样本。

似然加权

只生成与证据e一致的事件,避免了拒绝采样的低效率
这个算法固定了证据变量的值,只对非证据变量采样,保证了生成的每个事件都与证据一致。

马尔科夫链蒙特卡洛(MCMC)

MCMC和之前的采样法不一样,他是在状态空间中,随机游走,每次修改一个变量的值,但保持证据变量的值固定不变。
算法流程:

  • 总是通过前一事件进行随机改变而生成每个事件样本;
  • 为每个变量指定了一个特定的当前状态,下一个状态是通过改变非证据变量 X i X_i Xi进行采样产生,其取决于 X i X_i Xi的马尔科夫覆盖中的变量的当前值;
  • 在状态空间中随机游走,保持证据变量的值固定不变。

MCMC采样最终会进入一种动态平衡,即每个状态上消耗的时间与其后验概率成正比。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值