跳转至

第 16 章:结构化概率模型(Structured Probabilistic Models for Deep Learning)

16.1 无结构建模的挑战(The Challenge of Unstructured Modeling)

深度学习的目标是把机器学习扩展到解决人工智能所需的那类问题,这意味着要能理解具有丰富结构的高维数据:自然图像、表示语音的音频波形、含多个单词和标点的文档。分类算法可以把这种高维分布的输入概括为一个类别标签(图中是什么物体、录音里说的是什么词、文档主题是什么),分类过程丢弃了输入中的大部分信息,只产生一个输出(或者该输出的概率分布),并且分类器通常也能忽略输入的许多部分,例如识别照片中的物体时一般可以忽略背景。

然而概率模型还要做大量别的任务,这些任务通常比分类更昂贵。有些任务要求产生多个输出值,多数任务要求完整地理解输入的整体结构,不允许忽略其中的片段。书中列出四类典型任务:密度估计(给定输入 x,返回对真实密度 p(x) 的估计,只需单一输出但需要完整理解输入,即使向量中只有一个元素异常,系统也必须赋予其低概率);去噪(给定受损或被错误观测的输入 x̃,返回对原始或正确 x 的估计,例如清除旧照片上的灰尘与划痕,需要对估计的干净样本的每个元素都给出输出,且必须理解整个输入);缺失值填补(给定 x 的部分元素观测,要求返回对未观测元素的估计或概率分布,需要多个输出,因为模型要能够恢复 x 的任何元素);采样(从分布 p(x) 生成新样本,应用于语音合成等,需要多个输出值并需要对整个输入建立良好模型)。建模一个跨越上千甚至上百万随机变量的丰富分布在计算上和统计上都是挑战。即使只建模二元变量也已显得难以承受——一张 32×32 像素的 RGB 彩色图像共有 2^{3072} 种可能的二元图像,这个数字超过宇宙中估计原子数的 10^{800} 倍。

一般地,若希望建模一个含 n 个离散变量、各取 k 个值的随机向量 x 上的分布,那么用查找表(每个可能结果存一个概率值)表示 P(x) 需要 k^n 个参数。这种做法在四个方面都不可行:存储上除极小的 n、k 外,开销过大;统计效率上,参数越多训练数据需求越大,巨大的参数量要求天文数字的训练集,否则将严重过拟合;推断运行时上(如计算 P(x₁) 或 P(x₂|x₁))需要遍历整张表,运行时与存储量同阶指数级;采样运行时上,最朴素的方法是采 u∼U(0,1) 然后累加表中概率值直至超过 u,对应最坏情况仍需读完整张表。表式方法的问题是它显式地建模了每对变量子集之间的每种可能交互,而真实任务的概率分布简单得多,多数变量只通过间接方式相互影响。

书中以接力赛跑为例做直观说明:队伍三人 Alice、Bob、Carol,Alice 先跑一圈把接力棒交给 Bob,Bob 再跑一圈交给 Carol,Carol 跑最后一圈。三人的完赛时间都可建模为连续随机变量。Alice 的完赛时间不依赖于任何人;Bob 的完赛时间依赖于 Alice(他要在 Alice 完成后才能起跑);Carol 的完赛时间依赖于 Bob,但通过 Bob 而只间接依赖于 Alice——已知 Bob 完赛时间后,再去问 Alice 的完赛时间也不会让 Carol 的估计更准确。因此接力赛只需建模两种直接交互:Alice → Bob 和 Bob → Carol,可以省略 Alice 与 Carol 之间的间接交互。结构化概率模型正是为"只建模随机变量之间的直接交互"提供了形式化框架,使得参数显著减少、估计更可靠,同时存储、推断和采样的计算开销也大幅下降。

16.2 用图描述模型结构(Using Graphs to Describe Model Structure)

结构化概率模型用图(graph theory 意义上的"节点/顶点"加"边")来表示随机变量之间的交互。节点代表随机变量,边代表直接交互。直接交互蕴含其他间接交互,但只需显式建模直接交互。用图来描述概率分布中交互的方式不止一种,图模型可大体分为两类:基于有向无环图的模型,以及基于无向图的模型。

16.2.1 有向模型(Directed Models)

有向图模型(directed graphical model)又称信念网络(belief network)或贝叶斯网络(Bayesian network,Pearl, 1985)。之所以称为"有向",是因为其边有方向,用箭头表示。箭头方向表示哪个变量的概率分布用另一个来定义:从 a 到 b 画一条箭头,意味着 b 上的概率分布通过以 a 为条件变量之一的条件分布来定义,即 b 上的分布依赖于 a 的值。

承接接力赛跑例子,将 Alice、Bob、Carol 的完赛时间分别记为 t₀、t₁、t₂。t₁ 依赖于 t₀,t₂ 直接依赖于 t₁、只间接依赖于 t₀,可以在有向图模型中画出这种关系(图 16.2)。形式化地,有向图模型由有向无环图 G(顶点为模型中的随机变量)和一组局部条件概率分布 p(x_i | Pa_G(x_i))(其中 Pa_G(x_i) 给出 x_i 在 G 中的父节点)定义。x 上的概率分布由公式 (16.1) p(x) = ∏_i p(x_i | Pa_G(x_i)) 给出。在接力赛例中,对应 p(t₀, t₁, t₂) = p(t₀) p(t₁|t₀) p(t₂|t₁),即公式 (16.2)。

