https://www.toutiao.com/a6695926161593074183/

在本文中,我将使用置信度传播算法(BP)和一些示例数据。开始本文之前我默认您是了解贝叶斯网络的(BN),这篇文章解释了如何计算BN中不同变量的置信度,这有助于推理。

置信传播

我在GitHub上创建了一个包含BP代码的存储库「链接」,我将用它来解释算法。

首先,想象我们有一个多树,这是一个没有循环的图形。例如,下图中描绘的图表。我们有4个变量“雨”、“洒水器”、“福尔摩斯”、“华生”与定向边缘“雨”到“福尔摩斯”,“雨”到“华生”和“洒水器”。贝叶斯网络描绘了福尔摩斯和华生成为邻居的故事。一天早上福尔摩斯走出家门,发现草地是湿的。有两种情况,一种是下雨,一种是忘了关掉喷水器。所以,他去看邻居华生,看看他的草地是不是也湿了,当他看到它确实是湿的时,他很确定他没有忘记关洒水器,只是下雨了。那么,是信息从华生流向了洒水器,这种信息流用的是贝叶斯网络中的BP算法建模。

在BP中,我们让变量相互交谈,以交换彼此的信念。有两种方式:从父到子的消息以及从子到父的消息。总的来说,我们只需要使用5个公式来计算BP。在我的解释中,我会对某些公式和变量使用不同的名称,因为我发现一些来源相当具有误导性。

1.可能性

可能性包含有关儿童观察的信息,例如:没有观察到的福尔摩斯的草地是湿的可能性是1和不是湿的可能性是1。如果观察到湿草地,则湿润的可能性变为1,非湿润的可能性变为0,明显,这些单位矢量未标准化。

似然函数是来自变量子元素的所有传入消息的乘积

似然函数基本上是变量子节点发送的所有传入消息的乘积。它返回包含变量的每个可能值的似然值的似然向量。在“下雨”的情况下,它的基数为2,表示“是”和“否”两个状态。

如果变量没有子节点,因为它是图形中的叶节点并且未被观察到,则其似然向量将是单位向量,所有可能值都是1,例如,因为我们在开始时没有观察到福尔摩斯的草地,我们将其似然向量分别设置为[1,1],分别为“不湿”和“湿”。

在Python(numpy)代码中,它看起来是这样的

def likelihood(self):incoming_children_messages = np.array([c.message_to_parent(self)for c in self.children])return incoming_children_messages.prod(axis = 0)

2.先验

先验是在开始时已知的某些事件的概率,例如下雨概率为20%。如果先验未知,则由以下公式计算。它有点复杂,但我会尝试一下。先验为您提供了相应变量的无条件概率。因此,我们还需要包括条件句。

先验概率函数是父值的所有可能组合乘以相应输入消息的乘积的总和

条件概率也在我们的例子中给出。在该式中,“P(X | W)”与之对应。此外,我们需要使用来自所有父节点的传入消息,即公式中的“φ”。索引显示了消息的方向 - 从父变量“K”到当前变量“X”。使用这两部分(条件概率和来自父的消息),因为它们都提供有关变量概率的信息。一方面,我们看到给定父值的概率,另一方面,我们看到了他们的信息。没有观察,这些信息与父母的先验相对应。因此,这里,我们计算“X”的边缘值并摆脱了条件变量。

对于每个父母的消息,在条件概率中都存在一个对应的部分。因此,我们可以使用条件概率表(在此片段中为self.m)为每条消息执行点积。m在这个片段中。

3.置信度

置信度是我们观察到某些事件后的后验概率。它基本上是可能性和先验的标准化乘积。

信念是可能性和先验的标准化乘积

我们利用我们事先所知的概率,并从孩子们那里获得新知识。这样,我们就产生了一个关于变量的新的信念。如果一个变量同时具有父和子,则该信念是包含来自下方和上方的信息的更新概率(后验)。因此,每个传入的消息都被考虑在内。 “α”是一个常数,因为似然和先验的乘积可以总和大于1。这是具有变量的所有可能状态之和的除法的一种简写形式。

在这个Python片段中,规范化部分变得更加清晰。

4.传信息给父节点

为了计算变量的可能性,我们需要考虑来自变量子节点的所有传入消息,这些消息由似然函数中的lambda表示。

