Jhonatan de Souza Oliveira 的贝叶斯网络入门

这篇博文是 Jhonatan de Souza Oliveira 关于贝叶斯网络主题的专题访谈。

您能介绍一下自己吗?

我叫 Jhonatan Oliveira,是巴西维索萨联邦大学电气工程专业的本科生。从大学一开始,我就对人工智能很感兴趣,当时我第一次尝试为某个研讨会网站调查和构建一个简单的聊天机器人。我还是一个名为“BDP – Believe, Do and Play”的自主机器人足球队成员,我们为“小型联赛”的 RoboCup 类别研究和开发技术。

2012 年底,我获得了巴西政府“无国界科学”计划的交流项目奖学金。我去了里贾纳大学,在那里我有幸认识了著名的贝叶斯网络研究者 Cory Butz 博士。

从那时起,我和我的巴西朋友 Andre Evaristo 一直在与 Butz 博士一起研究贝叶斯网络的推理和建模。

什么是贝叶斯网络?

总的来说,贝叶斯网络 (BN) 是一个利用概率在不确定性下进行推理的框架。更正式地说,BN 被定义为一个有向无环图 (DAG) 和一组条件概率表 (CPTs)。在实践中,问题领域最初被建模为一个 DAG。让我们以“无需眼泪的贝叶斯网络”这本优秀参考书为例(PDF)。

假设晚上我回家时,我想在开门前知道我的家人是否在家。根据我的知识,我可以建立一个 DAG 来表示以下信息:通常,当我的家人外出时,室外灯是开着的,狗也在外面,但当狗有肠道问题时,它也在外面。如果狗在外面,我能听到它的叫声。这就是这个问题的 DAG,其中箭头表示因果关系。

Example bayesian network

有向无环图示例

从概率方面来说,我们需要一个联合概率分布 (JPD) – 在实践中,对于有限离散变量,它会是一个大表格,其中每一行将变量域的配置与一个概率值关联起来。在我们的例子中,所有 5 个变量都是二元的,JPD 会有 2^5 = 32 行,这现在听起来可能不算什么,但在更复杂的问题中,它可能难以处理。

Judea Pearl 在 1988 年以来发表的一系列论文中解决了 JPD 的棘手问题。他提出使用条件独立性将这个大的 JPD 表分解成小的表(是的,就是 CPTs)。

在我们的例子中,我们只需要提供 5 个小表格,总共会加起来 2^2 + 2^1 + 2^3 + 2^1 + 2^2 = 20 行。

在用 DAG 和 CPTs 对问题领域进行建模后,我们希望运行一些推理算法,以便在吸收一些新证据(例如,灯是开着的)后更新模型,甚至回答关于该问题的一些查询(例如,已知灯是开着的,听到狗叫声的概率是多少?)。

我们为什么需要贝叶斯网络?

人类不擅长在信息有限或冲突的情况下进行推理。考虑一个网络搜索引擎,用户输入查询,系统会提供一个结果列表。哪个网页与特定用户更相关?现在,考虑一个医疗诊断系统,其中患者具有某些但不全部的疾病症状。

如果我们有一个可以管理所有这些有限/冲突信息的工具,那将非常有用。所以,这就是我们为什么需要它们:BN 是一个不确定性管理框架。

贝叶斯网络的一些流行应用示例有哪些?

BN 已在许多领域得到应用,包括改进推进系统、维护系统和诊断分析等。

论文《面向时间关键决策的信息显示》展示了 NASA 如何使用 BN 来管理“对负责高风险、时间关键决策人员显示的信息的复杂性”。

微软利用 BN 构建了一个辅助软件,可以帮助用户在遇到 Windows 使用问题时。该软件称为“Lumiere 项目”,已用于 Microsoft Office '97 套件中的 Office 助手,它是一个智能用户界面,能够根据用户的背景、行为和查询来建模问题领域。

MIT 的心脏病项目的目標是“协助医生诊断患有心脏症状的患者,重点是血流动力学功能障碍”。BN 用于根据症状更新信念,然后利用推理来获得最可能的诊断。

为什么模糊逻辑和基于规则的系统不足以作为推理系统?

模糊逻辑并不总是直观的。例如,考虑抛硬币,正面朝上的概率是 0.5,反面朝上的概率是 0.5。那么,给定的一次抛硬币正面朝上“或”反面朝上的概率是多少?根据模糊逻辑,两个谓词与“或”运算符相关联的结果是两个谓词赋值的最小值,在我们的例子中,它将是 0.5 或 50%。尽管我们 100% 确定硬币会正面朝上“或”反面朝上。

另一方面,基于规则的系统缺乏语义。置信因子用于衡量一组“if-then”结构中的不确定性。例如,考虑这种情况:“如果网站打不开,则我的互联网连接丢失 - 系数为 9”。有人可能会问为什么是系数 9,为什么不是 19 或 900,甚至问 9 是高还是低。然而,基于规则的系统为了捕捉领域问题中的所有条件可能会呈指数级增长,在某些情况下变得不可行。例如,如果网站打不开,我对“连接丢失”的信念会很高,尽管我们没有检查服务器问题甚至浏览器错误的可能性。