书中比较了两种表示的开销:若把时间离散化为 0–10 分钟、6 秒一块,则 t₀、t₁、t₂ 各有 100 种取值。用一张表表示 p(t₀,t₁,t₂) 需要存 999,999 个值;若只用每张条件概率分布的表,则 p(t₀) 需要 99 个值,p(t₁|t₀) 和 p(t₂|t₁) 各需 9900 个值,合计 19,899 个值,参数减少到原来的 1/50 以下。一般地,建模 n 个各取 k 值的离散变量,表式方法代价为 O(k^n);若用有向图模型,m 为任一条件概率分布中出现的最大变量数(条件号两侧合计),则表代价为 O(k^m),只要能设计出 m≪n 的模型,就能获得显著的节省。换言之,只要每个变量在图中只有少数父节点,分布就能用极少的参数表示。一些图结构的限制(如要求是树)可以保证对子集的边际或条件分布运算仍是高效的。

需要认识到图能编码什么、不能编码什么:图只编码"哪些变量之间条件独立"这种简化假设;其他简化假设仍然可以独立做。例如假设 Bob 的跑步表现独立于 Alice 的表现("不论 Alice 跑得多快,Bob 都跑同样时间"),那么 Alice 对 Bob 完赛时间的唯一影响只是要把 Alice 的完赛时间累加到 Bob 所需的总时间里,这允许模型只用 O(k) 而非 O(k²) 个参数。但要注意,由于 t₁ 表示的是 Bob 的绝对完赛时间而非他本人跑步的时间,所以 t₀ 与 t₁ 仍然直接相关,图中仍需保留 t₀ → t₁ 的箭头。"Bob 个人跑步时间独立于其他因素"这个假设无法在 t₀、t₁、t₂ 的图中编码,而要写进条件分布本身的定义中——条件分布不再是按 t₀、t₁ 索引的 k×(k−1) 元表,而是一个只用 k−1 个参数的稍复杂的公式。有向图模型的语法对如何定义条件分布没有任何约束,它只限定条件分布允许接受哪些变量作为参数。

16.2.2 无向模型(Undirected Models)

有向图模型为描述结构化概率模型提供了一种语言,另一种主流语言是无向模型(undirected model),又称马尔可夫随机场(Markov random field, MRF)或马尔可夫网络(Markov network,Kindermann, 1980)。无向模型的边没有方向。

有向模型最自然适用于"清楚地知道每个箭头方向的理由"的场景,通常是因果关系明确、只朝一个方向流动的情况,例如接力赛跑——先跑的选手影响后跑的选手的完赛时间,后跑的选手不影响先跑的。但不是所有想建模的情形都有这种明确方向,当交互没有内在方向或在两个方向上都发生时,用无向模型更合适。

书中给出一个三人互相传染感冒的例子:建模三个二元变量——"你是否生病"、"你室友是否生病"、"你同事是否生病"。室友和同事互不认识,他们之间直接传染感冒的可能性极低,可视为罕见到不值得建模;但他们各自都可能把感冒传给你,你也可能再传给另一方。室友—同事之间的间接传染可以通过"同事→你"和"你→室友"两条路径建模。这种情况下,让你生病和让室友生病的难易程度相当,不存在清晰的单向叙述可作为建模基础,这正是使用无向模型的动机。在无向模型中,如果两个节点之间有一条边,则对应随机变量直接交互;与有向模型不同的是,无向模型的边没有箭头,也不与条件概率分布关联。

将你的健康记为 h_y,室友记为 h_r,同事记为 h_c(图 16.3)。形式化地,无向图模型定义在无向图 G 上。对 G 中的每个团 C,定义一个因子 φ(C)(又称团势,clique potential),度量该团内变量处于各联合状态时的亲和度(affinity)。因子被限制为非负。它们一起定义一个未归一化概率分布 (16.3) p̃(x) = ∏_{C∈G} φ(C)。只要团都较小,未归一化概率分布就易于处理,编码了"亲和度高的状态更可能"的思想。但与贝叶斯网络不同,团的定义本身没有太多结构,所以无法保证把它们乘起来就是合法概率分布(图 16.4 给出了从无向图读取因式分解信息的例子)。在上述感冒传染的例子中含两个团:{h_y, h_c} 与 {h_y, h_r},对每个团定义一个表格形式的因子即可。

16.2.3 配分函数(The Partition Function)

未归一化概率分布虽然保证处处非负,但并不保证求和或积分等于 1。要得到合法概率分布,必须用相应的归一化概率分布 (16.4) p(x) = (1/Z) p̃(x),其中 Z 是使概率分布求和或积分为 1 的值 (16.5) Z = ∫ p̃(x) dx。当 φ 函数固定时,可把 Z 视为常数;若 φ 函数带参数,则 Z 是这些参数的函数。文献中常省略 Z 的自变量以节省空间。归一化常数 Z 称为配分函数(partition function),术语借自统计物理。

由于 Z 是对 x 所有可能联合赋值的求和/积分,通常难以精确计算。要得到无向模型的归一化概率分布,模型结构和 φ 函数的定义必须有利于高效计算 Z。在深度学习的语境下,Z 通常是不可计算的;由于无法精确计算 Z,必须诉诸近似,相关的近似算法是第 18 章的主题。

设计无向模型时一个重要注意事项是:可能以使 Z 不存在的方式指定因子。当模型中某些变量连续且 p̃ 在其定义域上的积分发散时就会发生。例如用 φ(x) = x² 建模单标量 x∈R,则 Z = ∫ x² dx 发散,对应的选择不存在合法概率分布。有时 φ 函数中某个参数决定概率分布是否良定义,例如 φ(x;β) = exp(-βx²),β 参数决定 Z 是否存在——正 β 给出 x 上的高斯分布,其他 β 则使 φ 不可归一化。

