人工智能学习(十):什么是贝叶斯网络——伯克利版

article/2025/10/2 17:52:30

目录

10.1 概率建模

10.1.1 独立性

10.1.2 条件独立

10.1.2.1 条件独立和链式法则

10.2 贝叶斯网络

10.2.1 图形化的模型符号

10.2.2 贝叶斯网络的构建

10.2.3 贝叶斯网络的语义

10.2.3 贝叶斯网络中的概率

10.2.4 因果关系


10.1 概率建模

模型描述了世界的(一部分)运作方式。

模型总是简化的:

  • 可能没有考虑到每个变量,不关心或者无法为其建模。
  • 可能没有考虑到变量之间的所有相互作用,无法发现或者代价昂贵。
  • 所有的模型都是错的;但有些是有用的。 

在<人工智能学习(七):概率>中,我们主要谈论了动作,选择动作,动作序列,链式推理。但是在这一篇博文,我们要讨论的不是动作而是关于信念度。我们希望描述的是世界的某些部分,我们关心的变量是如何工作的。

我们用概率模型做什么?

我们(或我们的代理)需要通过给定证据对未知变量进行推理。

  • 解释(诊断性推理)
  • 预测(因果推理)
  • 信息的价值

10.1.1 独立性

 如果两个变量是独立的:

注意:公式 是普适的,而上面的公式有一个前提条件是两个变量相互独立,并不是普适的。

这就是说,他们的联合分布是由两个更简单的分布组成的产物。

另一种形式:

独立性是一个简化的建模假设:经验性的联合分布:最多 "接近 "独立。不存在完美的独立性。

通过计算发现不相等,我们可以说TW是不独立的两个变量:

下面P_2通过计算就满足独立性: 

一个极端的例子,如果我们通过抛n枚硬币,我们不需要写出指数级的联合分布表,只需要写出单个的概率表,因为变量之间是相互独立的。如果你问我任何有关联合分布的问题,我都可以通过将变量相乘得到答案。更加极端的说,其实我们可以给出更紧凑的表,一个表就可以代表所有东西,因为它们都是相同的。

10.1.2 条件独立

在条件独立中,我们不会说两个变量没有交互作用。我们说它们的互动在某种程度上是由另一个变量介导的。

P(Toothache, Cavity, Catch)

Toothachecatch|cavity

如果我有一个蛀牙(cavity),探针卡(catch)在里面的概率并不取决于我是否有牙痛:

P(+catch | +toothache, +cavity) = P(+catch|+cavity)

如果没有蛀牙,同样的独立性也是成立的:

P(+catch | +toothache, -cavity) = P(+catch| -cavity)

以上两个例子是说明,一旦了解了蛀牙,我就了解了是否卡住需要注意的所有问题,牙齿疼痛就不再重要了。这是独立吗?并不是,我们只能说随机变量catch,给定蛀牙(有条件的),独立于牙齿疼痛。是否卡住有条件的独立于牙痛。

P(Catch | Toothache, Cavity) = P(Catch | Cavity)

Equivalent statements:

P(Toothache | Catch , Cavity) = P(Toothache | Cavity)

P(Toothache, Catch | Cavity) = P(Toothache | Cavity) P(Catch |Cavity)

一个可以很容易地从另一个导出。

无条件(绝对)独立性非常罕见。

有条件的独立性是我们对不确定环境的最基本和最有力的知识形式。

交通情况和雨伞在给定下雨的条件下独立: 

火和警报在给定烟雾的情况下独立: 

10.1.2.1 条件独立和链式法则

10.2 贝叶斯网络

贝叶斯网络是一个描述大量变量的复杂分布的工具。其中大的分布由小块组成,这意味着局部相互作用,以及得出这些局部相互作用的产物描述了整个领域的结论所需的假设。

使用完整的联合分布表作为我们的概率模型有两个问题:

  • 除非只有几个变量,否则联合分布表太大,无法明确表示。
  • 每次从经验上很难学到(估计)超过几个变量的东西

贝叶斯网络

一种使用简单的局部分布(条件概率)来描述复杂的联合分布(模型)的技术。

  • 更恰当地称为图形模型
  • 我们描述变量如何进行局部互动。
  • 局部的相互作用连锁在一起,产生全局的、间接的相互作用。

例子:

10.2.1 图形化的模型符号

节点:变量(有域):

  • 可以是指定的(观察到的)或未指定的(未观察到的)。

弧:相互作用

  • 类似于CSP约束。
  • 表明变量之间的 "直接影响"。
  • 形式上:编码有条件的独立性(后面会有更多内容)。

现在:想象一下,箭头意味着直接因果关系(一般来说,它们不是!)。

10.2.2 贝叶斯网络的构建

下面有两个该域上的有效图形模型或贝叶斯网络,但是第二个模型要好一些,因为配备模型2的代理可以做出一些事情,比如看到交通,然后得到关于雨的结论,或者看到雨得到有关交通的结论。



