跳转至

第 17 章:蒙特卡罗方法(Monte Carlo Methods)

随机化算法大致分两类:拉斯维加斯算法与蒙特卡罗算法。拉斯维加斯算法总是返回精确正确答案(或报告失败),它们消耗随机数量的资源(通常是内存或时间);蒙特卡罗算法则返回带随机误差的答案,误差大小通常可以通过投入更多资源(时间、内存)来缩小。对任何固定计算预算,蒙特卡罗算法都能给出近似答案。机器学习中许多问题过于困难,根本不可能获得精确答案,这就排除了精确的确定性算法与拉斯维加斯算法,必须转而使用确定性近似算法或蒙特卡罗近似。本章专注于蒙特卡罗方法。

17.1.1 为什么要采样?(Why Sampling?)

希望从概率分布采样的理由很多。采样提供了一种灵活的方式,可以以更低的成本近似大量求和与积分。有时这样做能给一个代价高昂但仍可处理的求和带来显著加速,例如使用小批量对完整训练代价做二次采样;在另一些情况下,学习算法本身就要求近似一个难以处理的求和或积分,例如无向模型的对数配分函数梯度。还有许多情况下采样本身就是目标——我们想训练一个能从训练分布采样的模型。

17.1.2 蒙特卡罗采样的基本思想(Basics of Monte Carlo Sampling)

当一个求和或积分无法精确计算(例如求和含指数项且没有已知的精确化简方法)时,通常可以用蒙特卡罗采样作近似。其思路是把该求和或积分视作某个分布下的期望,再用对应的样本来近似这一期望。设

\[ s = \sum_x p(x) f(x) = E_p[f(x)] \tag{17.1} \]

\[ s = \int p(x) f(x)\, dx = E_p[f(x)] \tag{17.2} \]

为待估计的求和或积分,被改写为期望的形式,其中 \(p\) 是随机变量 \(x\) 上的概率分布(求和情形)或概率密度(积分情形)。可以从 \(p\) 抽取 \(n\) 个样本 \(x^{(1)}, \ldots, x^{(n)}\),并构造经验平均

\[ \hat{s}_n = \frac{1}{n} \sum_{i=1}^{n} f(x^{(i)}) \tag{17.3} \]

来近似 \(s\)。这一近似的成立基于几条不同的性质。首先一个平凡观察是估计量 \(\hat{s}_n\) 无偏,因为

\[ E[\hat{s}_n] = \frac{1}{n}\sum_{i=1}^{n} E[f(x^{(i)})] = \frac{1}{n}\sum_{i=1}^{n} s = s. \tag{17.4} \]

此外,大数定律保证:若样本 \(x^{(i)}\) 独立同分布,则该平均几乎必然收敛到期望值

\[ \lim_{n \to \infty} \hat{s}_n = s, \tag{17.5} \]

前提是各项 \(f(x^{(i)})\) 的方差有限(\(\text{Var}[f(x^{(i)})] < \infty\))。从方差的角度看更清楚:\(\hat{s}_n\) 的方差随 \(n\) 增大而减小并收敛到 0,

\[ \text{Var}[\hat{s}_n] = \frac{1}{n^2}\sum_{i=1}^{n} \text{Var}[f(x)] = \frac{\text{Var}[f(x)]}{n}. \tag{17.6, 17.7} \]

这一便利的结果还告诉我们如何估计蒙特卡罗平均的不确定性,或等价地蒙特卡罗近似的预期误差量:同时计算 \(f(x^{(i)})\) 的经验平均与经验方差,把估计出的方差除以样本数 \(n\),就得到 \(\text{Var}[\hat{s}_n]\) 的估计。中心极限定理告诉我们,平均 \(\hat{s}_n\) 的分布会收敛到均值为 \(s\)、方差为 \(\text{Var}[f(x)]/n\) 的正态分布,从而可以用正态密度的累积分布给出 \(\hat{s}_n\) 的置信区间。

然而以上一切都依赖于能从基础分布 \(p(x)\) 方便采样的能力,而这并不总是可行的。当无法从 \(p\) 采样时,一种替代方法是 17.2 节将介绍的重要采样;更一般的方法是构造一个能收敛到目标分布的估计序列,这正是 17.3 节蒙特卡罗马尔可夫链的方法。