有向建模与无向建模的一个关键区别是:有向模型一开始就以概率分布直接定义;无向模型则先用 φ 函数宽松地定义,再转换为概率分布。这会改变处理这些模型时所需的直觉。在无向模型中要牢记的一条关键思路是:每个变量的定义域对给定 φ 函数集合所对应的概率分布类型有巨大影响。例如考虑 n 维向量值随机变量 x 和参数为偏置向量 b 的无向模型,假设对 x 的每个元素有一个团 φ^{(i)}(x_i) = exp(b_i x_i)。这对应什么样的概率分布?答案是信息不足——因为还没指定 x 的定义域。若 x∈Rⁿ,则 Z 的积分发散,没有合法概率分布;若 x∈{0,1}ⁿ,则 p(x) 分解为 n 个独立分布,p(x_i=1) = sigmoid(b_i);若 x 的定义域是标准基向量的集合({[1,0,…,0], [0,1,…,0], …, [0,0,…,1]}),则 p(x) = softmax(b),此时 b_i 较大反而降低 j≠i 时 p(x_j=1) 的概率。通常可利用变量定义域的精心选择,从一组相对简单的 φ 函数获得复杂行为——书中说将在 20.6 节探讨这种思想的一个实际应用。

16.2.4 基于能量的模型(Energy-Based Models)

许多关于无向模型的有趣理论结果都依赖于"∀x, p̃(x) > 0"这一假设。强制该假设成立的一种便利方式是采用基于能量的模型(energy-based model, EBM),其定义为 (16.7) p̃(x) = exp(-E(x)),其中 E(x) 称为能量函数。因为 exp(z) 对所有 z 为正,所以任何能量函数都不会让任何状态 x 的概率为零。可以自由选择能量函数使学习更简单:若直接学习团势,则需用约束优化以任意地施加特定的最小概率值;而学习能量函数则可以用无约束优化。能量模型中的概率可以任意接近零但永远不会达到零。

任何形如 (16.7) 的分布都是玻尔兹曼分布(Boltzmann distribution)的实例。因此许多基于能量的模型被称为玻尔兹曼机(Boltzmann machine,Fahlman et al., 1983; Ackley et al., 1985; Hinton et al., 1984; Hinton and Sejnowski, 1986)。对何时称一个模型为 EBM、何时称为玻尔兹曼机并无公认标准。"玻尔兹曼机"最初用于描述变量全为二值的模型,但如今许多模型(如均值-协方差受限玻尔兹曼机)也包含实值变量。玻尔兹曼机最初既可包含也可不包含潜变量,但今天这个词最常用来指代含潜变量的模型,而无潜变量的玻尔兹曼机更多被称为马尔可夫随机场或对数线性模型。

无向图中的团对应未归一化概率函数的因子。因为 exp(a) exp(b) = exp(a + b),所以无向图中不同的团对应能量函数中不同的项。换言之,能量模型是马尔可夫网络的一种特例——指数化使能量函数中的每一项对应一个不同团的因子(图 16.5 给出从无向图结构读取能量函数形式的例子)。可以把能量函数含多个项的能量模型视为专家之积(product of experts,Hinton, 1999):能量函数的每一项对应概率分布中一个因子,每一项可看作一个"专家",决定某个软约束是否被满足;每个专家可能只施加一个涉及随机变量低维投影的约束,但通过概率乘积组合起来,专家们共同施加了复杂的高维约束。

能量模型定义中有一部分从机器学习观点看并无功能性目的——公式 (16.7) 中的负号。负号可并入 E 的定义之中;对许多 E 的选择,学习算法本来就能自由决定能量的符号。负号存在主要是为了保持机器学习文献与物理学文献之间的兼容性。许多概率建模进展最早由统计物理学家发展,对他们而言 E 指真实的物理能量,符号不任意。"能量"和"配分函数"等术语即便其数学适用范围已远超当初的物理语境,仍与这些技术关联。有些机器学习研究者(如 Smolensky, 1986,把负能量称为"和谐度"harmony)选择省去负号,但这不是标准约定。

许多对概率模型操作的算法不需要计算 p_model(x),而只需计算 log p̃_model(x)。对含潜变量 h 的能量模型,这些算法有时以该量的负值形式给出,称为自由能:(16.8) F(x) = -log ∑_h exp(-E(x,h))。但本书通常更喜欢更一般的 log p̃_model(x) 形式。

16.2.5 分离与 D-分离(Separation and D-Separation)

图模型的边告诉我们哪些变量直接交互,但我们常常需要知道哪些变量间接交互。其中一些间接交互可以通过观测其他变量来启用或禁用。更形式化地,我们想知道:给定第三组变量 S 的取值,哪些变量子集之间条件独立。

在无向模型中,由图蕴含的条件独立被称为分离(separation)。若图结构蕴含"A 在给定 S 时独立于 B",则称变量集 A 与变量集 B 在给定第三组变量 S 时分离。若两变量 a 与 b 之间存在一条仅含未观测变量的路径,则这两变量不分离;若不存在路径或所有路径都含有观测变量,则两变量分离。仅含未观测变量的路径称为"活跃的"(active),含有观测变量的路径称为"非活跃的"(inactive)。画图时可用阴影表示已观测变量(图 16.6 给出活跃/非活跃路径画法的图示,图 16.7 给出从无向图读取分离的例子)。