贝叶斯网络有哪些局限性?

BN 最显著的弱点可能是其设计方法。没有标准的方法来构建 BN。

在复杂系统中,BN 的设计可能需要大量的精力,并且基于设计它的专家知识。尽管如此,从另一个角度来看,这个缺点也可能是有利的,因为 BN 可以被设计者轻松检查,并保证使用了领域特定信息。

您会推荐哪些资源给贝叶斯网络初学者?

对于 BN 初学者(但具备一些 AI 知识),我会从优秀的《无需眼泪的贝叶斯网络》(PDF) 开始。

关于贝叶斯网络的教科书,我推荐

一个出色的学术资源是“不确定性人工智能协会”(AUAI)。当然,Judea Pearl 的网站是 BN 素材的丰富资源。

18 条对 Jhonatan de Souza Oliveira 的贝叶斯网络入门的回复

  1. Emek 2014年4月9日下午4:48 #

    很棒的文章。您能解释一下您是如何得出以下结果的吗?

    2^2 + 2^1 + 2^3 + 2^1 + 2^2 = 20 行

    • Jhonatan Oliveira 2014年4月9日晚上10:08 #

      你好,Emek!谢谢!
      好问题,确实。我当时没有详细介绍,抱歉。
      在为 BN 建模时,所需的 CPTs 定义为子节点给定父节点的条件概率(我们可以使用链式法则和变量之间的独立性来证明这一点),即 P(子节点 | 父节点)。
      在我们持续的例子中,我们需要的 CPTs 是:P(听到叫声 | 狗在外)、P(狗在外 | 家人外出,肠道问题)、P(肠道问题)、P(家人外出)和 P(灯亮 | 家人外出)。
      考虑到我们的变量是二元的,我们会得到表格大小为:2^变量数量。因此:2^2 + 2^3 + 2^1 + 2^1 + 2^2。
      希望现在更清楚了。
      请告诉我。

      • marcos 2014年5月14日晚上8:29 #

        你好 Jhonatan,

        好文章。

        您会推荐 Python 包 Scikit-Learn 来处理贝叶斯网络吗?

        希望能收到您的回复。

  2. Jhonatan Oliveira 2014年5月23日上午10:47 #

    你好,Marcos。
    我从未在 BN 活动中使用过 Python Scikit,尽管我知道它是一个非常有趣的工具。
    BN 研究人员通常最终会构建自己的软件,这使得在该领域很难有一个广为人知的软件包。
    但我听说过这个名为 JavaBayes ( http://www.cs.cmu.edu/~javabayes/index.html ) 的软件,尽管我也没用过。
    它是开源的,遵循 GNU 许可。
    谢谢,Marcos。

  3. Siobhán 2017年4月26日早上8:50 #

    很棒的文章。我正在构建我的第一个 BN,感谢您深思熟虑的指导!

  4. GUSTAVO 2017年11月5日早上10:46 #

    您好,您会推荐免费软件来建模贝叶斯网络吗?像 agenarisk、netica 等软件非常昂贵,而且它们的试用版毫无用处。如果您的推荐是 weka,我在哪里可以找到关于 weka/贝叶斯网络的好的教程?谢谢。

    • Jason Brownlee 2017年11月6日凌晨4:48 #

      抱歉,我不能。我希望将来能详细介绍贝叶斯网络。

  5. Jesús Martínez 2018年3月24日凌晨1:16 #

    非常好的文章。贝叶斯网络是任何人工智能从业者真正强大的工具。有没有好的资源或库可以开始学习贝叶斯网络?比如 sklearn 那样的。

    提前感谢你的时间和关注!

    • Tobi Adeyemi 2018年7月4日晚上10:06 #

      看看 PYMC3

  6. Valdemar Lipenko 2019年2月1日晚上9:45 #

    关于贝叶斯网络的工具:您可能想试试 Hugin。它可以在其网站上免费获取,功能强大,并提供各种编程语言(Python、Java、C# 等)的 API。

    希望这能帮助您进一步探索极其令人兴奋的贝叶斯网络:)

    附注。
    特别是对于 Python,PyBayes 似乎也涵盖了这个主题,尽管我还没试过(到目前为止),因此无法真正判断其有用性。

  7. jennyjen 2019年2月26日晚上7:24 #

    非常好的文章。嗯,我同意 Jesús Martínez 的观点,贝叶斯网络对于任何人工智能从业者来说都是一个非常强大的工具。

  8. Srinivasa Dinesh Parupalli 2020年2月21日凌晨4:00 #

    我对 BN 有几个问题。你能帮忙解答吗?

  9. maryam 2020年3月2日早上9:38 #

    嗨,Jason,
    我非常感谢您出色的博客作为我的导师。
    我将开始搜索“深度学习中的不确定性”,并一如既往地看到了您的博客。
    您介意给我一些关于“深度学习中的不确定性”的学习教程视频、书籍或网站吗?
    老实说,我在网上看了很多教程,感到很困惑,所以如果您能给我一些有用的建议,我将非常感激。

    提前感谢。

    Maryam

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。