17.2 重要采样(Importance Sampling)

蒙特卡罗方法在使用公式 17.2 中的被积函数(或被加项)时,一个重要步骤是决定被积函数哪一部分扮演概率 \(p(x)\) 的角色,哪一部分扮演期望值 \(f(x)\)(在该概率分布下待估计的量)的角色。这种分解不是唯一的,因为 \(p(x) f(x)\) 总可以改写为

\[ p(x) f(x) = q(x) \frac{p(x) f(x)}{q(x)}, \tag{17.8} \]

即从 \(q\) 采样并对 \(p f / q\) 求平均。在许多情形下,我们希望对给定的 \(p\)\(f\) 计算一个期望,问题一开始就被指定为期望的形式,这意味着这种 \(p\)\(f\) 是分解的自然选择。然而,问题最初的指定未必是按"达到给定精度所需样本数"衡量的最优选择。所幸最优选择 \(q^*\) 的形式可以很容易导出。最优 \(q^*\) 对应所谓的最优重要采样

由公式 17.8 的恒等式,任何蒙特卡罗估计量

\[ \hat{s}_p = \frac{1}{n} \sum_{i=1,\, x^{(i)} \sim p}^{n} f(x^{(i)}) \tag{17.9} \]

都可以变换为重要采样估计量

\[ \hat{s}_q = \frac{1}{n} \sum_{i=1,\, x^{(i)} \sim q}^{n} \frac{p(x^{(i)}) f(x^{(i)})}{q(x^{(i)})}. \tag{17.10} \]

可以直接看出,该估计量的期望值不依赖于 \(q\)

\[ E_q[\hat{s}_q] = E_q[\hat{s}_p] = s. \tag{17.11} \]

然而重要采样估计量的方差对 \(q\) 的选择可以非常敏感。方差为

\[ \text{Var}[\hat{s}_q] = \text{Var}\!\left[\frac{p(x) f(x)}{q(x)}\right] \Big/ n. \tag{17.12} \]

最小方差出现在 \(q\)

\[ q^*(x) = \frac{p(x) |f(x)|}{Z} \tag{17.13} \]

时,其中 \(Z\) 为归一化常数,使 \(q^*(x)\) 的求和或积分等于 1。更好的重要采样分布会在被积函数更大的地方放更多权重。事实上,当 \(f(x)\) 不变号时,\(\text{Var}[\hat{s}_{q^*}] = 0\),即使用最优分布时单一样本就够。当然,这恰恰是因为计算 \(q^*\) 已经实质上解决了原问题,所以从最优分布抽取单一样本通常并不实际。

任何采样分布 \(q\) 都(对给出正确期望值而言)有效,\(q^*\) 是最优的(对最小方差而言)。从 \(q^*\) 采样通常不可行,但其他 \(q\) 的选择则可能可行,并且仍能减小一些方差。

另一种方法是使用有偏重要采样,其优点是不要求 \(p\)\(q\) 已归一化。在离散变量情形下,有偏重要采样估计量为

\[ \hat{s}_{BIS} = \frac{\sum_{i=1}^{n} \frac{p(x^{(i)})}{q(x^{(i)})} f(x^{(i)})}{\sum_{i=1}^{n} \frac{p(x^{(i)})}{q(x^{(i)})}} = \frac{\sum_{i=1}^{n} \frac{\tilde{p}(x^{(i)})}{\tilde{q}(x^{(i)})} f(x^{(i)})}{\sum_{i=1}^{n} \frac{\tilde{p}(x^{(i)})}{\tilde{q}(x^{(i)})}} = \frac{\sum_{i=1}^{n} \frac{\tilde{p}(x^{(i)})}{\tilde{q}(x^{(i)})} f(x^{(i)})}{\sum_{i=1}^{n} \frac{\tilde{p}(x^{(i)})}{\tilde{q}(x^{(i)})}}, \tag{17.14, 17.15, 17.16} \]

其中 \(\tilde{p}\)\(\tilde{q}\)\(p\)\(q\) 的未归一化形式,\(x^{(i)}\) 是来自 \(q\) 的样本。该估计量是有偏的,因为 \(E[\hat{s}_{BIS}] \neq s\),仅当 \(n \to \infty\)、公式 17.14 的分母收敛到 1 时才渐近无偏,因此称为渐近无偏估计。