类似的概念也适用于有向模型,但有向模型中称为 d-分离(d-separation),其中"d"代表"dependence"(依赖)。有向图的 d-分离定义与无向图的分离相同:若图结构蕴含"A 在给定 S 时独立于 B",则称 A 与 B 在给定 S 时 d-分离。和无向模型一样,可以通过检查图中活跃路径是否存在来考察图所蕴含的独立关系:存在活跃路径则两变量依赖,不存在则 d-分离。在有向网中判断路径是否活跃稍更复杂。图 16.8 列出 a 与 b 之间所有可能的长度为 2 的活跃路径类型:(a) 路径中箭头直接从 a 到 b 或反方向,这种路径在 s 被观测时被阻断(接力赛例子就属此类);(b) a 与 b 由共同原因 s 连接,例如 s 表示是否有飓风,a、b 表示两处邻近气象站的风速——若观测到 a 站风速异常高,也会预期 b 站高风速,但只要知道确实有飓风,无论 a 处观测到什么都不会改变对 b 处风速的预期,因此观测 s 可以阻断该路径;(c) a 与 b 都是 s 的父节点,称为 V-结构或碰撞情形(collider),在 s 被观测时该路径反而变为活跃,例如 s 表示同事没来上班,a 表示她病了,b 表示她在休假——若发现她没上班则可能病了或在休假,但二者同时发生的概率不高;一旦知道她去休假了,就已经足以解释她的缺席,可推断她大概并不同时生病,这就是解释远离效应(explaining away),与共同原因情形中"观测 s 阻断路径"的方向相反;(d) 即使观测到 s 的任意后代,解释远离效应仍然发生,例如 c 表示你是否收到同事的报告,若注意到没收到报告会提高她今天没来上班的概率,进而使她"病了或休假"都更可能;阻断穿过 V-结构的路径的唯一方式是 s 的所有后代都不被观测。图 16.9 给出从图中读出若干 d-separation 性质的例子:a 与 b 在给定空集时 d-分离;a 与 e 在给定 c 时 d-分离;d 与 e 在给定 c 时 d-分离;但给定 c 时 a 与 b 不再 d-分离,给定 d 时 a 与 b 也不再 d-分离。

必须记住,分离与 d-分离只告诉我们图所蕴含的那些条件独立——并不要求图蕴含所有实际存在的独立。特别是用完全图(complete graph,含所有可能边的图)来表示任何分布都是合法的。事实上,有些分布含现有图记号无法表示的独立。上下文特定独立(context-specific independences)是指依赖于网络中某些变量取值的独立。例如考虑三个二元变量 a、b、c 的模型:假设当 a=0 时 b 与 c 独立,当 a=1 时 b 恒等于 c。要编码 a=1 时的行为需要连接 b 和 c 的边;这样图就无法表示 a=0 时 b 与 c 独立。一般地,图永远不会蕴含实际不存在的独立,但图可能无法编码一种独立。

16.2.6 在无向与有向图之间转换(Converting between Undirected and Directed Graphs)

我们经常把某个具体的机器学习模型称为无向或有向的——例如通常称 RBM 为无向、稀疏编码为有向。这种说法可能产生误导,因为概率模型本身并不固有有向或无向;只是有些模型用有向图最容易描述,有些用无向图最容易描述。有向模型与无向模型各有优劣,不存在一种方法在所有情况下都明显更优;应当为每个任务选择合适的语言,选择部分取决于我们想描述的概率分布,也可能取决于哪种方法能捕捉到该分布中最多的独立关系,或用最少的边描述该分布。有时即便建模同一个概率分布,也会在不同模型语言间切换:在观察到某个变量子集或要做不同的计算任务时,另一种语言可能更合适。例如有向模型通常提供直接、高效地从模型采样的方法(见 16.3 节),而无向模型形式通常便于推导近似推断过程(第 19 章中无向模型在公式 19.56 处的作用就是例证)。

任何概率分布都可以用有向或无向模型表示。最坏情况下可以用"完全图"表示任何分布:对有向模型而言,完全图是任一有向无环图,按某种顺序排列随机变量,使每个变量以其之前的所有变量作为祖先;对无向模型而言,完全图就是包含所有变量的单个团的图(图 16.10 给出例子)。但完全图并不很有用,因为它不蕴含任何独立关系。当用图表示一个概率分布时,我们希望选择的图能蕴含尽可能多的独立,而不蕴含任何实际不存在的独立。有向完全图并不唯一——选定一个变量顺序后,按顺序把每个变量连向其后的所有变量,因此对同一组随机变量存在阶乘数量个不同的完全有向图;相比之下,无向完全图是唯一的。

从这个观点看,有些分布用有向模型能更高效地表示,而另一些用无向模型更高效。换言之,有向模型能编码一些无向模型无法完美编码的独立,反之亦然。有向模型能够使用一种无向模型无法完美表示的子结构,称为 immorality(immorality,中文常译作"非道德"):两个随机变量 a 与 b 都是第三个变量 c 的父节点,且 a 与 b 之间没有任何方向的边直接相连(该名称起源于图模型文献中关于"未婚父母"的玩笑)。要把有向模型图 D 转换为无向模型 U:对每对变量 x、y,若 D 中有边(任一方向)连接 x 与 y,或 x 与 y 都是 D 中第三个变量 z 的父节点,就在 U 中加一条无向边连接 x 与 y。结果 U 称为道德化图(moralized graph)。图 16.11 给出用道德化将几个有向模型转换为无向模型的例子。

