【发布时间】:2018-11-07 05:49:26
【问题描述】:
我正在尝试围绕贝叶斯网络中的采样(目前是简单的未优化先前采样)。据我了解,这个想法是产生有限数量的样本,然后看看它们如何通过网络传播。我不明白,为什么这个过程需要随机数生成器。
假设您有一个随机变量节点,其条件概率分布 (CPD) 如下:
| Color | P(Color) |
|------------------|
| Red | 0.1 |
| Green | 0.2 |
| Blue | 0.7 |
然后我可以找到的介绍说,对于您想要获取的每个样本,您应该调用一个 random() 函数,产生例如[0.0, 1.0) 中的东西,然后检查,进入哪个子区间 Red:[0.0, 0.1), Green:[0.1, 0.3) 或 蓝色:[0.3, 1.0) 它会掉落。
我的问题是,为什么还要调用随机数生成器?毕竟,你的概率就摆在你面前。如果您提前决定要创建数量 n 个样本,难道您不能让 0.1*n 个样本为红色,0.2* n 个样本为绿色,0.7*n 个样本为蓝色?对于具有 CPD 的子节点,您可以根据其各自的条件概率拆分所有红色、绿色和蓝色样本,同样无需使用随机数生成器。
这仍然是一个近似值,因为您还没有对完整的联合概率分布进行推理。在极限情况下,这应该仍然接近 n --> 无穷大 的正确条件概率,不是吗?
【问题讨论】:
标签: artificial-intelligence bayesian-networks reasoning