这个公式很混乱,但在查看一些Python代码时更容易理解。一般来说,我们从P(X | U)边缘化K,而X是发送者(子),K是接收者(父),U是X的父母,包括K。如果我们想象X的条件概率表,对于每个条目,我们采用父母的相应激活,并将各自的输入消息φ乘以各自的传入消息ϕ而不是K本身。然后,我们将该值乘以X的似然性。最后,我们将所有具有相同K值的值相加,并留下一个向量,即从X到K的消息。

因此,向父母发送的消息会考虑所有传入的消息,不管这些消息是由儿童还是父母发送的(接收消息的父母除外),并考虑给定某些父母的值的概率。因此,具有高概率的变量设置比低概率更容易转发传入消息。传入消息按该消息设置的条件概率进行评级。

我希望Python代码能够进一步澄清它。

或者以福尔摩斯为例:

5.给子节点的信息

计算由父发送给子的信息存在两种方式。要么将从其他子节点接收到的所有消息与当前节点的先验信息相乘,要么将当前节点的信念除以对应子节点给父节点的消息。

我们将这个公式称为Kappa,索引告诉我们消息的方向(从X到K)。

如果我们看一下这个信念的公式,我们就会发现这个公式是可能性和先验的乘积。然而,可能性是所有传入消息的乘积。因此,信息除以来自K的传入消息导致所有传入消息的产物,除了我们除以的消息和先前的消息。这样,我们可以解释计算Kappa的两种方式之间的相等性。给孩子的信息背后的直觉类似于给父母的信息。您将考虑所有传入的消息(因此请考虑您可以获得的所有信息)并将聚合发送到下一个节点。

alpha再次成为一个归一化常数。如果父节点只有一个子节点,则它无法从其他子节点收集消息,因为没有子节点。因此,它只会返回其先验值。

使用我在开始时提到的我的存储库,我们现在可以使用Holmes示例并计算不同情况下的信念。

为了使用该库,我们需要将它与NumPy库一起导入。

我们导入了存储库的Node类,它表示BN中的单个节点。在下一步中,我们实际创建表示单个概率变量的节点:“福尔摩斯的草地是湿的”,“雨”,“忘记关洒水器”和“华生的草地是湿的”。创建节点时,您必须提供一个名称。之后您需要设置一些属性,如基数和先验,或存在的可能性。

对于没有子节点,这是直接明了的。对于其他节点,它们确实有父节点而没有先行节点,我们需要定义一个条件概率表(CPT),它定义了给定来自父节点的所有可能输入的变量的概率。该CPT在代码中称为“m”。

正如您所看到的,“m”在矩阵的第一维中获取父项的值,在最后一个中获取实际变量的值,例如: (代码注释中的“此处”)草被弄湿的概率(1)如果没有下雨(0)并且洒水器被遗忘(1)是0.9。草湿的可能性是1,1,这意味着两种状态具有相同的可能性。

接下来,我们必须连接节点以定义因果关系。 Node类有一个名为“add_parent”的方法,它可以将变量连接到父变量。

在接下来的步骤中,我们假装福尔摩斯的草地是湿的(因此,可能[0,1])。然后,我们想知道华生的草地是否也是湿的(或者它是否有可能被弄湿)。

我们看到华生的草地确实趋于变湿(0.21对0.79)。因此,BN预计华生的草地会变湿,因为在雨这个节点上有联系,通过雨节点来传播信仰。

结论

BN的工具集在以下推理案例中非常有用,如下所示。我对整个因果推理研究领域感到非常兴奋,并认为在深度学习和一般人工智能方面也会取得很多进展。