反之,无向模型也可以包含有向模型无法完美表示的子结构。具体地,若无向图 U 包含长度大于三的环且该环不含弦(chord),则不能用有向图 D 表示 U 所蕴含的全部条件独立。环(loop)是由无向边连接的变量序列,序列最后一个变量与第一个相连;弦(chord)是环序列中任意两个不相邻变量之间的连接。若 U 有长度 ≥ 4 且没有弦的环,则在转换为有向模型前必须加上弦,加上弦得到的图称为弦图(chordal)或三角化图(triangulated graph),因为所有环都可用更小的三角环表示。从弦图构造有向图 D 时还要给每条边赋方向,过程中不能产生有向环,否则结果不定义合法的有向概率模型。给边赋方向的一种方法是给随机变量规定一个顺序,然后把每条边都从顺序中较早的节点指向较晚的节点。图 16.12 给出演示。

16.2.7 因子图(Factor Graphs)

因子图(factor graph)是另一种画无向模型的方式,它解决了标准无向模型语法在图形表示上的一种歧义。在无向模型中,每个 φ 函数的作用域必须是图中某个团的子集。歧义源于:并不清楚每个团是否真的对应一个作用域涵盖整个团的因子——例如含三个节点的团既可能对应一个作用域为全部三个节点的因子,也可能对应三个各自只包含一对节点的因子。

因子图通过显式表示每个 φ 函数的作用域来解决这种歧义。具体而言,因子图是一种无向模型的无向图表示,由二部无向图构成。一部分节点画成圆形,对应随机变量(与标准无向模型一致);其余节点画成方形,对应未归一化概率分布中的因子 φ。变量和因子之间可用无向边连接——当且仅当变量是因子在未归一化概率分布中接受的参数之一时,变量与因子之间才有一条边。因子之间、变量之间都不能连边。图 16.13 给出因子图如何消解无向网络解读歧义的例子。

16.3 从图模型采样(Sampling from Graphical Models)

图模型也便于从模型中采样。有向图模型的一个优势是存在一种简单高效的过程,称为祖先采样(ancestral sampling),可从模型表示的联合分布中产生样本。

基本思路是:将图中的变量 x_i 排成一个拓扑序,使得对所有 i、j,若 x_i 是 x_j 的父节点则 j > i。然后按此顺序采样:先采 x₁ ∼ P(x₁),再采 P(x₂ | Pa_G(x₂)),依此类推,最后采 P(x_n | Pa_G(x_n))。只要每个条件分布 p(x_i | Pa_G(x_i)) 易于采样,那么整个模型就易于采样。拓扑排序保证了可以按 (16.1) 的顺序读取条件分布并依次采样;没有拓扑排序,就可能在父节点可用之前尝试采样某个变量。对某些图可能存在多个拓扑序,祖先采样可与其中任意一个配合使用。祖先采样通常很快(假设从每个条件采样都简单)且方便。

祖先采样的一个缺点是它只适用于有向图模型。另一个缺点是不支持每种条件采样操作:当希望从有向图模型中某个变量子集采样、给定另一些变量时,通常要求所有条件变量在被采样的变量之前出现在排序图中,此时可以直接从模型分布指定的局部条件概率分布采样。否则需要采样的条件分布是给定观测变量的后验分布,这些后验分布通常并未在模型中显式指定并参数化;推断这些后验分布可能代价高昂,在这种情况下祖先采样不再高效。

祖先采样只适用于有向模型。无向模型的采样可以先转换为有向模型,但这往往需要解决难处理的推断问题(以求新有向图根节点的边际分布)或引入过多边导致有向模型本身不可处理。不转换而直接从无向图模型采样则似乎必须解决循环依赖问题——每个变量都与每个其他变量交互,没有明确的起点。最简单的概念性方法是吉布斯采样(Gibbs sampling):假设有 n 维向量随机变量 x 上的图模型,迭代访问每个变量 x_i,从 p(x_i | x_{-i}) 采样。鉴于图模型的分离性质,可以等价地只对 x_i 的邻居做条件。然而一次遍历所有 n 个变量并完成采样后,并不能立即得到 p(x) 的公平样本;必须重复该过程,使用邻居更新后的值重新采样所有 n 个变量。渐近地,经多次重复后过程收敛于从正确分布采样。要判断样本何时达到对目标分布足够准确的近似可能很难。无向模型的采样技术是一个高级话题,将在第 17 章详细讨论。

16.4 结构化建模的优势(Advantages of Structured Modeling)

使用结构化概率模型的主要优势是:能大幅降低表示概率分布、学习与推断的代价。在有向模型的情况下采样也得到加速,无向模型的情形则可能复杂。允许所有这些操作使用更少运行时间和存储的主要机制是选择不建模某些交互——图模型通过省略边来传达信息:凡没有边之处,模型就指定"无需建模直接交互"这一假设。

结构化概率模型一个较难量化的好处是:允许我们把知识的表示与知识的学习、或在已有知识基础上进行的推断明确分开。这让模型更易于开发和调试——可以为广泛的图类设计、分析、评估学习算法和推断算法;与此同时,可以独立地设计捕捉数据中我们认为重要关系的模型,然后把不同的算法和结构组合起来,得到不同可能性的笛卡尔积。为每种可能情形设计端到端算法则要困难得多。

16.5 学习依赖关系(Learning about Dependencies)

