打字猴:1.70053761e+09
1700537610
1700537611
1700537612 图8.9 贝叶斯网络
1700537613
1700537614 知识点
1700537615
1700537616 概率图模型,条件概率,采样
1700537617
1700537618 问题 如何对贝叶斯网络进行采样?如果只需要考虑一部分变量的边缘分布,如何采样?如果网络中含有观测变量,又该如何采样?
1700537619
1700537620 难度:★★★☆☆
1700537621
1700537622 分析与解答
1700537623
1700537624 对一个没有观测变量的贝叶斯网络进行采样,最简单的方法是祖先采样(Ancestral Sampling),它的核心思想是根据有向图的顺序,先对祖先节点进行采样,只有当某个节点的所有父节点都已完成采样,才对该节点进行采样。以场景描述中的图8.9为例,先对Cloudy变量进行采样,然后再对Sprinkler和Rain变量进行采样,最后对WetGrass变量采样,如图8.10所示(图中绿色表示变量取值为True,红色表示取值为False)。根据贝叶斯网络的全概率公式
1700537625
1700537626
1700537627
1700537628
1700537629 (8.20)
1700537630
1700537631 可以看出祖先采样得到的样本服从贝叶斯网络的联合概率分布。
1700537632
1700537633
1700537634
1700537635
1700537636 图8.10 祖先采样示例图
1700537637
1700537638 如果只需要对贝叶斯网络中一部分随机变量的边缘分布进行采样,可以用祖先采样先对全部随机变量进行采样,然后直接忽视那些不需要的变量的采样值即可。由图可见,如果需要对边缘分布p(Rain)进行采样,先用祖先采样得到全部变量的一个样本,如(Cloudy=T,Sprinkler=F,Rain=T,WetGrass=T),然后忽略掉无关变量,直接把这个样本看成是Cloudy=T即可。
1700537639
1700537640 接下来考虑含有观测变量的贝叶斯网络的采样,如图8.11所示。网络中有观测变量(Sprikler=T,WetGrass=T)(观测变量用斜线阴影表示),又该如何采样呢?最直接的方法是逻辑采样,还是利用祖先采样得到所有变量的取值。如果这个样本在观测变量上的采样值与实际观测值相同,则接受,否则拒绝,重新采样。这种方法的缺点是采样效率可能会非常低,随着观测变量个数的增加、每个变量状态数目的上升,逻辑采样法的采样效率急剧下降,实际中基本不可用。
1700537641
1700537642
1700537643
1700537644
1700537645 图8.11 含有观测变量的贝叶斯网络
1700537646
1700537647 因此,在实际应用中,可以参考重要性采样的思想,不再对观测变量进行采样,只对非观测变量采样,但是最终得到的样本需要赋一个重要性权值:
1700537648
1700537649
1700537650
1700537651
1700537652 (8.21)
1700537653
1700537654 其中E是观测变量集合。这种采样方法称作似然加权采样(Likelihood Weighted Sampling),产生的样本权值可以用于后续的积分操作。在有观测变量(Sprikler=T,WetGrass=T)时,可以先对Cloudy进行采样,然后对Rain进行采样,不再对Sprinkler和WetGrass采样(直接赋观测值),如图8.12所示。这样得到的样本的重要性权值为
1700537655
1700537656 w∝p(Sprinkler=T|Cloudy=T)·p(WetGrass=T|Sprinkler=T,Rain=T)=0.1×0.99=0.099.
1700537657
1700537658
1700537659
[ 上一页 ]  [ :1.70053761e+09 ]  [ 下一页 ]