概率论是用于表示不确定性声明的数学框架。它不仅提供了量化不确定性的方 法, 也提供了用于导出新的不确定性 声明的公理。在人工智能领域,概率论主要有两种用途。首先,概率法则告诉我们 AI 系统如何推理,据此我们设计 一些算法来计算或者估算由概率论导出的表达式。其次,我们可以用概率和统计从 理论上分析我们提出的 AI 系统的行为。
为什么要使用概率?
计算机科学的许多分支处理的实体大部分都是完全确定且必然的。程序员通常 可以安全地假定 CPU 将完美地执行每条机器指令。虽然硬件错误确实会发生,但它 们足够罕见,以致于大部分软件应用在设计时并不需要考虑这些因素的影响。鉴于 许多计算机科学家和软件工程师在一个相对干净和确定的环境中工作,机器学习对于概率论的大量使用是很令人吃惊的。
概率与信息论
这是因为机器学习通常必须处理不确定量,有时也可能需要处理随机 (非确定性 的) 量。不确定性和随机性可能来自多个方面。至少从 20 世纪 80 年代开始,研究 人员就对使用概率论来量化不确定性提出了令人信服的论据。这里给出的许多论据 都是根据 Pearl (1988) 的工作总结或启发得到的。
几乎所有的活动都需要一些在不确定性存在的情况下进行推理的能力。事实上, 除了那些被定义为真的数学声明,我们很难认定某个命题是千真万确的或者确保某 件事一定会发生。
不确定性有三种可能的来源:
1. 被建模系统内在的随机性。例如,大多数量子力学的解释,都将亚原子粒子的 动力学描述为概率的。我们还可以创建一些我们假设具有随机动态的理论情境, 例如一个假想的纸牌游戏,在这个游戏中我们假设纸牌被真正混洗成了随机顺 序。
2. 不完全观测。即使是确定的系统,当我们不能观测到所有驱动系统行为的变量 时,该系统也会呈现随机性。例如,在 Monty Hall 问题中,一个游戏节目的参 与者被要求在三个门之间选择,并且会赢得放置在选中门后的奖品。其中两扇 门通向山羊,第三扇门通向一辆汽车。选手的每个选择所导致的结果是确定的, 但是站在选手的角度,结果是不确定的。
3. 不完全建模。当我们使用一些必须舍弃某些观测信息的模型时,舍弃的信息会 导致模型的预测出现不确定性。例如,假设我们制作了一个机器人,它可以准 确地观察周围每一个对象的位置。在对这些对象将来的位置进行预测时,如果机器人采用的是离散化的空间,那么离散化的方法将使得机器人无法确定对象们的精确位置:因为每个对象都可能处于它被观测到的离散单元的任何一个角落。
在很多情况下,使用一些简单而不确定的规则要比复杂而确定的规则更为实用, 即使真正的规则是确定的并且我们建模的系统可以足够精确地容纳复杂的规则。例 如,‘‘多数鸟儿都会飞’’ 这个简单的规则描述起来很简单很并且使用广泛,而正式的 规则 — — ‘‘除了那些还没学会飞翔的幼鸟, 因为生病或是受伤而失去了飞翔能力的 鸟,包括食火鸟 (cassowary)、鸵鸟 (ostrich)、几维 (kiwi,一种新西兰产的无翼鸟)等不会飞的鸟类……以外,鸟儿会飞’’,很难应用、维护和沟通,即使经过这么多的 努力,这个规则还是很脆弱而且容易失效。
尽管我们的确需要一种用以对不确定性进行表示和推理的方法,但是概率论并 不能明显地提供我们在人工智能领域需要的所有工具。概率论最初的发展是为了分 析事件发生的频率。我们可以很容易地看出概率论,对于像在扑克牌游戏中抽出一 手特定的牌这种事件的研究中,是如何使用的。这类事件往往是可以重复的。当我 们说一个结果发生的概率为 p,这意味着如果我们反复实验 (例如,抽取一手牌) 无 限次,有 p 的比例可能会导致这样的结果。这种推理似乎并不立即适用于那些不可 重复的命题。如果一个医生诊断了病人,并说该病人患流感的几率为 40%,这意味 着非常不同的事情 — — 我们既不能让病人有无穷多的副本,也没有任何理由去相信 病人的不同副本在具有不同的潜在条件下表现出相同的症状。在医生诊断病人的例 子中,我们用概率来表示一种信任度(degree of belief),其中 1 表示非常肯定病人 患有流感,而 0 表示非常肯定病人没有流感。前面那种概率,直接与事件发生的频 率相联系,被称为频率派概率(frequentist probability);而后者,涉及到确定性水 平,被称为 贝叶斯概率(Bayesian probability)。
关于不确定性的常识推理,如果我们已经列出了若干条我们期望它具有的性质, 那么满足这些性质的唯一一种方法就是将贝叶斯概率和频率派概率视为等同的。例如,如果我们要在扑克牌游戏中根据玩家手上的牌计算她能够获胜的概率,我们使 用和医生情境完全相同的公式,就是我们依据病人的某些症状计算她是否患病的概 率。为什么一小组常识性假设蕴含了必须是相同的公理控制两种概率?
概率可以被看作是用于处理不确定性的逻辑扩展。逻辑提供了一套形式化的规 则,可以在给定某些命题是真或假的假设下,判断另外一些命题是真的还是假的。概率论提供了一套形式化的规则,可以在给定一些命题的似然后,计算其他命题为真的似然。
随机变量
随机变量(random variable)是可以随机地取不同值的变量。我们通常用无格 式字体 (plain typeface) 中的小写字母来表示随机变量本身,而用手写体中的小写字 母来表示随机变量能够取到的值。例如,x 1 和 x 2 都是随机变量 x 可能的取值。对于向量值变量,我们会将随机变量写成 x,它的一个可能取值为 x。就其本身而言, 一个随机变量只是对可能的状态的描述;它必须伴随着一个概率分布来指定每个状 态的可能性。
随机变量可以是离散的或者连续的。离散随机变量拥有有限或者可数无限多的 状态。注意这些状态不一定非要是整数;它们也可能只是一些被命名的状态而没有 数值。连续随机变量伴随着实数值。
概率分布
概率分布(probability distribution)用来描述随机变量或一簇随机变量在每一个可能取到的状态的可能性大小。我们描述概率分布的方式取决于随机变量是离散 的还是连续的。
离散型变量和概率质量函数
离散型变量的概率分布可以用 概率质量函数(probability mass function, PMF) 1 来描述。我们通常用大写字母 P 来表示概率质量函数。通常每一个随机变量都会有 一个不同的概率质量函数,并且读者必须根据随机变量来推断所使用的 PMF,而不 是根据函数的名称来推断;例如,P(x) 通常和 P(y) 不一样。
概率质量函数将随机变量能够取得的每个状态映射到随机变量取得该状态的概 率。x = x 的概率用 P(x) 来表示,概率为 1 表示 x = x 是确定的,概率为 0 表示 x = x 是不可能发生的。有时为了使得PMF的使用不相互混淆,我们会明确写出随 机变量的名称:P(x = x)。有时我们会先定义一个随机变量,然后用 ∼ 符号来说明 它遵循的分布:x ∼ P(x)。
概率质量函数可以同时作用于多个随机变量。这种多个变量的概率分布被称 为 联合概率分布(joint probability distribution)。P(x = x, y = y) 表示 x = x 和 y = y 同时发生的概率。我们也可以简写为 P(x, y)。
如果一个函数 P 是随机变量 x 的 PMF,必须满足下面这几个条件: • P 的定义域必须是 x 所有可能状态的集合。
• ∀x ∈ x, 0 ≤ P(x) ≤ 1. 不可能发生的事件概率为 0,并且不存在比这概率更低的状态。类似的,能够确保一定发生的事件概率为 1,而且不存在比这概率更 高的状态。
• ∑ x∈x P(x) = 1. 我们把这条性质称之为 归一化的。如果没有这 条性质, 当我们计算很多事件其中之一发生的概率时可能会得到大于 1 的概 率。
例如,考虑一个离散型随机变量 x 有 k 个不同的状态。我们可以假设 x 是 均匀 分布(uniform distribution)的(也就是将它的每个状态视为等可能的),通过将它 的PMF设为
对于所有的 i 都成立。我们可以看出这满足上述成为概率质量函数的条件。因为 k 是一个正整数,所以 1/k 是正的。我们也可以看出
因此分布也满足归一化条件。
连续型变量和概率密度函数
当我们研究的对象是连续型随机变量时, 我们用 概率密度函数(probability density function, PDF)而不是概率质量函数来描述它的概率分布。如果一个函数 p 是概率密度函数,必须满足下面这几个条件:
• p 的定义域必须是 x 所有可能状态的集合。
• ∀x ∈ x, p(x) ≥ 0. 注意,我们并不要求 p(x) ≤ 1。
• ∫p(x)dx = 1.
概率密度函数 p(x) 并没有直接对特定的状态给出概率,相对的,它给出了落在 面积为 δx 的无限小的区域内的概率为 p(x)δx。
我们可以对概率密度函数求积分来获得点集的真实概率质量。特别地,x 落在 集合 S 中的概率可以通过 p(x) 对这个集合求积分来得到。在单变量的例子中,x 落在区间 [a, b] 的概率是∫[a,b]p(x)dx。
为了给出一个连续型随机变量的 PDF 的例子,我们可以考虑实数区间上的均匀 分布。我们可以使用函数 u(x; a, b),其中 a 和 b 是区间的端点且满足 b > a。符号 “;’’ 表示 ‘‘以什么为参数’’;我们把 x 作为函数的自变量,a 和 b 作为定义函数的参 数。为了确保区间外没有概率,我们对所有的 x ∉ [a, b],令 u(x; a, b) = 0。在 [a, b]内,有 u(x; a, b) = 1/(b−a) 。我们可以看出任何一点都非负。另外,它的积分为 1。我们 通常用 x ∼ U(a, b) 表示 x 在 [a, b] 上是均匀分布的。
边缘概率
有时候,我们知道了一组变量的联合概率分布,但想要了解其中一个子集的概 率分布。这种定义在子集上的概率分布被称为 边缘概率分布(marginal probability distribution)。
例如,假设有离散型随机变量 x 和 y,并且我们知道 P(x, y)。我们可以依据下 面的 求和法则(sum rule)来计算 P(x):
‘‘边缘概率’’ 的名称来源于手算边缘概率的计算过程。当 P(x, y) 的每个值被写 在由每行表示不同的 x 值,每列表示不同的 y 值形成的网格中时,对网格中的每行 求和是很自然的事情,然后将求和的结果 P(x) 写在每行右边的纸的边缘处。
对于连续型变量,我们需要用积分替代求和:
条件概率
在很多情况下, 我们感兴趣的是某个事件, 在给定其他事件发生时出现的 概率。这种概率叫做条件概率。我们将给定 x = x,y = y 发生的条件概率记为 P(y = y | x = x)。这个条件概率可以通过下面的公式计算:
条件概率只在 P(x = x) > 0 时有定义。我们不能计算给定在永远不会发生的事件上 的条件概率。
这里需要注意的是,不要把条件概率和计算当采用某个动作后会发生什么相混 淆。假定某个人说德语,那么他是德国人的条件概率是非常高的,但是如果随机选 择的一个人会说德语,他的国籍不会因此而改变。计算一个行动的后果被称为 干预 查询(intervention query)。
条件概率的链式法则
任何多维随机变量的联合概率分布,都可以分解成只有一个变量的条件概率相 乘的形式:
这个规则被称为概率的 链式法则(chain rule)或者 乘法法则(product rule)。 它可以直接从式 (3.5) 条件概率的定义中得到。例如,使用两次定义可以得到
独立性和条件独立性
两个随机变量 x 和 y,如果它们的概率分布可以表示成两个因子的乘积形式,并 且一个因子只包含 x 另一个因子只包含 y,我们就称这两个随机变量是 相互独立的 (independent):
如果关于 x 和 y 的条件概率分布对于 z 的每一个值都可以写成乘积的形式, 那么这两个随机变量 x 和 y 在给定随机变量 z 时是 条件独立的(conditionally independent):
我们可以采用一种简化形式来表示独立性和条件独立性:x⊥y 表示 x 和 y 相互 独立,x⊥y | z 表示 x 和 y 在给定 z 时条件独立。
期望、方差和协方差
函数 f(x) 关于某分布 P(x) 的 期望(expectation)或者 期望值(expected value)是指, 当 x 由 P 产生,f 作用于 x 时,f(x) 的平均值。对于离散型随 机变量,这可以通过求和得到:
对于连续型随机变量可以通过求积分得到:
当概率分布在上下文中指明时,我们可以只写出期望作用的随机变量的名称来进行 简化,例如 E x [f(x)]。如果期望作用的随机变量也很明确,我们可以完全不写脚标, 就像 E[f(x)]。默认地,我们假设 E[·] 表示对方括号内的所有随机变量的值求平均。 类似的,当没有歧义时,我们还可以省略方括号。 期望是线性的,例如,
其中 α 和 β 不依赖于 x。
方差(variance)衡量的是当我们对 x 依据它的概率分布进行采样时,随机变 量 x 的函数值会呈现多大的差异:
当方差很小时,f(x) 的值形成的簇比较接近它们的期望值。方差的平方根被称为 标准差(standard deviation)。
协方差(covariance)在某种意义上给出了两个变量线性相关性的强度以及这些 变量的尺度:
协方差的绝对值如果很大则意味着变量值变化很大并且它们同时距离各自的均值很 远。如果协方差是正的,那么两个变量都倾向于同时取得相对较大的值。如果协方 差是负的,那么其中一个变量倾向于取得相对较大的值的同时,另一个变量倾向于 取得相对较小的值,反之亦然。其他的衡量指标如 相关系数(correlation)将每个变 量的贡献归一化,为了只衡量变量的相关性而不受各个变量尺度大小的影响。
协方差和相关性是有联系的,但实际上是不同的概念。它们是有联系的,因为 两个变量如果相互独立那么它们的协方差为零,如果两个变量的协方差不为零那么 它们一定是相关的。然而,独立性又是和协方差完全不同的性质。两个变量如果协 方差为零,它们之间一定没有线性关系。独立性比零协方差的要求更强,因为独立 性还排除了非线性的关系。两个变量相互依赖但具有零协方差是可能的。例如,假 设我们首先从区间 [−1, 1] 上的均匀分布中采样出一个实数 x。然后我们对一个随机 变量 s 进行采样。s 以 1/2 的概率值为 1,否则为-1。我们可以通过令 y = sx 来生成 一个随机变量 y。显然,x 和 y 不是相互独立的,因为 x 完全决定了 y 的尺度。然 而,Cov(x, y) = 0。 随机向量 x ∈ R n 的 协方差矩阵(covariance matrix)是一个 n × n 的矩阵,并且满足
协方差矩阵的对角元是方差:
常用概率分布
许多简单的概率分布在机器学习的众多领域中都是有用的。
Bernoulli 分布
Bernoulli 分布(Bernoulli distribution)是单个二值随机变量的分布。它由单 个参数 ϕ ∈ [0, 1] 控制,ϕ 给出了随机变量等于 1 的概率。它具有如下的一些性质:
Multinoulli 分布
Multinoulli 分布(multinoulli distribution)或者 范畴分布(categorical distribution)是指在具有 k 个不同状态的单个离散型随机变量上的分布,其中 k 是一 个有限值。 2 Multinoulli 分布由向量 p ∈ [0, 1] k−1 参数化,其中每一个分量 p i 表示 第 i 个状态的概率。最后的第 k 个状态的概率可以通过 1 − 1 ⊤ p 给出。注意我们必 须限制 1 ⊤ p ≤ 1。Multinoulli 分布经常用来表示对象分类的分布,所以我们很少假 设状态 1 具有数值 1 之类的。因此,我们通常不需要去计算 Multinoulli 分布的随机 变量的期望和方差。
Bernoulli 分布和 Multinoulli 分布足够用来描述在它们领域内的任意分布。它们 能够描述这些分布,不是因为它们特别强大,而是因为它们的领域很简单;它们可 以对那些,能够将所有的状态进行枚举的离散型随机变量进行建模。当处理的是连 续型随机变量时,会有不可数无限多的状态,所以任何通过少量参数描述的概率分 布都必须在分布上加以严格的限制。
高斯分布
实数上最常用的分布就是 正态分布(normal distribution), 也称为 *高斯分布 *(Gaussian distribution):
下图画出了正态分布的概率密度函数。
上图: 正态分布。正态分布 N(x; µ, σ 2 ) 呈现经典的 ‘‘钟形曲线’’ 的形状,其中中心峰的 x 坐标 由 µ 给出,峰的宽度受 σ 控制。在这个示例中,我们展示的是 标准正态分布(standard normal distribution),其中 µ = 0, σ = 1。
正态分布由两个参数控制,µ ∈ R 和 σ ∈ (0, ∞)。参数 µ 给出了中心峰值的坐 标,这也是分布的均值:E[x] = µ。分布的标准差用 σ 表示,方差用 σ 2 表示。
当我们要对概率密度函数求值时,我们需要对 σ 平方并且取倒数。当我们需要 经常对不同参数下的概率密度函数求值时,一种更高效的参数化分布的方式是使用 参数 β ∈ (0, ∞),来控制分布的 精度(precision)(或方差的倒数):
采用正态分布在很多应用中都是一个明智的选择。当我们由于缺乏关于某个实 数上分布的先验知识而不知道该选择怎样的形式时,正态分布是默认的比较好的选 择,其中有两个原因。
第一,我们想要建模的很多分布的真实情况是比较接近正态分布的。 中心极限 定理(central limit theorem)说明很多独立随机变量的和近似服从正态分布。这意 味着在实际中,很多复杂系统都可以被成功地建模成正态分布的噪声,即使系统可 以被分解成一些更结构化的部分。
第二,在具有相同方差的所有可能的概率分布中,正态分布在实数上具有最大 的不确定性。因此,我们可以认为正态分布是对模型加入的先验知识量最少的分布。
正态分布可以推广到 Rn 空间,这种情况下被称为 多维正态分布(multivariate normal distribution)。它的参数是一个正定对称矩阵 Σ:
参数 µ 仍然表示分布的均值,只不过现在是向量值。参数 Σ 给出了分布的协 方差矩阵。和单变量的情况类似,当我们希望对很多不同参数下的概率密度函数多 次求值时,协方差矩阵并不是一个很高效的参数化分布的方式,因为对概率密度函 数求值时需要对 Σ 求逆。我们可以使用一个 精度矩阵(precision matrix)β 进行替 代:
我们常常把协方差矩阵固定成一个对角阵。一个更简单的版本是 各向同性 (isotropic)高斯分布,它的协方差矩阵是一个标量乘以单位阵。
指数分布和 Laplace 分布
在深度学习中,我们经常会需要一个在 x = 0 点处取得边界点 (sharp point) 的 分布。为了实现这一目的,我们可以使用 指数分布(exponential distribution):
指数分布使用指示函数(indicator function)1 x≥0 来使得当 x 取负值时的概率为零。 一个联系紧密的概率分布是 Laplace 分布(Laplace distribution),它允许我们 在任意一点 µ 处设置概率质量的峰值
Dirac 分布和经验分布
在一些情况下,我们希望概率分布中的所有质量都集中在一个点上。这可以通 过 Dirac delta 函数(Dirac delta function)δ(x) 定义概率密度函数来实现:
Dirac delta 函数被定义成在除了 0 以外的所有点的值都为 0,但是积分为 1。Dirac delta 函数不像普通函数一样对 x 的每一个值都有一个实数值的输出,它是一种不同 类型的数学对象,被称为 广义函数(generalized function),广义函数是依据积分性 质定义的数学对象。我们可以把 Dirac delta 函数想成一系列函数的极限点,这一系 列函数把除 0 以外的所有点的概率密度越变越小。
通过把 p(x) 定义成 δ 函数左移 −µ 个单位,我们得到了一个在 x = µ 处具有 无限窄也无限高的峰值的概率质量。
Dirac 分布经常作为 经验分布(empirical distribution)的一个组成部分出现:
经验分布将概率密度 这些点是给定的 数据集或者采样的集合。只有在定义连续型随机变量的经验分布时,Dirac delta 函 数才是必要的。对于离散型随机变量, 情况更加简单:经验分布可以被定义成一 个 Multinoulli 分布,对于每一个可能的输入,其概率可以简单地设为在训练集上那 个输入值的 经验频率(empirical frequency)。
分布的混合
通过组合一些简单的概率分布来定义新的概率分布也是很常见的。一种通用的组 合方法是构造 混合分布(mixture distribution)。混合分布由一些组件 (component) 分布构成。每次实验, 样本是由哪个组件分布产生的取决于从一个 Multinoulli 分 布中采样的结果:
这里 P(c) 是对各组件的一个 Multinoulli 分布。 我们已经看过一个混合分布的例子了:实值变量的经验分布对于每一个训练实 例来说,就是以 Dirac 分布为组件的混合分布。
一个非常强大且常见的混合模型是 高斯混合模型(Gaussian Mixture Model), 它的组件 p(x | c = i) 是高斯分布。每个组件都有各自的参数,均值 µ (i) 和协方差矩 阵 Σ (i) 。有一些混合可以有更多的限制。例如,协方差矩阵可以通过 Σ (i) = Σ, ∀i 的 形式在组件之间共享参数。和单个高斯分布一样,高斯混合模型有时会限制每个组 件的协方差矩阵为对角的或者各向同性的 (标量乘以单位矩阵)。
除了均值和协方差以外,高斯混合模型的参数指明了给每个组件 i 的 先验概率 (prior probability)α i = P(c = i)。‘‘先验’’ 一词表明了在观测到 x 之前传递给模 型关于 c 的信念。作为对比,P(c | x) 是 后验概率(posterior probability),因为它 是在观测到 x 之后进行计算的。高斯混合模型是概率密度的 万能近似器(universal approximator),在这种意义下,任何平滑的概率密度都可以用具有足够多组件的高 斯混合模型以任意精度来逼近。
下图演示了某个高斯混合模型生成的样本。
上图: 来自高斯混合模型的样本。在这个示例中,有三个组件。从左到右,第一个组件具有各向 同性的协方差矩阵,这意味着它在每个方向上具有相同的方差。第二个组件具有对角的协方差矩 阵,这意味着它可以沿着每个轴的对齐方向单独控制方差。该示例中,沿着 x 2 轴的方差要比沿着 x 1 轴的方差大。第三个组件具有满秩的协方差矩阵,使它能够沿着任意基的方向单独地控制方差。
常用函数的有用性质
某些函数在处理概率分布时经常会出现,尤其是深度学习的模型中用到的概率 分布。
其中一个函数是 logistic sigmoid 函数:
logistic sigmoid 函数通常用来产生 Bernoulli 分布中的参数 ϕ, 因为它的范围是 (0, 1),处在 ϕ 的有效取值范围内。图 3.3 给出了 sigmoid 函数的图示。sigmoid 函数 在变量取绝对值非常大的正值或负值时会出现 饱和(saturate)现象,意味着函数会 变得很平,并且对输入的微小改变会变得不敏感。
另外一个经常遇到的函数是 softplus 函数(softplus function)(Dugas et al., 2001):
softplus 函数可以用来产生正态分布的 β 和 σ 参数,因为它的范围是 (0, ∞)。当处 理包含 sigmoid 函数的表达式时它也经常出现。softplus 函数名来源于它是另外一个
函数的平滑(或 ‘‘软化’’)形式,这个函数是
下图给出了 softplus 函数的图示。
下面一些性质非常有用,你可能要记下来:
函数 σ −1 (x) 在统计学中被称为 分对数(logit),但这个函数在机器学习中很少用到。
上述公式为函数名 “softplus’’ 提供了其他的正当理由。softplus 函数被设计成 正 部函数(positive part function)的平滑版本,这个正部函数是指 x + = max{0, x}。 与正部函数相对的是 负部函数(negative part function)x − = max{0, −x}。为了获 得类似负部函数的一个平滑函数,我们可以使用 ζ(−x)。就像 x 可以用它的正部和 负部通过等式 x + − x − = x 恢复一样,我们也可以用同样的方式对 ζ(x) 和 ζ(−x) 进行操作。
贝叶斯规则
我们经常会需要在已知 P(y | x) 时计算 P(x | y)。幸运的是,如果还知道 P(x), 我们可以用 贝叶斯规则(Bayes’ rule)来实现这一目的:
注意到 P(y) 出现在上面的公式中, 它通常使用 P(y) = x P(y | x)P(x) 来计算, 所以我们并不需要事先知道 P(y) 的信息。
贝叶斯规则可以从条件概率的定义直接推导得出,但我们最好记住这个公式的 名字, 因为很多文献通过名字来引用这个公式。这个公式是以牧师 Thomas Bayes 的名字来命名的, 他是第一个发现这个公式特例的人。这里介绍的一般形式由 Pierre-Simon Laplace 独立发现。