一个好的生成模型需要准确捕捉观测变量或"可见"变量 v 上的分布。v 的不同元素之间通常高度依赖。在深度学习的语境下,建模这些依赖最常用的方法是引入若干潜变量或"隐"变量 h。模型于是可以通过 v_i 与 h 之间的直接依赖、以及 h 与 v_j 之间的直接依赖,间接捕捉任意一对 v_i 与 v_j 之间的依赖。

一个不含任何潜变量的好模型需要在贝叶斯网络中有非常多的父节点,或者在马尔可夫网络中有非常大的团。仅表示这些高阶交互本身就是昂贵的——既在计算意义上(团中必须存储的参数个数随团规模指数增长),也在统计意义上(参数指数级多,要求海量数据才能准确估计)。当模型意在通过直接连接捕捉可见变量间的依赖时,通常不可能把所有变量都连起来,所以图必须设计成连接紧密耦合的变量、略去其他变量之间的边。机器学习中有一个称为结构学习(structure learning)的完整子领域专门处理该问题——可参考 Koller and Friedman (2009)。大多数结构学习技术都是贪心搜索的一种形式:提出一种结构,用该结构训练一个模型,给该结构打分;打分同时奖励训练集准确度、惩罚模型复杂度;候选结构通过对当前结构添加或删除少量边得到,再进入下一步搜索;搜索朝着预期提高分数的新结构推进。

使用潜变量代替自适应结构可以避免离散搜索和多轮训练。在可见与隐藏变量上的固定结构中,可见与隐藏单元之间的直接交互可以施加可见单元之间的间接交互。利用简单的参数学习技术就可以学习一个固定结构下的模型,并在 p(v) 的边际上推断出正确的结构。

潜变量除了在高效捕捉 p(v) 方面的作用外还有其他优势:新引入的变量 h 还提供了 v 的替代表示。例如如 3.9.6 节所述,高斯混合模型学到的一个潜变量对应"输入样本来自哪一类",这意味着高斯混合模型中的潜变量可以用于分类。第 14 章中看到稀疏编码等简单概率模型学到的潜变量既可作为分类器的输入特征,也可作为流形上的坐标。其他模型也可按同样方式使用,但更深或交互类型不同的模型能为输入产生更丰富的描述。许多方法都通过学习潜变量实现特征学习。通常,给定 v 与 h 的某个模型,实验观察表明 E[h|v] 或 argmax_h p(h,v) 是 v 的良好特征映射。

16.6 推断与近似推断(Inference and Approximate Inference)

概率模型的主要用途之一是询问变量彼此如何相关。给定一组医学检查,可以问病人可能患什么病。在潜变量模型中,可能希望提取描述观测变量 v 的特征 E[h|v]。有时为完成其他任务需要解决这些问题。模型通常按最大似然原则训练,因为 (16.9) log p(v) = E_{h∼p(h|v)}[log p(h,v) - log p(h|v)],常常需要计算 p(h|v) 才能实现学习规则。这些都是推断问题的例子——在给定其他变量的情况下预测某些变量的取值,或预测给定其他变量取值时某些变量的概率分布。

不幸的是,对大多数有趣的深度模型,即使采用结构化图模型来简化,这些推断问题仍是难处理的。图结构让我们能以合理数量的参数表示复杂的高维分布,但深度学习所用图通常不足以严格到也能允许高效推断。直接可见的是,计算一般图模型的边际概率是 #P 难的。复杂性类 #P 是复杂性类 NP 的推广:NP 中的问题只需判定一个问题是否有解,并在有解时给出一个解;#P 中的问题需要计数解的个数。构造最坏情况的图模型:想象在 3-SAT 问题的二元变量上定义一个图模型,对这些变量施加均匀分布,再为每个子句添加一个二元潜变量表示该子句是否被满足,再添加另一个潜变量表示是否所有子句都满足。这可以通过构造一棵潜变量的归约树来实现,树中每个节点报告两个其他变量是否满足,叶子为各子句的变量,根报告整个问题是否满足。由于对文字施加均匀分布,归约树根节点的边际分布就规定了有多少比例的赋值满足问题。虽然这是一个人为构造的最坏例子,但 NP 难图在现实场景中经常出现。

这促使我们使用近似推断。在深度学习的语境下,这通常指变分推断(variational inference)——通过寻找一个尽可能接近真实分布 p(h|v) 的近似分布 q(h|v) 来近似 p(h|v)。这一技术和其他技术在第 19 章详细讨论。

16.7 深度学习处理结构化概率模型的方法(The Deep Learning Approach to Structured Probabilistic Models)

深度学习从业者通常使用与其他处理结构化概率模型的机器学习从业者相同的基本计算工具。但在深度学习的语境下,对如何组合这些工具通常会做出不同的设计决策,从而得到的整体算法和模型与更传统的图模型味道大不相同。

深度学习并不总涉及特别深的图模型。在图模型的语境下,可以按图模型图(而非计算图)定义模型的深度。把潜变量 h_i 的深度定义为从 h_i 到一个观测变量的最短路径长度 j。模型的深度通常取所有这些 h_i 深度的最大值。这种深度与由计算图产生的深度不同。许多用于深度学习的生成模型没有潜变量或只有一层潜变量,但用深的计算图来定义模型中的条件分布。

深度学习本质上始终利用分布式表示的思想。即便是用于深度学习目的的浅层模型(例如先预训练、再组合成深模型的浅模型),也几乎总是有单一的、大型的潜变量层。深度学习模型的潜变量通常多于观测变量。变量间的复杂非线性交互通过流经多个潜变量的间接连接实现。

