Bayes Nets -- Bayesian Networks(11)
上一讲(概率论基础)我们学到,只要有完整的联合概率分布,我们就能回答任何概率问题。但同时也暴露了一个致命问题:这个联合分布表的大小会随着变量数量的增加而指数级增长,在现实问题中完全不可行。
这一讲的核心就是解决这个问题:如何利用变量间的独立性关系,来紧凑、高效地表示一个完整的联合概率分布。这个解决方案就是贝叶斯网络 (Bayesian Networks)。
不过在介绍贝叶斯网络之前, 我们先介绍在其之上的一个概念, 概率图模型.
概率图模型
概率图模型(Probabilistic Graphical Model,PGM)是一种用图结构来表示和推断多元随机变量之间条件独立性的概率模型。图模型提供了一种直观且有效的方式来描述高维空间中的概率分布,通过图结构表示随机变量之间的关系,使得模型的参数量得以减少。
概率论负责处理不确定性和随机性, 图论提供了一种直观且强大的数据结构,用来表示变量之间的依赖关系。
条件概率
考虑一个由 K 个离散随机变量 X1, X2, …, XK 组成的随机向量 X = [X1, X2, …, XK]T,其中每个变量都有 M 个可能的取值,其联合概率在高维空间中的分布很难直接建模。在没有任何独立性假设的情况下,我们需要为每一种组合分配一个概率值。每个变量有 M 个可能的取值,因此有 MK 种可能的组合。由于概率的总和必须等于1,所以最后一个概率值可以通过对其他概率值进行补充得到,因此,我们需要 MK − 1 个参数。
当 M = 2 且 K = 100 时,参数量(约为 1030)将远远超出目前计算机的存储能力。为了有效减少参数量,可以使用独立性假设。一个 K 维随机向量 X 的联合概率可以分解为 K 个条件概率的乘积。如果某些变量之间存在条件独立性,参数量就可以显著减少。
对于一个 K 维随机向量 X,其联合概率可以分解为条件概率的乘积:
p(x) ≜ P(X = x) = ∏_k = 1Kp(x_k|x_1, …, x_k − 1)
它被称为概率的链式法则 (Chain Rule of Probability)。它将一个复杂的多维联合概率问题,分解成了一系列更简单的一维条件概率的乘积。
概率回忆
什么是概率分布: 一个概率分布描述了一个随机变量所有可能取值及其对应的概率。我们通常用一个数学函数p(x)来精确地描述这个对应关系,这个函数被称为概率质量函数 (PMF)(对于离散型变量)或概率密度函数 (PDF)(对于连续型变量)。
因此对于上述公式, p(x)=…是一个以 x 为变量的函数表达式, 这个函数的功能是,你给它任何一个可能的具体向量值 x, 它就能告诉你这个特定向量值发生的概率; 而这个函数本身,完整地刻画了随机向量 X 的概率分布(因此在离散情况下假如让你求类似的表达式, 也就是让你求出所有可能情况的分布)。
- 大写粗体字母 X:代表一个随机向量 (Random Vector)
- 它是一个变量,其值是随机的,并且是一个向量。可以把它想象成一个“容器”或一个“抽象概念”
- 如果我们同时掷两枚骰子,可以用一个二维随机向量 X = (X1, X2) 来描述这个随机事件。X 代表了从 (1,1) 到 (6,6) 所有36种可能结果的整个概率空间。
- 小写粗体字母 x:代表随机向量的一个具体实现
(Realization) 或观测值
- 它是从随机向量 X 的所有可能性中取出的一个特定的、具体的数值向量。
- 如果我们实际掷了一次两枚骰子,得到的结果是第一枚为3点,第二枚为5点,那么这次观测值就是 x=(3,5)。这个 x 就是随机向量 X 的一个具体实现。
其中,x = [x1, x2, …, xK] 表示变量 X 的取值。通过这种分解,我们可以将原本需要 MK 个参数的问题,降低到对每个变量的条件概率的参数的数量之和。如果某些变量之间存在条件独立关系,那么相应的条件概率的参数量就可以大幅减少。
概率图模型中,贝叶斯网络和马尔可夫网络都利用了这种条件独立性的结构,以更紧凑的方式表示联合概率分布,从而提高了模型的可解释性和计算效率。
条件独立
条件独立是指在给定某个特定条件(或第三个事件)C 已经发生的前提下,两个事件(或随机变量)A 和 B 变得独立。这意味着,一旦我们知道了条件 C 的信息,事件 A 的发生与否,就对事件 B 在该条件下的概率没有影响了。你可以把它理解为一种有条件的独立性。
对于三个事件 A, B, 和 C,A 与 B 在给定 C 的条件下条件独立当且仅当下列二者之一成立: - P(A, B ∣ C) = P(A ∣ C)P(B ∣ C) - P(A ∣ B, C) = P(A ∣ C)
举个例子
想象一下一个简单的医疗情景:
事件 A:病人有发烧的症状。
事件 B:病人有咳嗽的症状。
事件 C:病人患有流感。
首先,我们不考虑任何其他信息,只看事件 A(发烧)和事件 B(咳嗽)。问题是, 发烧和咳嗽是相互独立的吗?
答案当然不是。如果一个病人有发烧,你会自然地认为他生病了,比如感冒或流感。而这些疾病通常也会伴随着咳嗽。因此,发烧的存在增加了病人有咳嗽的可能性。反之亦然。
我们可以用因果关系来理解:因为流感这种病因可能同时导致发烧和咳嗽这两种症状。当流感这个“共同原因”未知时,两种症状看起来是相互关联的。
现在,我们引入条件 C。假设我们已经通过化验或其他诊断方法,确定病人患有流感。此时的问题是, 在已经知道病人患有流感的前提下,发烧和咳嗽还相互依赖吗?
答案当然是不再依赖。在这种情况下,我们已经找到了导致这两种症状的根本原因——流感。流感这个疾病本身就可以独立地引发发烧,也可以独立地引发咳嗽。
你已经知道病人有流感了,那么发烧这个症状的出现,并不会给你提供更多关于咳嗽的额外信息。因为你已经知道他们都有可能由流感引起。
因此, 条件独立关注的是在“幕后黑手”已经被揭示出来的前提下,两个事件的关系。一旦这个共同原因被确定,它们之间的表观关联就被“解释掉了”,从而变得独立。
下面我们将条件独立引入之前的条件概率和联合概率:
首先, 根据条件概率公式, 有: p(x1, x2, x3, x4) = p(x1) ⋅ p(x2|x1) ⋅ p(x3|x1, x2) ⋅ p(x4|x1, x2, x3)
通过假设条件独立并引入条件独立性假设,可以减少参数量
例如,在已知 X1 时,X2 和 X3 独立,即有:
p(x2|x1, x3) = p(x2|x1)
p(x3|x1, x2) = p(x3|x1)
在已知 X2 和 X3 时,X4 也和 X1 独立,即有:
- p(x4|x1, x2, x3) = p(x4|x2, x3)
这样可以将联合概率分解为四个局部条件概率的乘积,从而减少参数量:
p(x) = p(x1) ⋅ p(x2|x1) ⋅ p(x3|x1) ⋅ p(x4|x2, x3)
p(x1) 的参数数量为 1; p(x2|x1) 的参数数量为 2(在给定 X1 的条件下); p(x3|x1) 的参数数量为 2(在给定 X1 的条件下); p(x4|x2, x3) 的参数数量为 4(在给定 X2 和 X3 的条件下, 因为X2 和 X3组合有四种情况)
所以总的独立参数数量为 1 + 2 + 2 + 4 = 9 , 远小于指数级参数。
概率图模型的总体框架