10.2.3 贝叶斯网络的语义

一组节点,每个变量有一个X

一个有向、无环的图,

隐藏在每个节点内部的是条件分布:

  • 一组关于X的分布,每个父节点的值的组合都有一个分布P(X|a_1...a_n)
  • CPT:条件概率表。(节点中的东西)
  • 描述一个嘈杂的“因果”过程。

所以贝叶斯网络是一种拓扑结构,意味着一个图加上存在于节点内的小局部条件概率。

A \: \: Bayes\: \: net = Topology\: \: (graph) + Local \: \: Conditional\: \: Probabilities

10.2.3 贝叶斯网络中的概率

贝叶斯网隐含着对联合分布的编码:

  • 作为局部条件分布的乘积。
  • 要看一个BN给一个完整的分配的概率是多少,把所有相关的条件乘在一起。

为什么我们能保证设置

的结果是正确的联合分布?

对于链式法则,公式很相似,但它是:

但是我们有条件独立的假设,所以我们的公式为:

不是每个BN都能代表每个联合分布:如果我想表示两个变量的联合分布,但不是全部,我们表示的是变量独立的那些,如果我想表示那些不独立的就要有箭头。

  • 拓扑结构强制执行某些条件的独立性

例子:

10.2.4 因果关系

当贝叶斯网反映真实的因果模式时:

  • 往往更简单(节点有较少的父母)。
  • 往往更容易思考。
  • 通常更容易从专家那里得到启发。

贝叶斯网不一定真的是因果关系:

  • 有时领域中不存在因果网(特别是在变量缺失的情况下)。
  • 例如,考虑交通和下雨这两个变量。
  • 最终的箭头反映的是相关性,而不是因果关系。

箭头的真正含义是什么?

  • 拓扑结构可能刚好编码了因果结构
  • 拓扑结构实际上编码了条件独立性


http://chatgpt.dhexx.cn/article/lF2QfODO.shtml

相关文章

贝叶斯网络详解

0x01 贝叶斯网络概述 有时我们需要计算一个不确定原因的概率给出一些观察到的证据&#xff0c;在这些情况下可以使用贝叶斯方法。 贝叶斯网络&#xff08;bayesian network&#xff09; 是一种概率图形模型&#xff0c;它在图形模型中显式捕获已知的有向边的条件依赖性&#x…

【数据挖掘】贝叶斯网络理论及Python实现

1.理论知识 1.1贝叶斯网络概述 贝叶斯网络&#xff08;Bayesian Network&#xff0c;BN&#xff09;作为一种概率图模型&#xff08;Probabilistic Graphical Model&#xff0c;PGD&#xff09;&#xff0c;可以通过有向无环图(Directed Acyclic Graph&#xff0c;DAG)来表现。…

Android init.rc中vold socket语法简介

一、 前言 本篇文章以Android4.4代码为例&#xff0c;简单说明init.rc中vold里面socket语法的使用。 二、语法简介 2.1 init.rc位置 init.rc文件位置&#xff1a;/system/core/rootdir/init.rc 2.2 vold代码块位置 service vold /system/bin/voldclass coresocket vold s…

Android 7.0 Vold工作流程

一、Vold工作机制 Vold是Volume Daemon的缩写&#xff0c;它是Android平台中外部存储系统的管控中心&#xff0c;是管理和控制Android平台外部存储设备的后台进程。其功能主要包括&#xff1a;SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。 如上图所示&#xff0c;Vold中的…

1.9 深入理解Vold和Rild

第9章 深入理解Vold和Rild 9.1 概述 本章将分析Android系统中两个比较重要的程序&#xff0c;它们分别是&#xff1a; Vold&#xff1a;Volume Daemon&#xff0c;用于管理和控制Android平台外部存储设备的后台进程&#xff0c;这些管理和控制&#xff0c;包括SD卡的插拔事件…

Android之vold进程启动源码分析

1.Vold &#xff08;Volume Daemon&#xff09;介绍 vold进程接收来自内核的外部设备消息&#xff0c;用于管理和控制Android平台外部存储设备&#xff0c;包括SD插拨、挂载、卸载、格式化等&#xff1b;当外部设备发生变化时&#xff0c;内核通过Netlink发送uEvent格式的消息给…

<Android开发> Android vold - 第四篇 vold 的NetlinkHandler类简介

本系列主要介绍 Android vold&#xff0c;分为以下篇章 &#xff1c;Android开发&#xff1e; Android vold - 第一篇 vold前言简介 &#xff1c;Android开发&#xff1e; Android vold - 第二篇 vold 的main()函数简介 &#xff1c;Android开发&#xff1e; Android vold - 第…

<Android开发> Android vold - 第二篇 vold 的main()函数简介