相比之下,传统图模型通常主要包含至少偶尔被观测到的变量,即使许多变量在某些训练样本中随机缺失。传统模型主要使用高阶项和结构学习来捕捉变量间复杂的非线性交互;如果有潜变量,数目通常也较少。

潜变量的设计方式在深度学习中也有所不同。深度学习从业者通常并不打算预先为潜变量赋予任何特定语义——训练算法可以自由地发明建模特定数据集所需的概念。潜变量训练完后通常也不容易被人直接解读,但可视化技术或可对其所代表的内容做粗略刻画。在传统图模型的语境下使用潜变量时,通常会预先赋予它们某种特定语义(文档的主题、学生的智力、引起病人症状的疾病等)。这些模型通常更易于被人类从业者解释,也常有更多的理论保证,但在扩展到复杂问题方面能力较弱,且不像深度模型那样可在多种不同场景中复用。

另一个明显差异是深度学习方法中通常使用的连接方式。深度图模型通常有大量单元组,每组都与其他单元组连接,因此两组之间的交互可以用一个矩阵描述。传统图模型连接极少,每变量的连接选择都可能是单独设计的。模型结构的设计与推断算法的选择紧密耦合。传统图模型方法通常追求保持精确推断的可处理性;当这一约束过于严苛时,一种流行的近似推断算法称为循环信念传播(loopy belief propagation)。这两种方法通常在非常稀疏连接的图上效果较好。相比之下,深度学习所用模型倾向于把每个可见单元 v_i 连接到非常多的隐藏单元 h_j,以便 h 能为 v_i 提供分布式表示(也可能为其他几个观测变量提供)。分布式表示有许多优点,但从图模型和计算复杂性的观点看,分布式表示的缺点是:通常产出的图不够稀疏,使得精确推断和循环信念传播等传统技术不再适用。因此,大图模型社群与深度图模型社群之间最显著的差异之一就是:循环信念传播在深度学习中几乎从不被采用;多数深度模型被设计成让吉布斯采样或变分推断算法高效运行。另一个考虑是:深度学习模型含极大量潜变量,使高效数值代码成为必需。除了高层推断算法的选择之外,这还提供了把单元分层、用矩阵描述两层交互的额外动机——这允许算法的各步骤用高效的矩阵乘积运算(或稀疏化的推广,如块对角矩阵乘积或卷积)实现。

最后,深度学习的图建模方法还有一个特征:对未知的明显容忍。不是把模型简化到所有我们想要的量都能精确计算,而是把模型的容量增加到刚好可以训练或使用的程度。经常会使用边际分布无法计算的模型,并满足于从这些模型中近似采样;经常会用不可在合理时间内近似的难处理目标函数训练模型,但只要能高效获得该函数梯度的估计,仍然能近似地训练模型。深度学习的方法往往是先弄清我们绝对需要的最小信息量是什么,然后再去想如何尽快获得该信息的合理近似。

16.7.1 示例:受限玻尔兹曼机(Example: The Restricted Boltzmann Machine)

受限玻尔兹曼机(RBM,Smolensky, 1986)或称和谐机(harmonium),是图模型在深度学习中如何使用的经典示例。RBM 本身不是一个深度模型,它只有一层潜变量,可用于学习输入的表示。第 20 章将看到 RBM 如何用于构建许多更深的模型。本节展示 RBM 如何体现多种深度图模型中广泛使用的实践:单元组织成称为层的大型组,层间连接由矩阵描述,连接相对密集,模型被设计为允许高效吉布斯采样,模型设计的重点是让训练算法自由学习设计者未指定语义的潜变量。20.2 节会再详细讨论 RBM。

规范形式的 RBM 是一个具有二元可见与隐藏单元的基于能量的模型。其能量函数为 (16.10) E(v,h) = -bᵀv - cᵀh - vᵀW h,其中 b、c、W 是无约束的、实值的、可学习参数。可见模型被分成两组单元 v 和 h,它们之间的交互由矩阵 W 描述。模型如图 16.14 所示。该图明确体现:任意两个可见单元之间、任意两个隐藏单元之间都没有直接交互(这正是"受限"之意——一般的玻尔兹曼机可以有任意连接)。