虽然好的 \(q\) 选择能大幅提升蒙特卡罗估计的效率,差的 \(q\) 选择则可能让效率变得更糟。回到公式 17.12,若 \(q\) 的某些样本使 \(p(x) |f(x)| / q(x)\) 很大,估计量的方差就可能变得极大。当 \(q(x)\) 极小而 \(p(x)\)\(f(x)\) 都不够小到与之相消时,就会出现这种情况。\(q\) 分布通常选成非常简单的分布以便采样。当 \(x\) 高维时,\(q\) 的这种简单性会导致它与 \(p\)\(p|f|\) 匹配不好。当 \(q(x^{(i)}) \gg p(x^{(i)}) |f(x^{(i)})|\) 时,重要采样收集到的样本是无用的(累加很小的数或零);而当 \(q(x^{(i)}) \ll p(x^{(i)}) |f(x^{(i)})|\)(这种情况更少出现)时,比值会非常大。因为后一种事件罕见,它们可能不出现在一个典型样本里,导致对 \(s\) 的典型低估,只能偶尔被严重高估所抵消。当 \(x\) 高维时,这种极大或极小的数很常见,因为高维联合概率的动态范围可能非常大。

尽管存在这种风险,重要采样及其变体在许多机器学习算法(包括深度学习)中已被发现非常有用。书中给出了几个例子:用重要采样加速具有大词表的神经语言模型的训练(12.4.3.3 节);用重要采样估计配分函数(概率分布的归一化常数,18.7 节);用重要采样估计深度有向模型(如变分自编码器)的对数似然(20.10.3 节)。重要采样还可用于改进用随机梯度下降训练模型参数时代价函数梯度的估计,特别是对代价函数的总值主要来自少数被误分类样本的模型(如分类器)。对这些情形,更频繁地采样较困难的样本可以减小梯度方差(Hinton, 2006)。

17.3 马尔可夫链蒙特卡罗方法(Markov Chain Monte Carlo Methods)

在许多情形下,我们希望使用蒙特卡罗技术但又没有可处理的从 \(p_{\text{model}}(x)\) 或某个良好(低方差)重要采样分布 \(q(x)\) 抽样的精确方法。在深度学习的语境中,这种情况最常在 \(p_{\text{model}}(x)\) 由无向模型表示时出现。此时我们引入一个称为马尔可夫链的数学工具,以近似地从 \(p_{\text{model}}(x)\) 采样。使用马尔可夫链进行蒙特卡罗估计的算法族称为马尔可夫链蒙特卡罗方法(MCMC)。Koller and Friedman (2009) 对机器学习中的 MCMC 方法有更详细的讨论。MCMC 技术的最标准、最一般的保证仅在模型不对任何状态赋予零概率时适用,因此最方便的做法是按 16.2.4 节介绍的方式,把这些技术表示为从基于能量的模型 \(p(x) \propto \exp(-E(x))\) 采样。EBM 形式保证每个状态都有非零概率。MCMC 方法实际上适用范围更广,可用于许多包含零概率状态的概率分布,但关于 MCMC 方法行为的理论保证必须针对不同分布族逐案证明。在深度学习语境中,最常见的做法是依赖那些自然适用于所有基于能量的模型的最一般性理论保证。

要理解为什么从基于能量的模型采样很困难,考虑一个仅含两个变量的 EBM,定义分布 \(p(a, b)\)。要采样 \(a\) 必须从 \(p(a | b)\) 抽,要采样 \(b\) 必须从 \(p(b | a)\) 抽,这看起来像难解的"先有鸡还是先有蛋"问题。有向模型能避开这一点,因为其图是有向无环的。要做祖先采样,只需按拓扑序对各变量采样,以每个变量的父节点为条件(父节点保证已先被采样,16.3 节)。祖先采样定义了一种高效、单遍的采样获取方法。