从图中可以看出, 概率图模型涉及到三个基本问题:
表示问题:这个问题涉及如何选择和设计图结构,以有效地表示变量之间的依赖关系。在贝叶斯网络中,这通常涉及到选择合适的有向边,而在马尔可夫网络中,涉及到选择无向边。图结构的选择直接影响了概率模型的表达能力和推断效率。
学习问题:学习问题可以进一步分为两个部分:图结构的学习和参数的学习。在图结构的学习中,目标是从数据中推断出最合适的图结构,描述变量之间的依赖关系。在参数的学习中,已知图结构的情况下,目标是估计模型中的参数,使得模型与观测数据的拟合最好。
推断问题:推断问题涉及在给定部分变量的观测值时,计算其他变量的条件概率分布。这可以通过贝叶斯推断、变分推断等方法来解决。推断在概率图模型中是一个关键的任务,因为它允许我们根据观测到的证据来推断未观测到的变量的状态,从而进行概率推理。
贝叶斯网络
有向图模型(Directed Graphical Models)是概率图模型的一类,其中最为知名的代表是贝叶斯网络。这种模型在处理多变量概率关系方面表现出色,提供了一种直观、清晰的方法来描述随机变量之间的因果关系。
根据我们前面提到的内容 ,一个包含 n 个变量、每个变量有 d 个取值的联合概览分布表需要 dn 个条目来存储信息, 极度耗费空间。
贝叶斯网利用条件概率和条件独立性的思想,将这个大表分解为:
一个有向无环图 (Directed Acyclic Graph - DAG):用于直观地表示变量之间的依赖关系。
节点 (Nodes):图中的每个节点代表一个随机变量。这个变量可以是离散的(例如:天气是晴天、阴天还是雨天),也可以是连续的(例如:温度)。
有向边 (Edges):从节点 A 指向 B 的箭头通常表示 A 对 B 有直接影响。A 被称为 B 的父节点 (parent)。
- 箭头不一定代表严格的因果关系,它只表示变量之间可能存在某种概率上的依赖。
一组小的条件概率表 (Conditional Probability Tables - CPTs):每个变量都附有一个CPT,描述了它在其父节点取不同值时的概率分布。
- 每个节点 X 都有一个与之关联的CPT,即 P(X|Parents(X))。
- 这个表列出了在给定其所有父节点所有可能取值组合的情况下,节点 X 本身取每个值的概率。
- 没有父节点的节点(根节点),其CPT就是一个简单的先验概率分布 P(X)。
- 每个节点 X 都有一个与之关联的CPT,即 P(X|Parents(X))。
有向图模型/贝叶斯网络最核心的优势在于,在这个情境下一个变量的取值只与它的父节点有关,
因此能够将所有变量的复杂联合概率分布分解为一系列更简单的局部条件概率分布的乘积。具体来说,整个网络的联合概率可以表示为:
这个公式的含义是,计算所有变量同时发生的总概率时,我们只需要计算每个变量在其父节点发生的条件下的概率,然后将它们全部相乘。在这样的情况下, 原本指数级增长的参数数量,大幅降低到只与每个节点的父节点数量相关的程度,从而使大规模模型的构建和学习变得可行。
几类应用
上述思维导图中列出了一些典型的有向图模型,它们在不同领域有广泛应用:
- 朴素贝叶斯模型(Naive Bayes Model)
特点:这是一种最简单的贝叶斯网络,它有一个根节点(通常代表类别),所有其他叶子节点(代表特征)都直接从这个根节点引出, 就像一棵两层的树一样。
核心假设:它做出了一个非常“朴素”的假设——在给定类别的情况下,所有特征之间是相互独立的。
应用:虽然假设很强,但它在文本分类和垃圾邮件过滤等领域表现出奇的好。
- 隐马尔可夫模型(Hidden Markov Model, HMM), 这个我们之后会涉及到
特点:专门用于处理序列数据。它包含一个隐藏状态序列和一个可观测序列。隐藏状态是不可见的,但它们决定了可观测序列的生成。
核心假设:它遵循马尔可夫假设——当前隐藏状态只依赖于前一个隐藏状态。
应用:广泛用于语音识别、自然语言处理中的序列标注(如词性标注)等。
- 深度信念网络(Deep Belief Network, DBN)
特点:它是一种生成式概率模型,连接了经典图模型和现代深度学习。它由多层受限玻尔兹曼机(RBM)堆叠而成。
核心思想:通过分层的方式学习数据的高维表示,每层都捕捉了数据中更抽象的特征。
应用:在深度学习兴起初期,常用于无监督预训练,以提高神经网络的性能。