科普篇:贝叶斯网络中的置信度传播相关推荐

  1. 专家打分法matlab,针对贝叶斯网络中引入专家评价的先验概率评估方法与流程

    本发明属于故障诊断领域,具体涉及一种针对贝叶斯网络中引入专家评价的先验概率评估方法. 背景技术: :贝叶斯网络作为故障诊断系统中常见的推理算法,网络根节点先验概率的准确程度直接决定着其能否快速定位第一 ...

  2. 动态贝叶斯网络中TBN与DBN的区别

    Temporal Bayesian Network (TBN):  the model structure does not change over time slices,  i.e., the m ...

  3. 基于在软件工程中对贝叶斯网络的循证决策

    基于在软件工程中对贝叶斯网络的循证决策 摘要:在软件工程中的推荐系统应该设计成集成依据并成为从业人员的经验.贝叶斯网络为以证据为基础的决策提供了自然统计框架,通过结合现有证据的综合概要与相关的不确定性 ...

  4. 【Ryo】SPSS Modeler:贝叶斯网络在预测银行信贷风险中的应用

    对银行信贷来说,如何量化客户违约的可能性,对潜在的风险进行预测是管理决策层关注的重中之重.面对复杂的信息结构和庞大的人群数据,运用贝叶斯网络能够理清相关影响因素的关联关系,是现在提高信贷违约风险预测正 ...

  5. 概率图模型中的贝叶斯网络

    目录 一.概率图 二.贝叶斯网络 什么是贝叶斯网络? 贝叶斯网络结构怎么构建? 三.概率知识 四.贝叶斯网络知识 网络 条件独立性 结构 六.概率推断 七.案例分析 八.贝叶斯学习 九.Netica ...

  6. 分类算法之贝叶斯网络(Bayesian networks)

    2.1.摘要 在上一篇文章中我们讨论了朴素贝叶斯分类.朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立).当这个条件成立时,朴素贝叶斯分类法 ...

  7. 算法杂货铺——分类算法之贝叶斯网络(Bayesian networks)

    算法杂货铺--分类算法之贝叶斯网络(Bayesian networks) 2010-09-18 22:50 by T2噬菌体, 66011 阅读, 25 评论, 收藏, 编辑 2.1.摘要 在上一篇文 ...

  8. 贝叶斯分类器与贝叶斯网络

    原文地址:贝叶斯分类器与贝叶斯网络作者:yfx416 贝叶斯分类器是一种基于贝叶斯公式的分类器,是一种基于统计的分类器,它计算在某一特征向量的前提下,各种分类可能出现的概率.把概率最大的那个类当作最终 ...

  9. 机器学习算法(二十七):贝叶斯网络

    目录 1. 对概率图模型的理解 2. 贝叶斯方法 2.1 频率派观点 2.2 贝叶斯学派 2.3 贝叶斯定理 2.4 应用:拼写检查 3 贝叶斯网络 3.1 贝叶斯网络的定义 3.2 贝叶斯网络的3种 ...

最新文章

  1. sql server ssl安全错误_Nginx的这些安全设置,你都知道吗?
  2. 【Vegas2006】自我介绍for校青春风采大赛
  3. linux 打造man中文帮助手册图解(man-pages-zh帮助页)
  4. 伟大的人为什么伟大呢?
  5. ajax是操作系统吗,ajax 跟post 可以设置它是否同步执行
  6. 关于python字符编码以下选项中描述错误的是_关于import引用,以下选项中描述错误的是...
  7. grep命令做永久别名 显示颜色
  8. IT人才需要怎样的沟通表达能力
  9. jdk的安装(redhat)
  10. 小程序倒计时页面跳转
  11. mysql binlog 回滚_Mysql误操作后利用binlog2sql快速回滚的方法详解
  12. 怎样打开t6系统服务器,t6客户端如何连接服务器
  13. 第二周练习 委派任务
  14. 这可能是知乎中,最好的项目管理书单!
  15. 1235813找规律第100个数_2013年全国中考数学规律探索试题汇编
  16. 2020年年终总结_By 吾方羡
  17. 性能优化:Vue-ECharts使用CDN
  18. wireshark抓包看post请求的body是什么样子
  19. 国内前十大FPGA论坛社区网站精选
  20. 版署将出台新网游管理细则 资料片审批将明确

热门文章

  1. 以后要使用tf.keras不要单独使用KERAS
  2. QT安装由问题的,安装后发现有些控件标签名显示不了
  3. VS2019使用说明
  4. oracle 9i 在安装到Oracle Database Configuration assistant....的时候
  5. 新加坡国立大学李千骁:动力学系统与监督学习的关系探索
  6. 众人评说《我们在微软怎样开发(英文版)》
  7. 清华大学《大数据系统基础A/B》课程实践项目宣讲会来了
  8. MIT发布首个贝叶斯「数据清洗」机器人!8小时洗200万条数据
  9. 编程语言哪家强?4种数据分析领域语言优缺点对比
  10. 姚振宇:在数据科学培养下,我成为了那个不安分的“细菌” | 优秀毕业生专访...