第 3 章:概率与信息论(Probability and Information Theory)
本章导言:作者为什么把概率与信息论放在第三章
作者开篇就把本章的定位讲清楚:概率论是一种用于表示不确定陈述的数学框架,它提供了量化不确定性的方法以及从已有不确定性推导新不确定性的公理体系。在人工智能应用中,概率论被以两种主要方式使用——其一,概率法则告诉我们 AI 系统应如何推理,因此我们设计算法来计算或逼近由概率论推导出的各种表达式;其二,我们可以使用概率与统计来对所提 AI 系统的行为做理论分析。作者随后提示本章并非概率论的完整教程:若读者完全没有接触过概率与信息论,本章应当足以支撑深度学习研究项目的开展,但作者建议同时参考 Jaynes (2003) 等其他资源。作者特别指出,若读者已熟悉概率与信息论,可跳过本章除 3.14 节以外的全部内容,因为 3.14 节所描述的图(用于表示结构化概率模型)是后续机器学习章节要直接使用的语言。概率论允许我们在不确定性下做陈述与推理,而信息论则允许我们量化一个概率分布中"不确定性的大小"——两者一脉相承,共同构成本章的工具底座。
3.1 为什么用概率?(Why Probability?)
作者从计算机科学与软件工程的背景出发解释为什么机器学习要大量使用概率论。计算机科学许多分支处理的对象几乎是完全确定且肯定的:程序员可以安全地假设 CPU 会无瑕疵地执行每条机器指令,硬件错误虽然会发生但概率小到大多数软件应用不需要为它做专门设计。机器学习之所以必须处理不确定性乃至随机性,是因为不确定性与随机性可以从许多来源中产生。作者提示,对"用概率量化不确定性"的论证自 1980 年代以来已经有了令人信服的论述(许多本章论据汇总自或受启发于 Pearl (1988))。
作者接着列出不确定性的三个可能来源:其一,被建模系统本身具有的内在随机性——例如大多数对量子力学的解释将亚原子粒子的动力学刻画为概率性的;我们也可以人为构造具有随机动力学的理论场景,例如假设纸牌被真正随机洗过。其二,不完全可观测性——即使是确定性系统,在我们无法观测到驱动其行为的所有变量时,从观察者角度看就表现为随机的;Monty Hall 问题是典型例子:选手在三个门中选一个,主持人展示其余两门中藏羊的一门,剩下那门换不换的胜率差是经典概率反直觉现象;虽然给定选手选择后哪扇门后有车是确定性的,但从选手的视角看,结果就是不确定的。其三,不完全建模——当我们使用的模型必须丢弃一部分已观测信息时,被丢弃的信息就会在模型预测中表现为不确定性;例如一个能精确观测周围所有物体位置的机器人,若在预测未来位置时把空间离散化,那么物体就立即变得不确定——它可能位于所观测到的那一格中的任何位置。
作者随后讨论一个实践原则:在许多情形下,使用一个简单但带不确定性的规则,往往比使用一个复杂但确定的规则更实用,即便真实规则是确定性的、且我们的建模系统有足够能力容纳复杂规则。例如"大多数鸟会飞"这条规则既便宜又能广泛使用,而"鸟会飞,除了尚未学会飞的幼鸟、受伤或失去飞行能力的鸟、包括鸵鸟、鸸鹋、几维鸟等不会飞的物种……"这条规则开发、维护和交流起来都代价高昂,而且即使付出所有这些努力后依然非常脆弱、容易失效。
作者进而区分两类概率:频率派概率(frequentist probability)直接与事件发生频率相关,源自概率论最初为分析事件频率而发展的历史;贝叶斯概率(Bayesian probability)则与"确定性程度(degree of belief)"相关,例如医生说某病人有 40% 的概率得流感,并不是因为我们可以制造该病人的无限多个副本,而是用 0–1 之间的一个数表达"医生对病人得流感的相信程度"。作者指出,如果我们列举出几条常识推理关于不确定性应有的性质,那么满足这些性质的唯一方式是把贝叶斯概率视为与频率派概率具有完全相同的行为——例如用同一套公式既可计算"持某手牌时玩家获胜的概率",也可计算"具有某症状时病人患某病的概率"。这意味着两组情境共享同一套概率公理(参考 Ramsey (1926))。最后,作者把概率视为"逻辑向不确定性情形的扩展"——逻辑提供了在假设某些命题为真或假时判定哪些命题被蕴含为真或假的形式化规则;概率论则提供了在已知其他命题的可能性时判定一个命题为真的可能性的形式化规则。
3.2 随机变量(Random Variables)
作者定义随机变量:一个可以随机地取不同值的变量。约定记号上,随机变量本身用普通字体(罗马体)的小写字母表示,其所能取的值用小写的花体字母(script)表示——例如 \(x_1\) 与 \(x_2\) 都是随机变量 \(x\) 可能的取值。对于取向量值的变量,写法是把随机变量记作 \(\mathbf{x}\),把它的某个取值记作 \(\mathbf{x}\)(黑体)。单独一个随机变量本身只是对"可能的状态"的描述,必须与一个概率分布相耦合,由该分布指明每种状态出现的可能性。
随机变量可以是离散的也可以是连续的。离散随机变量是其状态数为有限或可数无穷的随机变量;注意这些状态不必一定是整数,它们也可以是没有数值含义的命名状态。连续随机变量则与一个实数值相关联。
3.9 常见概率分布(Common Probability Distributions)
作者介绍,概率分布 是对一个随机变量或一组随机变量会取到其每一个可能状态的"可能性大小"的描述。我们如何描述一个概率分布,取决于该变量是离散的还是连续的。
3.3.1 离散变量与概率质量函数(Discrete Variables and Probability Mass Functions)
作者介绍,概率质量函数(Probability Mass Function, PMF) 是用来描述离散变量上的概率分布的方式。约定记号上,概率质量函数用大写 \(P\) 来表示;通常每一个随机变量与一个不同的概率质量函数相关联,读者需根据随机变量的"身份"而非"函数的名字"来推断该用哪个 PMF——\(P(x)\) 与 \(P(y)\) 通常不是同一个函数。PMF 把"随机变量的一个状态"映射到"该随机变量取到该状态的概率"。\(x = x\) 的概率记作 \(P(x)\),概率为 1 表示 \(x = x\) 必然发生,概率为 0 表示 \(x = x\) 不可能发生。有时为了明确指明用哪个 PMF,会显式写出随机变量名:\(P(x = x)\);有时会先定义一个变量,再用 \(\sim\) 记号随后指定它服从的分布:\(x \sim P(x)\)。 PMF 可以同时作用于多个变量。这样的多变量上的概率分布称为联合概率分布(joint probability distribution)。\(P(x = x, y = y)\) 表示 \(x = x\) 与 \(y = y\) 同时成立的概率,也可以简写为 \(P(x, y)\)。 要使一个函数 \(P\) 成为随机变量 \(x\) 上的概率质量函数,它必须满足以下三个性质:其一,\(P\) 的定义域必须是 \(x\) 所有可能状态的集合;其二,对任意 \(x \in \mathrm{x}\),有 \(0 \le P(x) \le 1\)——不可能事件的概率为 0,且没有任何状态比这更不可能;必然发生的事件概率为 1,且没有任何状态比这更可能;其三,对 \(x\) 的所有状态求和 \(\sum_{x} P(x) = 1\)——作者称这个性质为"归一化(normalized)",若不归一化,那么通过计算"若干事件之一发生"的概率就可能得到大于 1 的概率。 作者举出均匀分布作为示例:考虑一个具有 \(k\) 个不同状态的离散随机变量 \(x\),可以在 \(x\) 上放置一个均匀分布——也就是使它的每个状态都同等可能——通过把 PMF 设为
3.3.2 连续变量与概率密度函数(Continuous Variables and Probability Density Functions)
作者指出,处理连续随机变量时,我们用概率密度函数(Probability Density Function, PDF)而非概率质量函数来描述概率分布。要使一个函数 \(p\) 成为概率密度函数,它必须满足以下性质:其一,\(p\) 的定义域必须是 \(x\) 所有可能状态的集合;其二,对任意 \(x \in \mathrm{x}\),\(p(x) \ge 0\);注意这里不要求 \(p(x) \le 1\);其三,\(\int p(x) \, dx = 1\)。 PDF \(p(x)\) 并不直接给出一个具体状态的概率,而是一个无穷小区域内的概率质量——体积为 \(\delta x\) 的无穷小区域内出现样本的概率为 \(p(x) \delta x\)。我们可以通过对密度函数做积分来求一个点集的实际概率质量。具体地,\(x\) 落在某个集合 \(S\) 内的概率是 \(p(x)\) 在 \(S\) 上的积分。在单变量情形下,\(x\) 落在区间 \([a, b]\) 内的概率为 \(\int_{[a,b]} p(x) \, dx\)。 作者给出连续均匀分布的示例:实数轴上一个区间上的均匀分布可以用一个函数 \(u(x; a, b)\) 来定义,其中 \(a\) 与 \(b\) 是该区间的端点,且 \(b > a\)。";"记号表示"以……为参数"——作者认为 \(x\) 是该函数的参数,而 \(a\) 与 \(b\) 是定义这个函数的参数。为了确保区间外没有概率质量,定义 \(u(x; a, b) = 0\)(当 \(x \notin [a, b]\))。在 \([a, b]\) 内,\(u(x; a, b) = \frac{1}{b - a}\)。这个函数在每处都是非负的,并且积分为 1。我们常把"\(x\) 服从 \([a, b]\) 上的均匀分布"记为 \(x \sim U(a, b)\)。
3.4 边缘概率(Marginal Probability)
作者介绍,有时我们知道一组变量上的概率分布,而想求其中子集上的概率分布。子集上的概率分布称为边缘概率分布(marginal probability distribution)。例如假设我们有离散随机变量 \(x\) 与 \(y\),并且知道 \(P(x, y)\),那么可以用求和规则(sum rule)求出 \(P(x)\):
3.5 条件概率(Conditional Probability)
作者指出,在很多情形下,我们关心的是"在已知某事件发生的前提下"另一事件的概率。这称为条件概率。记号上,\(y = y\) 在 \(x = x\) 给定条件下的条件概率记作 \(P(\mathrm{y} = y \mid \mathrm{x} = x)\)。这个条件概率可由下式计算:
3.6 条件概率的链式法则(The Chain Rule of Conditional Probabilities)
作者陈述链式法则(chain rule)或称乘积法则(product rule):任何多随机变量上的联合概率分布都可以被分解为只涉及一个变量的条件分布之积:
3.7 独立性与条件独立性(Independence and Conditional Independence)
作者定义:两个随机变量 \(x\) 与 \(y\) 独立(independent),若它们的概率分布可以表达为两个因子的乘积,一个只涉及 \(x\),一个只涉及 \(y\):
3.8 期望、方差与协方差(Expectation, Variance and Covariance)
作者定义:期望(expectation) 或 期望值(expected value) 是指某函数 \(f(x)\) 关于概率分布 \(P(x)\) 的"平均值"或"均值",即 \(x\) 从 \(P\) 中采样时 \(f\) 所取值的平均。对离散变量,期望可用求和计算:
3.9.1 伯努利分布(Bernoulli Distribution)
伯努利分布 是单个二值随机变量上的分布。它由一个参数 \(\phi \in [0, 1]\) 控制,\(\phi\) 给出该随机变量等于 1 的概率。伯努利分布具有以下性质:
3.9.2 多努利分布(Multinoulli Distribution)
多努利分布(multinoulli) 或称 类别分布(categorical distribution) 是具有 \(k\) 个不同状态、且 \(k\) 有限的单个离散变量上的分布。"multinoulli" 一词由 Gustavo Lacerdo 创造、由 Murphy (2012) 推广。多努利分布是多項分布(multinomial distribution)的特殊情形;多項分布是向量在 \(\{0, \ldots, n\}^k\) 上的分布,表示从多努利分布中采样 \(n\) 次后每个类别被访问的次数。许多教科书用 "multinomial" 一词指代多努利分布而未澄清其指的是 \(n = 1\) 的情形。
多努利分布由向量 \(\mathbf{p} \in [0, 1]^{k-1}\) 参数化,其中 \(p_i\) 给出第 \(i\) 个状态的概率。第 \(k\) 个状态的概率由 \(1 - \mathbf{1}^\top \mathbf{p}\) 给出。必须满足 \(\mathbf{1}^\top \mathbf{p} \le 1\)。多努利分布常被用来指代"对象的类别"上的分布,所以通常并不假设状态 1 拥有数值 1 等。因此我们通常不需要计算多努利分布随机变量的期望或方差。
作者指出,伯努利分布与多努利分布足以描述其定义域上的任何分布。它们之所以能做到这一点,并不是因为它们特别强大,而是因为其定义域本身是简单的——它们对状态可以枚举的离散变量建模。处理连续变量时,状态数不可数,因此任何由少量参数描述的分布都必须对分布形式施加严格的限制。
3.9.3 高斯分布(Gaussian Distribution)
作者介绍,实数上最常用的分布 是正态分布,也称为高斯分布:
(参见原文图 3.1 中密度函数的曲线图。)两个参数 \(\mu \in \mathbb{R}\) 与 \(\sigma \in (0, \infty)\) 控制正态分布。参数 \(\mu\) 给出中心峰的横坐标,也等于分布的均值 \(\mathbb{E}[x] = \mu\)。分布的标准差为 \(\sigma\),方差为 \(\sigma^2\)。
当我们求值 PDF 时需要对方差做平方与求逆。当我们需要以不同参数值频繁求值 PDF 时,一种更高效地参数化该分布的方法是使用一个参数 \(\beta \in (0, \infty)\) 来控制分布的精度(precision) 或逆方差:
正态分布在许多应用中是合理的选择。在缺乏关于实数上分布应取何种形式的先验知识时,正态分布之所以是默认的较好选择,作者给出两个主要原因。其一,许多我们希望建模的分布在事实上确实接近正态分布。中心极限定理指出,许多独立随机变量之和近似服从正态分布。这意味着实践中许多复杂系统即使可以被分解为具有更结构化行为的多个部分,也可以被成功地建模为正态分布的噪声。其二,在所有具有相同方差的可能概率分布中,正态分布对实数编码了最大量的不确定性。因此我们可以把正态分布视为"在模型中引入最少的先验知识"的那种分布。完整地发展并证明这一想法需要更多的数学工具,作者将这部分推迟到 19.4.2 节。
正态分布可以推广到 \(\mathbb{R}^n\),此时称为多元正态分布。它可以由一个正定对称矩阵 \(\mathbf{\Sigma}\) 参数化:
参数 \(\boldsymbol{\mu}\) 仍给出分布的均值,但此时它是向量值。参数 \(\mathbf{\Sigma}\) 给出分布的协方差矩阵。与单变量情形类似,当我们希望对许多不同参数值多次求值 PDF 时,协方差并不是一种计算上高效的参数化方式,因为求值 PDF 时需要对 \(\mathbf{\Sigma}\) 求逆。可以改用精度矩阵 \(\boldsymbol{\beta}\):
我们经常把协方差矩阵固定为对角矩阵。更简单的版本是各向同性高斯分布(isotropic Gaussian distribution),其协方差矩阵是单位矩阵的一个标量倍。
3.9.4 指数分布与拉普拉斯分布(Exponential and Laplace Distributions)
作者指出,在深度学习的语境中,我们常常希望有一个在 \(x = 0\) 处具有尖峰的分布。为做到这一点,可以使用指数分布:
指数分布用指示函数 \(\mathbf{1}_{x \ge 0}\) 把所有 \(x < 0\) 的值处的概率赋为 0。
一个与之密切相关的、允许把尖峰概率质量放在任意点 \(\mu\) 的分布是拉普拉斯分布:
3.9.5 狄拉克分布与经验分布(The Dirac Distribution and Empirical Distribution)
作者介绍,在某些情形下我们希望指定"一个概率分布的所有质量都聚集在一个点"。这可以通过用 Dirac delta 函数 \(\delta(x)\) 定义 PDF 来实现:
Dirac delta 函数定义为:除 0 之外处处取值 0,但积分值为 1。Dirac delta 函数并非把每个 \(x\) 值映射到一个实值输出的普通函数,而是一种被称为"广义函数"的特殊数学对象,由其在积分下表现的性质来定义。我们可以把 Dirac delta 函数视为一系列函数(在除零点外的所有点上的质量越来越小)的极限点。
通过把 \(p(x)\) 定义为 \(\delta\) 平移 \(- \mu\) 后所得到的分布,可以得到一个在 \(x = \mu\) 处无穷窄、无穷高的概率质量尖峰。
Dirac delta 分布的一个常见用途是作为经验分布(empirical distribution) 的一个分量:
它把概率质量 \(\frac{1}{m}\) 放在构成给定数据集或样本集合的 \(m\) 个点 \(x^{(1)}, \ldots, x^{(m)}\) 上。Dirac delta 分布只是为定义连续变量上的经验分布所必需。对离散变量来说情况更简单:经验分布可被视作一个多努利分布,赋予每个可能输入值的概率简单地等于该值在训练集中的经验频率。
作者指出两种看待经验分布的视角。其一,可以把由训练样本组成的数据集所形成的经验分布视为"我们在这个数据集上训练模型时从中采样的分布"。其二,经验分布是最大化训练数据似然 的概率密度(参考 5.5 节)。
3.9.6 分布的混合(Mixtures of Distributions)
作者指出,通过把其他更简单的概率分布组合起来定义一个概率分布也是常见的做法。一种常见的组合方式就是构造一个混合分布(mixture distribution)。一个混合分布由若干分量分布(component distributions) 组成。在每次试验中,从一个多努利分布中采样出分量身份(component identity),由此决定本次样本由哪个分量分布生成:
其中 \(P(c)\) 是关于分量身份的多努利分布。
作者提示,我们其实已经见过一个混合分布的示例:实值变量上的经验分布就是一个混合分布,其中每个训练样本对应一个 Dirac 分量。
作者继续把混合模型作为"用简单分布构建复杂分布"的策略之一(更深入的内容放在第 16 章讨论)。混合模型还让我们得以提前一瞥潜变量(latent variable) 这一后续至关重要的概念。潜变量是我们不能直接观测的随机变量;混合模型中的分量身份变量 \(c\) 就是一个例子。潜变量可以通过联合分布与 \(x\) 相关联,在这种情形下 \(P(x, c) = P(x \mid c) P(c)\)。潜变量上的分布 \(P(c)\) 与把潜变量与可见变量关联起来的分布 \(P(x \mid c)\) 一起,决定了分布 \(P(x)\) 的形状——尽管 \(P(x)\) 也可以在不必引用潜变量的情况下被描述。潜变量在 16.5 节会进一步讨论。
作者介绍一类特别强大且常见的混合模型:高斯混合模型,其中各分量 \(p(x \mid c = i)\) 都是高斯分布。每个分量有各自参数化的均值 \(\boldsymbol{\mu}^{(i)}\) 与协方差 \(\mathbf{\Sigma}^{(i)}\)。一些混合模型可以施加更多约束,例如通过约束 \(\mathbf{\Sigma}^{(i)} = \mathbf{\Sigma}, \forall i\) 让所有分量共享同一协方差。与单个高斯分布一样,高斯混合也可以对每个分量的协方差矩阵施加对角或各向同性的约束。
除了均值与协方差外,高斯混合模型的参数还包括先验概率 \(\alpha_i = P(c = i)\),即赋予每个分量 \(i\) 的概率。"先验"一词表明它表达的是模型在观测到 \(x\) 之前对 \(c\) 的信念;相对地,\(P(c \mid x)\) 称为后验概率,因为它在观测到 \(x\) 之后才计算。高斯混合模型是密度的万能近似器(universal approximator of densities)——任何平滑密度都可以被具有足够多分量的高斯混合模型以任意给定的非零误差逼近(原文图 3.2 展示了从高斯混合模型采样的样本)。
3.10 常用函数的有用性质(Useful Properties of Common Functions)
作者指出,在处理概率分布——尤其是深度学习模型中所用的概率分布——时,某些函数会反复出现。
第一个这样的函数是逻辑斯谛 sigmoid 函数:
逻辑斯谛 sigmoid 常被用来产生伯努利分布的 \(\phi\) 参数,因为其值域 \((0, 1)\) 落在 \(\phi\) 的合法取值范围之内(原文图 3.3 给出 sigmoid 函数的图像)。sigmoid 函数会在其参数非常大或非常小时饱和(saturate)——也就是说,函数变得非常平、对输入的微小变化不敏感。
另一个经常遇到的函数是softplus 函数(Dugas et al., 2001):
softplus 函数可用于产生正态分布的 \(\beta\) 或 \(\sigma\) 参数,因为其值域为 \((0, \infty)\)。它在处理涉及 sigmoid 的表达式时也经常出现。softplus 这个名字来源于它是以下函数的"软化(smoothed)"或"柔和化"版本:
(原文图 3.4 给出 softplus 函数的图像。)作者列出的若干性质都足够有用,值得记忆:
函数 \(\sigma^{-1}(x)\) 在统计学中称为 logit,但在机器学习中这个术语较少使用。
作者补充:等式 3.41 为 "softplus" 这一名称提供了额外的理由。softplus 函数是 "正部函数" \(x^+ = \max\{0, x\}\) 的平滑版本。正部函数与负部函数 \(x^- = \max\{0, -x\}\) 相对应。要获得一个对应于负部函数的平滑函数,可以用 \(\zeta(-x)\)。正像 \(x\) 可以通过正部与负部按 \(x = x^+ - x^-\) 恢复一样,\(x\) 也可以通过 \(\zeta(x)\) 与 \(\zeta(-x)\) 之间的相同关系恢复,如等式 3.41 所示。
3.11 贝叶斯规则(Bayes' Rule)
作者指出,我们经常处于这样的情境:已知 \(P(y \mid x)\),需要求 \(P(x \mid y)\)。幸运的是,如果同时知道 \(P(x)\),则可以用贝叶斯规则计算所求量:
注意虽然 \(P(y)\) 出现在公式中,但它通常可以通过 \(P(y) = \sum_x P(y \mid x) P(x)\) 计算得到,所以我们并不需要从已知 \(P(y)\) 开始。
作者补充:贝叶斯规则虽然由条件概率的定义直接推出,但记住这个名字是值得的,因为许多文献都直接以 "Bayes' rule" 指代该公式。它以 Reverend Thomas Bayes 命名,他首先发现了该公式的一个特例。这里给出的更一般版本则由 Pierre-Simon Laplace 独立发现。
3.12 连续变量的技术细节(Technical Details of Continuous Variables)
作者指出,对连续随机变量与概率密度函数的严格形式化理解需要借助于数学中称为测度论的一个分支。测度论超出了本书的范围,作者简要勾画测度论所解决的一些问题。
在 3.3.2 节中我们看到,连续向量值 \(\mathbf{x}\) 落在某个集合 \(S\) 中的概率由 \(p(\mathbf{x})\) 在 \(S\) 上的积分给出。但对集合 \(S\) 的某些选择会导致悖论:例如,可以构造两个集合 \(S_1\) 与 \(S_2\),使得 \(p(\mathbf{x} \in S_1) + p(\mathbf{x} \in S_2) > 1\) 但 \(S_1 \cap S_2 = \emptyset\)。这些集合一般通过对实数的"无限精度"做大量利用来构造——例如构成分形形状的集合或通过对有理数集做变换而得到的集合。测度论的一个关键贡献就是给出"我们可以对其计算概率而不会陷入悖论"的集合族的刻画。本书中我们只对相对简单描述的集合做积分,所以测度论的这一面永远不会成为相关问题。
对我们而言,测度论更有用的地方在于描述"在 \(\mathbb{R}^n\) 中大多数点成立、但在某些边角情形不成立"的那些定理。测度论提供了一种严格的方式来描述"一个点的集合是可忽略地小"。这样的集合称为具有零测度(measure zero)。本书不正式定义这一概念。对我们而言,充分 的理解是:零测度集合在我们所度量的空间中"不占体积"。例如在 \(\mathbb{R}^2\) 中,一条线具有零测度,而一个填满的多边形具有正测度;类似地,单个点具有零测度。任何由可数多个零测度集合的并集组成的集合也具有零测度(因此全体有理数集也具有零测度)。
测度论的另一个有用术语是几乎处处(almost everywhere)。一个"几乎处处成立"的性质在整个空间上成立,例外点集测度为零。因为例外占据的"空间"可被忽略,所以在许多应用中这些例外可以安全地忽略。概率论中的一些重要结论对所有离散值都成立,但对连续值则只"几乎处处"成立。
作者接着讨论连续变量的另一个技术细节:处理作为彼此确定性函数的连续随机变量。假设我们有两个随机变量 \(\mathbf{x}\) 与 \(\mathbf{y}\),且 \(\mathbf{y} = g(\mathbf{x})\),其中 \(g\) 是一种可逆、连续、可微 的变换。直观上可能预期 \(p_y(\mathbf{y}) = p_x(g^{-1}(\mathbf{y}))\),但实际并非如此。作者给出一个简单反例:假设我们有标量随机变量 \(x\) 与 \(y\),假设 \(y = x^2\) 且 \(x \sim U(0, 1)\)。如果用 \(p_y(y) = p_x(\sqrt{2y})\) 这一规则,则 \(p_y\) 在 \([0, \frac{1}{2}]\) 区间外处处为 0,在该区间上为 1。这意味着 \(\int p_y(y) \, dy = \frac{1}{2}\),违反概率分布的定义。这是一个常见的错误。该方法的问题在于没有考虑由函数 \(g\) 引入的空间扭曲。回顾落在 \(x\) 空间中体积为 \(\delta x\) 的无穷小区域内的概率是 \(p(x) \delta x\)。由于 \(g\) 可以扩张或收缩空间,\(x\) 空间中的无穷小体在 \(y\) 空间中可能有不同的体积。
作者接着给出修正方法:回到标量情形,需要保留的性质是
由此解出
等价地
在更高维情形下,导数推广为Jacobian 矩阵 的行列式——矩阵元为 \(J_{i, j} = \frac{\partial x_i}{\partial y_j}\)。因此对实值向量 \(\mathbf{x}\) 与 \(\mathbf{y}\),
3.13 信息论(Information Theory)
作者介绍,信息论 是应用数学的一个分支,核心是量化一个信号中含有多少信息。它最初是为研究"通过噪声信道从离散字母表发送消息"而发明的,例如通过无线电传输通信。在该语境下,信息论告诉我们如何设计最优编码,以及在各种编码方案下从特定概率分布中采样的消息的期望长度。在机器学习语境下,我们也可以把信息论应用于连续变量,但其中一些"消息长度"的解释不再适用。该领域是电气工程与计算机科学许多方面的基础。本书中,我们主要使用信息论中少数几个关键思想来刻画概率分布或量化概率分布之间的相似程度。更多关于信息论的内容可参考 Cover and Thomas (2006) 或 MacKay (2003)。
作者给出信息论的基本直觉:学习到一个不太可能的事件已经发生,比学习到一个较可能事件已经发生更有信息量。一条说"今天早晨太阳升起"的消息极不具有信息量以至于不值得发送;而一条说"今天早晨发生了日食"的消息则非常具有信息量。
作者希望以正式化的方式量化信息。具体来说,要满足:可能事件应具有低信息量,极端情形下,必然事件应不具有任何信息量;不太可能的事件应具有较高的信息量;独立事件应具有可加的信息量——例如,得知一枚硬币连续两次正面朝上所传递的信息量,应该是得知一次正面朝上所传递信息量的两倍。
为同时满足这三个性质,作者定义事件 \(x = x\) 的自信息(self-information) 为
本书中始终 用 \(\log\) 表示自然对数(以 \(e\) 为底)。因此 \(I(x)\) 的单位为 nats(奈特)。一奈特是通过观测概率为 \(\frac{1}{e}\) 的事件所获得的信息量。其他文献使用以 2 为底的对数以及称为 bits 或 shannons 的单位;以 bits 度量的信息只是以 nats 度量信息的一个重新缩放。当 \(x\) 连续时,作者沿用同一信息定义作为类比,但离散情形下的某些性质会丢失——例如单位密度的事件仍具有零信息,尽管它并不是一个保证会发生的事件。
自信息只涉及单个结果。我们可以用香农熵(Shannon entropy) 量化一个整个 概率分布中的不确定性大小:
也记作 \(H(P)\)。也就是说,一个分布的香农熵就是从该分布中抽取的事件所含信息的期望。它给出了在平均意义上编码从分布 \(P\) 中抽取的符号所需比特数的下限(若对数以 2 为底则单位相应不同)。几乎确定性的分布(结果几乎确定)具有低熵;接近均匀的分布具有高熵(原文图 3.5 给出一个示例)。当 \(x\) 连续时,香农熵称为微分熵。
作者接下来介绍Kullback-Leibler 散度(KL 散度)。当我们有两个关于同一随机变量 \(x\) 的概率分布 \(P(x)\) 与 \(Q(x)\),可以用 KL 散度来度量这两个分布之间有多不同:
在离散变量情形下,它是用基于"为最小化从概率分布 \(Q\) 中采样的消息长度而设计的编码"来发送包含"从概率分布 \(P\) 中采样的符号"的消息时所需的额外 信息量(以 bits 为单位时对数以 2 为底,但在机器学习中我们通常使用 nats 与自然对数)。
KL 散度有许多有用的性质,最值得注意的是它非负。KL 散度在离散变量情形下当且仅当 \(P\) 与 \(Q\) 是同一分布时为 0;在连续变量情形下当且仅当 \(P\) 与 \(Q\) "几乎处处"相等时为 0。由于 KL 散度非负且度量两个分布之间的差异,它常被视为度量这两个分布之间"某种距离"。然而,它不是真正的距离度量——因为它不满足对称性:对某些 \(P\) 与 \(Q\),有 \(D_{\mathrm{KL}}(P \| Q) \ne D_{\mathrm{KL}}(Q \| P)\)。这种非对称性意味着在使用 \(D_{\mathrm{KL}}(P \| Q)\) 还是 \(D_{\mathrm{KL}}(Q \| P)\) 之间存在重要的实际后果(原文图 3.6 对此做了进一步说明)。
与 KL 散度密切相关的一个量是交叉熵 \(H(P, Q) = H(P) + D_{\mathrm{KL}}(P \| Q)\),与 KL 散度类似但少了左边的项:
相对于 \(Q\) 最小化交叉熵等价于最小化 KL 散度,因为 \(Q\) 不参与被省掉的那一项。
最后,作者提示:计算上述许多量时常会遇到形如 \(0 \log 0\) 的表达式。按惯例,在信息论语境下,我们把这些表达式视作 \(\lim_{x \to 0} x \log x = 0\)。
3.14 结构化概率模型(Structured Probabilistic Models)
作者指出,机器学习算法常常涉及非常多个随机变量上的概率分布。这些概率分布通常只涉及相对少的变量之间的直接相互作用。用一个单一函数描述整个联合概率分布在计算上与统计上都可能非常低效。
作者提出替代方案:与其用单一函数表示概率分布,我们可以把一个概率分布拆分成许多因子 再相乘。例如假设有三个随机变量 \(a\)、\(b\)、\(c\)。假设 \(a\) 影响 \(b\) 的取值,\(b\) 影响 \(c\) 的取值,但 \(a\) 与 \(c\) 在给定 \(b\) 时条件独立。我们就可以把三个变量上的概率分布表示为两个变量上的概率分布之积:
这种因子化可以大幅减少描述分布所需的参数数量。每个因子所使用的参数数量随该因子中变量数指数增长。因此如果我们能把一个分布因子化成涉及更少变量的若干分布,就能显著降低表示该分布的开销。
作者介绍,我们可以用图(graph) 来描述这种因子化。这里"图"是图论意义上的图——一组顶点,顶点之间可以用边相连。当我们用图来表示一个概率分布的因子化时,就称它为结构化概率模型(structured probabilistic model) 或图模型(graphical model)。
结构化概率模型主要有两种:有向与无向。两种图模型都使用一个图 \(G\),其中图中的每个节点 对应一个随机变量,连接两个随机变量的边 表示该概率分布能够表示这两个随机变量之间的直接相互作用。有向模型 使用带方向的边,并表示为条件概率分布的因子化,如上面的例子所示。具体地,一个有向模型为分布中的每个随机变量 \(x_i\) 包含一个因子,由给定 \(x_i\) 的父节点 \(\mathrm{Pa}_{\mathcal{G}}(x_i)\) 条件下的条件分布组成:
(原文图 3.7 给出了一个有向图及其所表示的概率分布因子化的示例。)无向模型 使用不带方向的边,并表示为一组函数的因子化;与有向情形不同,这些函数通常并不是任何意义上的概率分布。在 \(G\) 中所有彼此相连的节点集合称为团(clique)。一个无向模型中的每个团 \(C^{(i)}\) 与一个因子 \(\phi^{(i)}(C^{(i)})\) 相关联。这些因子只是函数,而不是概率分布。每个因子的输出必须是非负的,但没有约束要求该因子像概率分布那样求和或积分为 1。一组随机变量配置的概率 与所有这些因子之积成比例——使因子值更大的配置更可能出现。当然,这一乘积并不保证和为 1。因此除以一个归一化常数 \(Z\),定义为对所有状态上因子乘积的求和或积分,从而得到一个归一化的概率分布:
(原文图 3.8 给出了一个无向图及其所表示的概率分布因子化的示例。)
作者最后强调一个易被忽视的点:这些图示的因子化是描述概率分布的一种语言。它们不是互相排斥的概率分布族。"有向"或"无向"不是概率分布本身的属性,而是对概率分布的某种特定描述方式 的属性;任何概率分布都可以用两种方式来描述。在本书第一、二部分中,我们将仅把结构化概率模型作为一种语言,用来描述不同的机器学习算法选择表示哪些直接概率关系。在第三部分中才会更详细地探讨结构化概率模型。
本章个人批注
本章是全书第一部分"数学与机器学习基础"的最后一章,与第 2 章线性代数并列承担"为深度学习建立数学语汇"的任务。两章的定位完全平行:第 2 章为后续章节提供几何/代数 工具(向量、矩阵、张量、分解),本章提供统计/概率/信息 工具(随机变量、分布、熵、KL 散度)。作者把概率与信息论并置在一章中,是因为它们处理的是同一个对象(概率分布)的不同侧面——概率论关心"如何计算/操作分布",信息论关心"如何量化分布中的不确定性"。
整章最值得关注的是作者对若干机器学习核心概念的"概率化重述"。3.1 节的频率派 vs 贝叶斯概率是一处关键澄清:作者没有陷入"两种哲学流派哪个更对"的争论,而是从"满足常识推理性质"的角度证明两种概率必然共享同一套公理(参考 Ramsey (1926)),并指出"两种概率使用完全相同的公式"——这一论断为后续章节把贝叶斯方法用于深度学习(例如变分推断、最大后验估计、贝叶斯神经网络)奠定了合法性。3.1 节还把不确定性来源归纳为三类(内在随机性、不完全可观测、不完全建模),这一三分法贯穿了第 5 章及后续的误差分析。
3.3 节对连续变量的特殊处理是本章技术上的第一个难点:作者特别强调 PDF 满足的是 \(p(x) \ge 0\)(不要求 \(p(x) \le 1\))和 \(\int p(x) dx = 1\),而 PMF 要求 \(0 \le P(x) \le 1\) 与 \(\sum_x P(x) = 1\)。这一区别看似细枝末节,但对后续章节(如变分自编码器中重参数化、归一化流)至关重要——那些方法经常需要求一个连续随机变量的"对数密度"或"对数似然",必须清楚 PDF 的非上界性质。
3.9 节关于经验分布 的讨论是与第 5 章机器学习基础直接挂钩的桥梁:作者明确指出"经验分布是最大化训练数据似然的概率密度"——这就把第 3 章的"概率分布"与第 5 章的"经验风险最小化"联系了起来。同时,狄拉克 delta 分布作为经验分布的分量 这一构造,是"用连续分布表示离散观测样本"的关键技巧,将在变分自编码器、生成对抗网络的概率建模中反复出现。
3.9.6 节对高斯混合模型 的讨论把"分布族"和"通用逼近"两个思想同时呈现:高斯混合是万能密度近似器——任何平滑密度都可由具有足够多分量的高斯混合以任意精度逼近。这一结论把高斯混合从"一种特定分布"提升为"一种用于表达任意分布的通用工具",为后续变分自编码器、混合密度网络等结构提供了理论依据。同时潜变量概念被首次正式引入——这是后续第 13 章线性因子模型、第 16 章结构化概率模型、第 19 章近似推断中反复出现的核心对象。
3.10 节 sigmoid 与 softplus 是后续章节会反复调用的两个工具函数。作者特意给出 \(\sigma(x)(1 - \sigma(x))\)、\(\frac{d}{dx} \zeta(x) = \sigma(x)\)、\(\zeta(x) - \zeta(-x) = x\) 等恒等式——这些在反向传播、softmax 梯度、归一化流雅可比计算中都会用到。值得注意的是,作者的"\(\sigma\) 饱和"提示直接关联到深度学习中梯度消失 的根源之一。
3.12 节的变量变换公式 是连续概率建模中一个常被搞错的细节:作者用 \(y = x^2, x \sim U(0, 1)\) 的反例说明"\(p_y(y) = p_x(g^{-1}(y))\)"是错的,必须乘以 Jacobian 行列式的绝对值。这个细节在变分自编码器的解码器、归一化流的构造中具有根本性意义——错误使用它会得到一个不归一化的分布。
3.13 节 KL 散度 是后续变分推断、生成对抗网络、对比学习的核心工具。作者特别强调 KL 散度不满足对称性——这一细节对第 19 章近似推断中"前向 KL(\(D_{\mathrm{KL}}(q \| p)\))倾向于 mode-seeking、\(D_{\mathrm{KL}}(p \| q)\) 倾向于 mode-covering"的讨论至关重要(原文图 3.6 已经以两幅子图直观展示)。
最后,3.14 节结构化概率模型 是本章中面向机器学习应用最直接的一节——它引入了"图模型"作为表达高维联合分布的语言,把第 3 章的概率工具与第 16 章的结构化概率模型研究、第 19 章的近似推断方法直接衔接起来。作者特意在引言中提示"如果你已熟悉概率论与信息论,可跳过本章除 3.14 节以外的全部内容"——这一定位说明 3.14 节是本章真正的"机器学习入口"。
与上下章的衔接(一段话)
作为全书第一部分"数学与机器学习基础"的第三章,本章与第 2 章线性代数并列构成"深度学习的数学先修包"。本章的论证线索是"概率论基础(3.1–3.8)→ 常见概率分布与混合(3.9)→ 概率建模常用函数(3.10)→ 贝叶斯规则(3.11)→ 连续变量的测度论细节与变量变换(3.12)→ 信息论(3.13)→ 结构化概率模型(3.14)"——由"概率论公理化基础"逐步过渡到"机器学习中的高维概率建模语言"。其中 3.1–3.8 是支撑全书所有概率性讨论的基础设施;3.9 集中给出在机器学习中频繁出现的概率分布(伯努利、多努利、高斯、指数、拉普拉斯、狄拉克、混合);3.10 提供与这些分布配套的常用函数(sigmoid、softplus)的恒等式;3.11–3.12 是条件概率推理与连续分布操作的工具补遗;3.13 把信息论工具(熵、KL 散度、交叉熵)作为后续推断与学习的核心度量引入;3.14 用图模型语言把本章所有概率工具封装为"结构化概率模型"这一后续章节反复使用的概念。
向前衔接:第 2 章末段明示"另一关键领域是概率论,将在下章介绍",自然过渡到本章;第 2 章中介绍的范数(2.5)将在 3.13 节的 KL 散度讨论中以"\(L^1\) 范数度量"等不同形式再次出现;第 2 章 2.12 PCA 推导中的"用矩阵记号表示对所有点的求和"模式将在 3.3.1 节的联合概率分布、3.9 节的多元高斯、3.14 节图模型的因子化中以"概率记号"的形式再次出现。向后衔接:第 4 章 4.3 节基于梯度的优化会用到 3.3.2 的 PDF 概念;第 5 章机器学习基础会直接调用 3.9.5 的经验分布作为"训练数据上的概率模型"、调用 3.9.6 的混合分布作为生成模型的概念原型、调用 3.10 的 sigmoid 作为 logistic 回归的输出激活、调用 3.11 的贝叶斯规则作为最大后验估计与朴素贝叶斯的工具;第 13 章线性因子模型会用到 3.9.6 的高斯混合作为更一般的潜变量模型的特例;第 16 章结构化概率模型会展开 3.14 节简述的有向与无向图模型;第 19 章近似推断会以 3.13 节的 KL 散度为核心工具发展变分推断方法,以 3.12 节的变量变换公式为工具发展重参数化技巧;第 20 章深度生成模型(变分自编码器、生成对抗网络、归一化流)会同时调用本章 3.9 的多种分布、3.10 的常用函数、3.12 的变量变换、3.13 的 KL 散度、3.14 的图模型语言。