本系列主要介绍 Android vold&#xff0c;分为以下篇章 &#xff1c;Android开发&#xff1e; Android vold - 第一篇 vold前言简介 &#xff1c;Android开发&#xff1e; Android vold - 第二篇 vold 的main()函数简介 &#xff1c;Android开发&#xff1e; Android vold - 第…

Android外部存储设备管理——vold挂载大容量存储设备

一、简介 Vold(volume Daemon)&#xff0c;即Volume守护进程&#xff0c;用来管理Android中存储类(USB-Storage&#xff0c;包含U盘和SD卡&#xff09;的热拔插事件&#xff0c;处于Kernel和Framework之间&#xff0c;是两个层级连接的桥梁。Vold在系统中以守护进程存在&#x…

Android Vold 架构简析

这篇文章中主要是分析一下&#xff0c;android系统里面的Vold——Vold是andorid系统的设备管理器&#xff0c;扮演着linux里面的udev的角色。它通过监听uevent的端口&#xff0c;取得 uevent事件&#xff0c;dispatch到 相应的Listener&#xff0c;执行相应的动作。 UEvent 在…

Android Vold架构

1. 总体架构 2. 流程概览 2.1 开启Vold 2.2 引导Uevent 2.3 处理事件 Vold - Volume Daemon存储类的守护进程&#xff0c;作为Android的一个本地服务&#xff0c;负责处理诸如SD、USB等存储类设备的插拔等事件。 1. 总体架构 Vold服务由volumeManager统一管控&#xff0c…

Vold 流程介绍

文章目录 前言框架MountService 流程Vold 流程 前言 印象中是参考 《深入理解 Android 卷 1 》 追的流程&#xff0c;差不多供参考吧 基于安卓 4.4 框架 MountService 流程 /*【初始化流程总结】&#xff1a; SystemServerinitAndLoop()// 创建 MountService 服务对象mountS…

ANDROID中的VOLD分析

现在可能很少有人会用mknod这个命令了&#xff0c;也很少有使用它的机会&#xff0c;但就在几年前&#xff0c;这还是一项linux工程师的必备技能&#xff0c;在制作文件系统前或加载新的驱动前&#xff0c;我们必须小心翼翼的创建设备节点。 不需要使用mknod并不是他消失了&am…

Android -- Vold机制简要分析

Android -- Vold机制简要分析 Vold是用于管理和控制Android外部存储介质的后台进程&#xff0c;这里说的管控&#xff0c;主要包括SD卡的插拔、挂载/卸载和格式化等&#xff1b;它是Android平台外部存储系统的管控枢纽。 Vold的整个控制模块主要由三个类模块构成&#xff1a;Ne…

Android Vold简介(一)

Vold(volume Daemon)&#xff0c;即Volume守护进程&#xff0c;用来管理Android中存储类的热拔插事件&#xff0c;处于Kernel和Framework之间&#xff0c;是两个层级连接的桥梁。先来看一下Vold在Android系统的整体架构。 该图主要包含了Framework和Vold进程的&#xff0c;Ke…

vold

一、Vold工作机制 Vold是Volume Daemon的缩写&#xff0c;它是Android平台中外部存储系统的管控中心&#xff0c;是管理和控制Android平台外部存储设备的后台进程。其功能主要包括&#xff1a;SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。 如上图所示&#xff0c;Vold中的…

Vold工作流程分析学习

一 Vold工作机制分析 vold进程&#xff1a;管理和控制Android平台外部存储设备&#xff0c;包括SD插拨、挂载、卸载、格式化等&#xff1b; vold进程接收来自内核的外部设备消息。 Vold框架图如下&#xff1a; Vold接收来自内核的事件&#xff0c;通过netlink机制。 Netlink 是…

Android vold介绍

目录 1. 前言2. vold概述3. vold初始化|- -vm->start()|- -process_config|- -hardware::configureRpcThreadpool|- -vold::VoldNativeService::start|- -nm->start() 4. StorageManagerService|- -SM与vold建立关联|- - -startService(serviceClass) |- -StorageManager…

<Android开发> Android vold - 第一篇 vold前言简介

本系列主要介绍 Android vold&#xff0c;分为以下篇章 &#xff1c;Android开发&#xff1e; Android vold - 第一篇 vold前言简介 &#xff1c;Android开发&#xff1e; Android vold - 第二篇 vold 的main()函数简介 &#xff1c;Android开发&#xff1e; Android vold - 第…

Vold原理介绍

一、 Vold简介 Android中Vold是volume Daemon&#xff0c;即Volume守护进程&#xff0c;用来管理Android中存储类的热拔插事件。这里的热插拔涉及的场景如&#xff1a; 1. 手机usb以MTP或者传输照片方式插拔PC端后磁盘数据的挂卸载&#xff1b; 2. 设备开关机过程中存储设备各分…