【问题标题】:Why random numbers in Bayes' Net Sampling为什么贝叶斯网络采样中的随机数
【发布时间】: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


    【解决方案1】:

    以下是 Hernan C. Vazquez 的 cmets,取自他第一个回答的上下文中的交流。在这次交流中,他的 cmets 回答了我最初的问题,所以我想我会把它们作为答案发布在这里。

    您需要随机,因为如果样本不是随机选择的,它可能会以某种方式存在偏差。您需要确保数据能够代表总体,而实现这一点的方法是通过随机数生成器。

    换句话说,你可以有 0.5 个正面或反面。如果我想取 2 个样本(n = 2),并且我使用 0.5 * n,那么每次出现 head 或 tail 时,我都会得到相反的结果,P(head | tail)= 1,反之亦然。这不是一个具有代表性的样本,因为 P (head | tail) = 0.5。你正在改变游戏规则。

    【讨论】:

      【解决方案2】:

      你是对的,你不需要随机抽样。一般来说,如果图表不是很大,您可以计算出准确的正确答案(例如通过变量消除)。然而,在实践中,概率模型通常非常复杂。变量消除之类的算法对他们来说可能太慢了。抽样方法是一种近似算法的方法,它通过重复生成随机数来产生答案。考虑到您可能有很多节点和边,并且需要计算它们之间的概率来回答,例如 P(Color=blue, NodeB=value1, ... 等等)。该解决方案可以是指数时间计算(取决于网络的大小)。

      为什么在抽样中生成随机数?您需要随机,因为如果不是随机选择样本,它可能会以某种方式存在偏差。您需要确保数据能够代表总体,而实现这一点的方法是通过随机数生成器。

      【讨论】:

      • 感谢您的回复。我明白,像变量消除这样的确切方法是 NP 难的。但是,我的问题是关于采样背后的数值/近似方法。我不清楚,为什么在采样方法中你需要一个随机数生成器。
      • 哦,如果我没听懂你的话,我很抱歉。您需要随机,因为如果不是随机选择样本,它可能会以某种方式存在偏差。您需要确保数据能够代表总体,而做到这一点的方法是通过随机数生成器。
      • 换句话说,你可以有头或尾,每个有 0.5。如果我想取 2 个样本(n = 2),并且我使用 0.5 * n,那么每次出现 head 或 tail 时,我都会得到相反的结果,P(head | tail)= 1,反之亦然。这不是一个具有代表性的样本,因为 P (head | tail) = 0.5。你正在改变游戏规则。
      猜你喜欢
      • 2020-03-25
      • 2013-04-08
      • 1970-01-01
      • 2012-08-31
      • 2011-01-09
      • 2012-07-14
      • 2013-05-11
      • 2013-07-19
      相关资源
      最近更新 更多