RBM 结构的限制带来两个漂亮性质:(16.11) p(h|v) = ∏i p(h_i|v) 与 (16.12) p(v|h) = ∏_i p(v_i|h)。单个条件也容易计算。对二元 RBM 有:(16.13) P(h_i=1|v) = σ(vᵀW + b_i)。这些性质一起支持高效的块吉布斯采样(block Gibbs sampling)——交替地同时采样所有 h 与同时采样所有 v。由吉布斯采样从 RBM 生成的样本如图 16.15 所示。} + b_i) 与 (16.14) P(h_i=0|v) = 1 - σ(vᵀW_{:,i

由于能量函数本身是参数的线性函数,求导很容易。例如 (16.15) ∂E(v,h)/∂W_{i,j} = -v_i h_j。高效吉布斯采样与高效求导这两个性质使训练变得方便。第 18 章将看到无向模型可通过把这些求导作用于从模型中采得的样本来训练。训练该模型会诱导出数据 v 的一种表示 h,常常可以用 E_{h∼p(h|v)}[h] 作为描述 v 的特征集。

总的来说,RBM 展示了深度学习处理图模型的典型方式:通过潜变量层实现表示学习,结合以矩阵参数化的层间高效交互。图模型语言为描述概率模型提供了一种优雅、灵活、清晰的语言。在接下来的章节中将使用这种语言,结合其他视角,描述多种深度概率模型。

本章个人批注

本章是 Part III 的开篇,目的不是提出新算法,而是把结构化概率模型(graphical models)的语言重新整理一遍,为后续 17–20 章(Monte Carlo、Partition Function、Approximate Inference、Deep Generative Models)打底,所以读起来更接近综述而非新论。几个值得记下的要点:

第一,"图模型"这个名字容易让人误以为它是一种独立的方法论,但本章反复强调图模型本质是一种语言——它编码的只是"哪些变量条件独立"这一种简化假设。书中反复举例(接力赛、感冒传染、含 β 的单变量、x∈Rⁿ vs {0,1}ⁿ vs one-hot)就是为了把这一点钉死:图结构以外,你仍然要单独设计条件分布/团势/φ 函数的具体形式。Fig. 16.5 的"per-clique energy"和 Hinton 1999 product of experts 的引用,进一步说明 EBM 本身只是 MRF 的一种实现方式,不引入新的独立关系。

第二,有向与无向模型在表达力上不对等。immorality 是有向模型能、无向模型不能完美表达的子结构;长度 ≥ 4 且无弦的环则是有向模型不能完美表达的子结构。这两条定理共同界定了两种语言的"能力边界",也是 16.2.6 节道德化、三角化转换的理论动机。实际中(即便是当代深度生成模型)也很少有论文真正用这两条定理去推结构,但知道"为什么可以无损转换、什么时候转换必然丢独立"对看懂后面 20 章 VAE/EBM/Score-based 等模型的混合架构很有帮助。

第三,配分函数 Z 的存在性是一个常被忽视的细节。书中给了 φ(x)=x² 发散、φ(x;β)=exp(-βx²) 仅当 β>0 时合法的两个例子;以及 x∈Rⁿ、{0,1}ⁿ、one-hot 三种定义域下同一组 φ^{(i)}(x_i)=exp(b_i x_i) 给出完全不同分布(发散 / sigmoid 独立 / softmax)的反例。这些例子都指向同一个工程教训:在写 EBM 之前必须先想清楚变量的定义域;后面 18 章专门讲 confront partition function,本节相当于预告。

第四,d-separation 的 V-结构(explaining away)是本章对"为何有向图有时不能简单地当无向图看"的最强论据。在 V-结构 a → s ← b 中,s 未观测时 a⊥b,s 一旦观测(或观测其后代)a 与 b 就变得依赖。这个方向不对称性无法用无向图直接表达,必须靠道德化把 a-b 之间补上一条边,而这又会丢失原有的 a⊥b(Fig. 16.11 center)。这一段是后面学习 latent variable 模型、特别是 EM 与 VEM 推导的基础。

第五,16.7 节是本章真正的"主线"——它把前面六节铺好的图模型语言,投影到深度学习的实践风格上。值得记的几条对照:DL 模型靠"层(layer)+ 矩阵(matrix)"而不是稀疏手工连接来组织(这是为何 DL 中几乎不出现 loopy belief propagation);DL 容忍难处理的推断与训练目标,倾向于"先扩大模型容量到刚好可训练,再找最快获得梯度近似的方法",而不是"先把模型简化到所有量都精确可算";DL 的潜变量不预定义语义,是训练算法自己涌现出来的概念。这些对照解释了为什么后续 RBM、VAE、normalizing flows、diffusion 等模型的形式看上去与传统图模型如此不同。

第六,RBM 的简洁性值得反复琢磨。能量函数 (16.10) 只有一个偏置项和一个矩阵项,没有隐藏-隐藏、可见-可见的项,正是这种"受限"结构带来 block Gibbs 的可分解条件 (16.11)–(16.12),并使 ∂E/∂W_{i,j}=-v_i h_j 这种只有一项的梯度成立。这三件事(受限结构、可分解条件、单项梯度)加在一起,构成了 RBM 在 2006–2012 年成为深度学习复兴关键工具的全部原因——也预先解释了为什么深度堆叠 RBM(即 Deep Boltzmann Machine, DBM)会重新引入隐藏-隐藏项,从而使采样与推断都要复杂一个量级(这正是 20 章要展开的内容)。

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

本章是 Part III 的导论。Part II(深度网络的现代实践,第 6–12 章)几乎不需要图模型语言,但 Part III 的所有研究主题——高效的近似推断、难处理的配分函数、Monte Carlo 采样、深度生成模型——都需要一种清晰的语言来描述"哪些变量在什么时候、以什么方式依赖"。结构化概率模型(graphical models)正是这本书选定的语言。书中在 3.14 节已经给过一次简短的图模型介绍,但那是为了 Part II 中部分算法的描述;本章则是一次完整、自包含的综述,特别强调深度学习社群与传统图模型社群在模型结构、推断算法选择、潜变量语义三方面的不同偏好。紧接着的 17 章(Monte Carlo Methods)讨论从难处理分布采样的基础工具,是 16.3 节祖先采样与吉布斯采样的深入;18 章(Confronting the Partition Function)专门处理 Z 不可计算时的训练与估计问题;19 章(Approximate Inference)展开 16.6 节末尾提到的变分推断;20 章(Deep Generative Models)则把所有这些工具汇到一起,用 16.7 节铺好的"deep learning 风格的图模型"语言描述 RBM、DBN、VAE、GAN 等具体模型。读本章时应把重心放在"语言"本身——定义、分离/分离定理、配分函数的存在性、d-separation——而不是任何具体算法,因为这些概念会在接下来四章中反复以不同形式出现。