在 EBM 中,可以通过使用马尔可夫链采样来避开这个先有鸡还是先有蛋的问题。马尔可夫链的核心思想是让一个状态 \(x\) 从任意值开始,随时间反复随机更新 \(x\),最终 \(x\) 成为(几乎正好是)\(p(x)\) 的一个公平样本。形式上,马尔可夫链由一个随机状态 \(x\) 与一个转移分布 \(T(x' | x)\) 定义,后者指定若从状态 \(x\) 出发,随机更新将转移到状态 \(x'\) 的概率。运行马尔可夫链意味着反复把状态 \(x\) 更新为从 \(T(x' | x)\) 采样的值 \(x'\)

要对 MCMC 方法的工作方式获得一些理论理解,有必要对问题重新参数化。首先把注意力限制在随机变量 \(x\) 具有可数多个状态的情形,此时可以用一个正整数 \(x\) 表示状态。不同的整数 \(x\) 值映射回原问题中不同的状态 \(x\)

考虑并行运行无穷多条马尔可夫链的情形。不同马尔可夫链的所有状态都来自某个分布 \(q^{(t)}(x)\),其中 \(t\) 表示已过去的时间步数。开始时 \(q^{(0)}\) 是任意初始化各链 \(x\) 时所用的分布;之后 \(q^{(t)}\) 受已运行的所有马尔可夫链步骤影响。我们的目标是让 \(q^{(t)}(x)\) 收敛到 \(p(x)\)

由于已用正整数 \(x\) 对问题重新参数化,可以用向量 \(v\) 表示概率分布 \(q\)

\[ q(x = i) = v_i. \tag{17.17} \]

考虑更新单条马尔可夫链的状态 \(x\) 到新状态 \(x'\) 时发生什么,单个状态落到状态 \(x'\) 的概率为

\[ q^{(t+1)}(x') = \sum_x q^{(t)}(x) T(x' | x). \tag{17.18} \]

使用整数参数化,可以用矩阵 \(A\) 表示转移算子 \(T\) 的作用。定义 \(A\) 使

\[ A_{i,j} = T(x' = i \mid x = j). \tag{17.19} \]

由此可以重写公式 17.18。不再用 \(q\)\(T\) 来描述单个状态如何更新,而可以用 \(v\)\(A\) 来描述所有并行运行的不同马尔可夫链的整体分布在应用一次更新时如何变化:

\[ v^{(t)} = A v^{(t-1)}. \tag{17.20} \]

反复应用马尔可夫链更新等价于反复乘以矩阵 \(A\),即把该过程视为对矩阵 \(A\) 取幂:

\[ v^{(t)} = A^t v^{(0)}. \tag{17.21} \]

矩阵 \(A\) 有一种特殊结构,因为它的每一列都代表一个概率分布,这样的矩阵称为随机矩阵。若对某个幂次 \(t\) 存在从任何状态 \(x\) 到任何其他状态 \(x'\) 的非零转移概率,那么 Perron-Frobenius 定理(Perron, 1907; Frobenius, 1908)保证最大特征值为实数且等于 1。可以看到,随时间所有特征值都会被取幂:

\[ v^{(t)} = V \,\text{diag}(\lambda)\, V^{-1} v^{(0)} = V \,\text{diag}(\lambda)^t\, V^{-1} v^{(0)}. \tag{17.22} \]

这个过程使得所有不等于 1 的特征值都衰减为零。在一些温和条件下,\(A\) 保证只有一个特征值为 1 的特征向量。于是该过程收敛到一个平稳分布,也称平衡分布。收敛时

\[ v' = A v = v, \tag{17.23} \]

并且这一条件对之后每一步都成立。这是一个特征向量方程。要成为平稳点,\(v\) 必须是特征值为 1 的特征向量。这一条件保证一旦达到平稳分布,再反复应用转移采样过程不会改变各马尔可夫链状态的整体分布(当然,转移算子仍会改变每个单独的状态)。

\(T\) 选择正确,则平稳分布 \(q\) 将等于我们希望采样的分布 \(p\)。17.4 节将介绍如何选择 \(T\)

可数状态马尔可夫链的大多数性质都可以推广到连续变量。此时有些作者称马尔可夫链为 Harris 链,但本书使用"马尔可夫链"一词同时描述这两种情形。一般地,带转移算子 \(T\) 的马尔可夫链在温和条件下会收敛到一个满足方程

\[ q'(x') = E_{x \sim q} T(x' | x) \tag{17.24} \]

的不动点,离散情形下这只是把公式 17.23 重写一遍。当 \(x\) 离散时,期望对应求和;当 \(x\) 连续时,期望对应积分。

无论状态是连续还是离散,所有马尔可夫链方法都由反复施加随机更新构成,直到最终状态开始从平衡分布产出样本。让马尔可夫链一直运行直到达到平衡分布称为对该链"burn-in"。在链达到平衡后,可以从平衡分布抽取无穷多样本。它们是同分布的,但任意两个相邻样本彼此高度相关。有限样本序列因而可能不足以代表平衡分布。缓解这个问题的一种方法是每隔 \(n\) 步才返回一个样本,使我们对平衡分布统计量的估计不会因为 MCMC 样本与接下来几个样本的相关性而严重偏差。马尔可夫链因为 burn-in 所需时间以及 burn-in 之后从一样本过渡到去相关的另一样本所需时间而代价高昂。若希望得到真正独立的样本,可以并行运行多条马尔可夫链,这种方法用额外的并行计算换取了延迟。用单条链生成所有样本与用一条链生成每个样本是两种极端策略;深度学习实践者通常使用数量与小批量中样本数相近的链数,然后从这个固定数量的链中按需抽取所需样本,常用的链数是 100。

另一个困难是我们无法事先知道马尔可夫链要运行多少步才能到达其平衡分布——这段时间称为混合时间。判断马尔可夫链是否已到达平衡也很困难,目前理论不足以指导我们回答这个问题。理论上我们知道链会收敛,但仅此而已。若从矩阵 \(A\) 作用于概率向量 \(v\) 的角度看马尔可夫链,则我们知道当 \(A^t\) 除了那个唯一的 1 之外已经失去 \(A\) 所有其他特征值时,链就混合了。这意味着第二大特征值的模将决定混合时间。然而在实践中我们实际上无法用矩阵表示马尔可夫链。我们的概率模型可以访问的状态数随变量数指数增长,因此表示 \(v\)\(A\)\(A\) 的特征值都不可行。由于这些以及其他障碍,我们通常并不知道马尔可夫链是否已混合,而只是大致估计一段足够长的时间来运行链,并用启发式方法(手动检查样本、测量连续样本之间的相关性等)判断链是否已混合。

17.4 吉布斯采样(Gibbs Sampling)

到此为止,我们已经描述了如何通过反复更新 \(x \leftarrow x' \sim T(x' | x)\) 来从某个分布 \(q(x)\) 中采样。然而还没描述如何保证 \(q(x)\) 是一个有用的分布。本书考虑两种基本途径:第一种是从给定的已学 \(p_{\text{model}}\) 导出 \(T\),下面以从 EBM 采样为例说明;第二种是直接参数化 \(T\) 并学习它,使其平稳分布隐式地定义我们感兴趣的 \(p_{\text{model}}\)。第二种途径的例子见 20.12 节与 20.13 节。

在深度学习语境中,我们常用马尔可夫链从基于能量的模型 \(p_{\text{model}}(x)\) 采样。此时希望马尔可夫链的 \(q(x)\) 就是 \(p_{\text{model}}(x)\)。要获得想要的 \(q(x)\),必须选择合适的 \(T(x' | x)\)

构建从 \(p_{\text{model}}(x)\) 采样的马尔可夫链的一种概念上简单而有效的方法是吉布斯采样,其中通过对 \(T(x' | x)\) 的采样通过选择一个变量 \(x_i\),再从给定 EBM 所定义的无向图 \(G\)\(x_i\) 的邻居条件下的 \(p_{\text{model}}\) 中采样来实现。只要若干变量在给定所有邻居时条件独立,就可以同时采样多个变量。如 16.7.1 节 RBM 例子所示,RBM 的所有隐藏单元可以同时采样,因为它们在给定所有可见单元时彼此条件独立;类似地,所有可见单元也可以同时采样,因为它们在给定所有隐藏单元时彼此条件独立。以这种方式同时更新许多变量的吉布斯采样方法称为块吉布斯采样

也存在其他设计从 \(p_{\text{model}}\) 采样的马尔可夫链的方法。例如 Metropolis-Hastings 算法在其他学科被广泛使用。在深度学习对无向建模的方法中,几乎不用除吉布斯采样之外的其他方法。改进的采样技术是一个可能的研究前沿。

17.5 分离模式之间的混合挑战(The Challenge of Mixing between Separated Modes)

MCMC 方法的主要困难在于它们有混合得很差的倾向。理想情况下,为从 \(p(x)\) 采样而设计的马尔可夫链的连续样本彼此完全独立,并以与概率成正比的方式访问 \(x\) 空间中的许多不同区域。然而,特别是在高维情况下,MCMC 样本变得高度相关。这种行为称为慢混合甚至无法混合。混合缓慢的 MCMC 方法可以被看作在能量函数上(等价地在概率上对链的状态即被采样的随机变量)无意中做了类似含噪梯度下降或含噪爬山的事情。链倾向于(在马尔可夫链状态空间中)从构型 \(x^{(t-1)}\)\(x^{(t)}\) 做小步,能量 \(E(x^{(t)})\) 通常低于或约等于 \(E(x^{(t-1)})\),偏好那些让能量更低的移动。当从一个比较不可能的构型(高于 \(p(x)\) 中典型构型的能量)出发时,链倾向于逐渐降低状态能量,只偶尔移动到另一个模式。一旦链找到了低能量区域(例如若变量是图像中的像素,则低能量区域可能是同一物体图像的连通流形),我们称之为一个模式,链倾向于在该模式内做随机行走。偶尔它会走出该模式,要么返回到它,要么(若发现逃逸路径)移向另一个模式。问题在于对许多有趣的分布而言,成功的逃逸路径很少,因此马尔可夫链对同一模式的采样时间会过长。

把这一点放到吉布斯采样算法的语境(17.4 节)中考虑就特别清楚。在给定步数内从一个模式移到邻近模式的概率由这些模式之间"能量势垒"的形状决定。两个由高能量势垒(低概率区域)隔开的模式之间的转移,按势垒高度呈指数级地不太可能。图 17.1 对此做了说明。当存在多个高概率模式、且被低概率区域隔开时,特别是当每步吉布斯采样只能更新一小部分变量、而这些变量的取值又主要由其他变量决定时,问题就出现。

举一个简单例子,考虑一个仅含两个变量 \(a\)\(b\) 的基于能量的模型,\(a\)\(b\) 都是带符号的二值,取 \(-1\)\(1\)。若 \(E(a, b) = -wab\)\(w\) 为某个大正数,则模型强烈倾向于 \(a\)\(b\) 同号。考虑在 \(a = 1\) 时用一次吉布斯采样步骤更新 \(b\)。给定 \(a = 1\)\(b\) 的条件分布为 \(P(b = 1 | a = 1) = \sigma(w)\)。若 \(w\) 很大,sigmoid 饱和,\(b\) 也取 1 的概率接近 1。类似地,若 \(a = -1\),则 \(b\)\(-1\) 的概率接近 1。按 \(p_{\text{model}}(a, b)\),两个变量两种符号的概率相等;但按 \(p_{\text{model}}(a | b)\),两个变量应当同号。这意味着吉布斯采样将非常罕见地翻转这些变量的符号。

在实际场景中挑战更大,因为关心的不仅是两个模式之间的转移,而是在真实模型可能含有的许多模式之间的转移。若多个这样的转移由于模式间混合的困难而难以实现,则要获得覆盖大部分模式的可靠样本集合会非常昂贵,链到平稳分布的收敛也会非常慢。

有时可以通过找到一组高度依赖的单元并把它们作为一个块同时更新来解决这个问题。不幸的是,当依赖关系复杂时,从该组中抽取样本在计算上可能难以处理——毕竟马尔可夫链原本要解决的问题正是从这个大变量组中采样的问题。

在含潜变量的模型(定义联合分布 \(p_{\text{model}}(x, h)\))的语境下,我们通常通过在从 \(p_{\text{model}}(x | h)\) 采样与从 \(p_{\text{model}}(h | x)\) 采样之间交替来抽取 \(x\) 的样本。从快速混合的角度,我们希望 \(p_{\text{model}}(h | x)\) 有非常高的熵;但从学习 \(h\) 的有用表示的角度,我们希望 \(h\)\(x\) 编码足够的信息以良好地重建它,这意味着 \(h\)\(x\) 应有非常高的互信息。这两个目标相互冲突。我们经常学到把 \(x\) 非常精确地编码到 \(h\) 中却不能很好混合的生成模型。这种情形在玻尔兹曼机中经常出现——玻尔兹曼机学到的分布越尖锐,从模型分布采样的马尔可夫链就越难良好地混合。图 17.2 对此做了说明。

所有这些都可能使 MCMC 方法在感兴趣的分布具有按类别分离的流形结构(分布集中在许多模式周围,而这些模式被广阔的高能区域隔开)时不那么有用。这是我们在许多分类问题中期望的那种分布类型,会使 MCMC 方法因为模式间混合差而收敛得非常慢。

17.5.1 退火以实现模式间混合(Tempering to Mix between Modes)

当一个分布在低概率区域中夹着若干高概率的尖峰时,要在分布的不同模式之间混合是困难的。若干加速混合的技术基于构造目标分布的替代版本,使其中的峰没那么高、邻近的谷没那么低。基于能量的模型提供了一种特别简单的方式来实现这一点。本书至此把 EBM 描述为定义如下概率分布

\[ p(x) \propto \exp(-E(x)). \tag{17.25} \]

EBM 可以增加一个控制分布尖锐程度(sharpness)的额外参数 \(\beta\)

\[ p_\beta(x) \propto \exp(-\beta E(x)). \tag{17.26} \]

\(\beta\) 参数常被描述为温度的倒数,反映了 EBM 在统计物理中的起源。当温度趋于零、\(\beta\) 趋于无穷时,EBM 变成确定性的;当温度趋于无穷、\(\beta\) 趋于零时,该分布(对离散 \(x\))变成均匀分布。

通常模型在 \(\beta = 1\) 时训练得到。然而可以利用其他温度,特别是 \(\beta < 1\) 的那些。退火是一种通用策略:通过在 \(\beta < 1\) 时采样来快速在 \(p_1\) 的模式之间混合。

基于退火转移(Neal, 1994)的马尔可夫链暂时从更高温度的分布采样,以便混合到不同模式,再恢复到单位温度分布采样。这些技术已被应用于 RBM 等模型(Salakhutdinov, 2010)。另一种方法是使用并行退火(Iba, 2001),其中马尔可夫链在不同温度下并行模拟许多不同的状态。最高温度的状态混合慢,而温度为 1 的最低温度状态提供来自模型的精确样本。转移算子包括在两个不同温度水平之间随机交换状态,使来自高温槽的足够高概率样本能跳入低温槽。这种方法也已被应用于 RBM(Desjardins et al., 2010; Cho et al., 2010)。尽管退火是一种有前景的方法,到目前为止它尚未让研究者在从复杂 EBM 采样的挑战上取得显著进展。一个可能的原因是存在临界温度(critical temperatures),在该温度附近为使退火有效,温度过渡必须非常缓慢(因为温度逐步降低)。

17.5.2 深度可能有助于混合(Depth May Help Mixing)

从潜变量模型 \(p(h, x)\) 采样时我们已经看到:若 \(p(h | x)\)\(x\) 编码得过于完美,则从 \(p(x | h)\) 采样的 \(x\) 不会变化很大,混合会很差。解决这一问题的一种方法是让 \(h\) 成为深度表示,把 \(x\) 编码到 \(h\) 时使 \(h\) 空间中的马尔可夫链更容易混合。许多表示学习算法(如自编码器与 RBM)倾向于让 \(h\) 上的边际分布比 \(x\) 上的原始数据分布更均匀、更单峰。可以认为这源于在利用所有可用的表示空间的同时试图最小化重构误差——最小化训练样本上的重构误差会在不同训练样本在 \(h\) 空间中彼此容易区分(因此彼此分隔良好)时实现得更好。Bengio et al. (2013a) 观察到,更深堆叠的正则化自编码器或 RBM 在顶层 \(h\) 空间产生的边际分布显得更为分散、更为均匀,对应于不同模式(实验中即类别)的区域之间的间隔更小。在那一更高层空间中训练 RBM 允许吉布斯采样更快地跨模式混合。但如何利用这一观察来帮助更好地训练与采样深度生成模型目前仍不明确。

尽管混合存在困难,蒙特卡罗技术仍是有用的,且常常是可用的最佳工具。事实上,它们是用来应对无向模型难以处理的配分函数的主要工具——这正是下一章的主题。

本章个人批注

蒙特卡罗这一章是 Ch16 结构化概率模型与 Ch18 配分函数估计之间的桥梁。Ch16 把无向模型定义清楚了,配分函数 \(Z\) 也提了出来,但回避了"如何实际算"的问题;本章则给出了实际采样的工具箱:基本蒙特卡罗采样解决"\(p\) 好采"的情形;重要采样解决"\(p\) 不好采但能找到一个性质相近的 \(q\)"的情形;MCMC 解决"\(p\) 复杂到根本无法直接采"的情形。三条路线的递进关系清晰,且都基于"用经验平均近似期望"这一统一直觉。

17.2 节给出的最优 \(q^*(x) \propto p(x) |f(x)|\) 在概念上很漂亮——"把更多权重放到被积函数大的地方"——但其自我循环的实质(要构造 \(q^*\) 必须先解出问题)也值得记住。书中的"单样本即够"的反讽只是为了说明极端情形下的方差收缩,并非常用做法。有偏重要采样(公式 17.14–17.16)那种"分母是权重之和"的形式非常实用,因为它回避了未归一化分布难以处理的问题——这在第 18 章估计配分函数时会再次出现。

17.3 节把马尔可夫链形式化为线性代数对象(\(v^{(t)} = A v^{(t-1)}\))是教学上的妙笔:平稳分布对应特征值 1 的特征向量这一观察把"链为什么不收敛"和"收敛到哪儿"这两个问题用一个矩阵特征分解统一了。但作者自己紧接着泼了一盆冷水——实践中根本写不出 \(A\) 矩阵,因为状态数指数级。这就引出了工程实践上"我们不知道链有没有真的混合"的尴尬,也是后续 17.5 节谈混合困难的理论伏笔。

17.5 节是本章的"现实检查"。理论上 MCMC 给出任意精度的无偏估计,实际上高维多模式分布下 chain 在两个 mode 之间跳来跳去的概率按势垒高度指数衰减。退火(17.5.1)的工程直觉是清晰的——高温下能量曲线被压平,模式间能串门,但"临界温度过渡必须很慢"这一点揭示了退火本身不能解决根本问题。17.5.2 关于"深度表示更易混合"的讨论为 Ch15 末尾"分布式表示 + 深度 ≈ 表示效率提升"的论点提供了一个具体的机制级解释:当 \(h\) 上的边际分布更均匀时,在 \(h\) 空间里跑的 chain 不会卡死在某个 mode 上。但作者诚实地承认"目前不清楚怎么利用这一观察来帮助训练深度生成模型"——这是 2016 年深度生成模型研究的真实状态(GAN 刚刚出现,VAE 正在主流化)。

把这一章和 Ch16 连起来看会发现一个有趣的循环:Ch16 说"无向模型因为 \(Z\) 难算而麻烦",Ch17 说"但即便你能采样,许多分布的链也混合得不好",Ch18 则要正面硬刚 \(Z\)。换言之,蒙特卡罗方法是无向模型的通用工具,但其本身的局限(高维模式间混合差)正是无向模型难的根本原因之一。

与上下章的衔接(一段话)

Ch16 把结构化概率模型(有向、无向、EBM、配分函数、分离性、因子图、采样概述、潜变量、推断、深度学习视角、RBM 等)这一整套语言建立起来,但一直没有正面回答"那我怎么从这些模型里采样"或"怎么估计配分函数"这两个具体问题。Ch17 接过来专门回答前者:基本蒙特卡罗采样、重要采样、MCMC、吉布斯采样——这四节构成一个由"从 \(p\) 直接采 → 改用一个相近的 \(q\) → 用马尔可夫链收敛到 \(p\) → 在 EBM 上具体实现马尔可夫链"逐层递进的工具箱;最后两节(17.5、17.5.1、17.5.2)则坦承这套工具在高维多模式分布上的失败模式。Ch18 将紧接着处理剩下那个问题——估计无向模型的配分函数 \(Z\)(与本章 17.2 中提到的"用重要采样估计 \(Z\)"互相呼应)。