👍 变分自编码器权威综述
【摘 要】 变分自编码器为学习深度隐变量模型和相应的推断模型提供了一个原理框架。在本文工作中,我们介绍了变分自编码器和一些重要的扩展。
【原 文】 Diederik P. Kingma and Max Welling (2019), “An Introduction to Variational Autoencoders”, Foundations and Trends® in Machine Learning: Vol. 12: No. 4, pp 307-392. http://dx.doi.org/10.1561/2200000056
1 概述
1.1 动机
(1)生成式建模与判别式建模
机器学习的一个主要部分是生成与判别式建模。判别式建模的目标是在给定观测的情况下学习如何预测变量,而生成式建模的目标是解决更普遍的问题,即学习所有变量的联合分布。
生成式模型模拟数据在现实世界中的生成方式。几乎每门科学都将 “建模” 理解为:作出理论假设,然后通过观测来检验这些理论以揭示这一生成过程。例如,当气象学家模拟天气时,他们使用高度复杂的偏微分式来表达天气的基本物理特性。或者当天文学家模拟星系的形成时,在其运动式中编码了恒星体相互作用的物理定律。生物学家、化学家、经济学家等也是如此。从这个角度来看,科学建模实际上几乎总是生成式建模。
生成式建模具有吸引力的原因有很多:
- 首先,我们可以在生成过程中表达物理规律和约束,而那些我们不关心的细节则被视为噪声。
- 其次,生成式模型通常非常直观并且可解释,根据观测来对模型做检验,可以帮助我们接受或拒绝作出的理论假设。
- 再次,生成式建模可以很自然地表达因果关系。因果关系有一个很大的优势:因果关系比相关关系更能泛化到新情况。例如,一旦我们了解了地震的生成过程,就可以在地震多发地使用该模型。
要将生成式模型转换为判别式模型,需要用到贝叶斯规则: 例如,有一个 $A$ 型地震生成式模型和另一个 $B$ 型地震生成式模型,通过查看两者中哪一个更能描述数据,我们可以计算出发生 $A$ 型地震或 $B$ 型地震的概率。不过,应用贝叶斯规则的计算代价较高。
在判别式建模中,我们直接学习与预测方向一致的映射。这与生成式建模的方向相反。以图像分类来举例来理解:
- 生成式建模方法:首先识别对象标签,然后生成 3D 对象,最后将其投影到像素网格上生成了一幅图像。
- 判别式建模方法:直接将像素值作为输入,并将其映射到标签。
这里需要注意的是:虽然生成式模型可以有效地从数据中学习,但也会倾向于对数据生成过程做出比判别式模型更强的假设。因此,当模型错误时,通常会导致更高的渐近偏差 (Banerjee, 2007)。正是出于这个原因,在实践工作中,如果一个模型是错误的(在某种程度上不存在绝对正确的模型!),而一个人又只对判别式目标感兴趣,并且具有足够多的训练数据,那么纯粹的判别式模型通常在判别式任务中的错误更少。
不过,根据周围有多少数据,研究数据生成过程可能对判别式模型(例如分类器)训练有一定好处。例如,一个人可能只有少量的有标记样本和更多的未标记样本。在这种半监督学习环境中,可以使用数据生成式模型来改进分类(Kingma 等,2014;Sønderby 等,2016a)。
生成式建模可以非常有用,我们可以将其视为一项重要的辅助任务。例如,帮助我们构建对世界的有用抽象(预测不久的将来),并将其用于下游的多种预测任务。这种对数据变化解耦、语义明确、统计独立和因果因子的探求,通常被称为 无监督表示学习,而变分自编码器 (Variational AutoEncoder,VAE) 已成为其中一种被广泛应用的方法。 或者,人们可以将生成式建模视为正则化(注解:正则化可以被视为一种在参数空间中的塑形操作)的一种隐式形式:通过强制要求学得的表示对数据生成有意义,我们可以令该过程的逆过程(从输入映射到表示)偏向于特定模型。预测世界的辅助任务有助于更好地理解抽象层面的世界,从而更好地进行下游预测。
(2)变分自编码器
变分自编码器可以被视为两个耦合但又独立参数化的模型: 识别模型( 或编码器)和 生成模型(或解码器)。两个模型之间相互支持:
- 识别模型向生成模型提供对隐变量后验分布的近似估计,它需要在 “期望最大化” 的学习迭代中更新参数。
- 生成模型为识别模型学习数据的有意义表示,包括可能的类标签。
- 根据贝叶斯规则,识别模型是生成模型的近似逆。
相对于普通的变分推断 (VI)而言,变分自编码器框架的一个优点是采用了摊销变分推断方法得到隐变量的后验,即 推断模型(或称为识别模型、编码器)表现为输入变量的函数。
- 优势:如果变分推断中的每个数据样本都对应一个单独的隐变量,则对于大型数据集来说其推断效率极低。变分自编码器的推断模型使用一组参数来模拟输入变量和隐变量之间的关系,因此被称为 “摊销推断”。这种推断模型可以是任意复杂的,但相当快,因为它可以使用从输入到隐变量的一个前馈神经网络来实现。
- 问题:变分自编码器会带来一定新问题:生成模型(即解码器)所需的采样过程,会在训练时给梯度估计引入采样的噪声。
- 特色:变分自编码器框架的最大贡献可能正在于:它使用了一种 “重参数化技巧” 来消去了噪声方差,从而形成了一种新的梯度计算方法,该方法可以显著降低梯度中的方差。
变分自编码器的灵感来自 Helmholtz 机
(Dayan 等,1995),这可能是第一个采用识别模型的模型。但其唤醒睡眠(Wake-Sleep)算法效率很低,并且唤醒和睡眠过程分别优化不同的目标。与之不同,变分自编码器的学习规则遵循单一的近似最大似然目标。
变分自编码器结合了概率图模型和深度学习。在其中:
- 生成模型(解码器) 是形式为 $p(\mathbf{x,z}) = p(\mathbf{x} \mid \mathbf{z}) p(\mathbf{z})$ 的贝叶斯网络(注意:指有向概率图),也可以是一个存在层次结构的贝叶斯网络,如 $p(\mathbf{x} \mid \mathbf{z}L)p(\mathbf{z}{L} \mid \mathbf{z}_{L-1}),\ldots,p(\mathbf{z}_1 \mid \mathbf{z}_0)$。
- 识别模型(编码器) 是一个形式为 $q(\mathbf{z} \mid \mathbf{x})$ 的条件贝叶斯网络,或是一个存在层次结构的条件贝叶斯网络,如 $q(\mathbf{z}_0 | \mathbf{z}1) \ldots q(\mathbf{z}{L}|X)$。
- 在每一个条件分布内部都可能蕴含着一个复杂的(深度)神经网络,例如条件 $\mathbf{z} \mid \mathbf{x} \sim f (\mathbf{x},\boldsymbol{\epsilon})$ ,这里的 $f$ 可以是一个神经网络映射,而 $\boldsymbol{\epsilon}$ 为噪声随机变量。
- 传统概率图模型中,隐变量 $\mathbf{z}$ 的经典推断算法是期望最大化(Expection Maximium)方法,而变分自编码器通过重参数化技巧,能够实现所嵌入深度神经网络的反向传播。
(3)新发展
自变分自编码器框架出现以来,已扩展到了多个方向。例如动态模型 (Johnson et al., 2016)、注意力模型 (Gregor et al., 2015)、具有多层随机隐变量的模型 (Kingma et al., 2016) 等,表明它是一种构建新模型的良好框架。
最近,另一种生成式建模范式获得了极大关注:生成对抗网络 (GAN) (Goodfellow et al., 2014)。 变分自编码器和生成对抗网络似乎具有互补的特性:
- 生成对抗网络:虽然可以生成具有高主观感知质量的图像,但它并非基于似然的生成式模型,往往缺乏对数据的完全支持(Grover 等,2018)。
- 变分自编码器:与其他基于似然的模型一样,会生成更分散的样本(即样本生成的主观感知质量相对较差),但根据似然准则是更好的概率分布模型。
因此,已经提出了许多混合模型试图实现两全其美(Dumoulin 等,2017;Grover 等,2018;Rosca 等,2018)。
作为一个社区,大家似乎已经接受了一个事实: 生成式模型和无监督学习在构建智能机器方面发挥着重要作用,而我们则希望变分自编码器能为此提供有用的支持。
1.2 目的
变分自编码器 (Variational Autoencoder, VAE) 框架提供了一种使用随机梯度下降来同时学习 “深度隐变量模型(Deep Latent-Variable Models, DLVM)” 及其 “推断模型” 的原则性方法(Kingma 和 Welling,2014;Rezende 等,2014)。该框架在生成式建模、半监督学习、表示学习等方面具有广泛应用。
本文工作是我们早期工作(Kingma 和 Welling,2014 年)的扩展版本,更详细地解释了变分自编码器领域,并讨论一系列重要的后续进展。不过,本文并非旨在对所有相关工作进行全面综述。此外,我们假设读者具有代数、微积分和概率论的基础知识。
在 第 1 章
中,我们重点讨论背景知识,如:概率模型、有向概率图模型、有向概率图模型与神经网络结合、完全可观测模型、深度隐变量模型 (DLVM) 等;在 第 2 章
中,我们将重点解释变分自编码器的基本原理和知识;在 第 3 章
中,我们将解释一些高级的推断方法,以使隐变量的后验分布更具表达力;在 第 4 章
中将解释其他的高级生成式模型。
1.3 概率模型和变分推断
在机器学习领域,我们经常对从数据中学习各种自然和人工现象的概率模型感兴趣。概率模型是对此类现象的数学描述,对于理解此类现象、预测未来的未知数、辅助决策等非常有用。因此,概率模型提供了一种将知识和技能概念进行形式化的手段,是机器学习和人工智能领域的核心构件。
1.3.1 生成建模
由于概率模型包含未知变量,而且数据很少能够描绘出未知变量的完整图景,因此通常需要假设模型的各方面存在某种程度的不确定性。这种不确定性的程度和性质,在数学上可以用概率分布来说明。概率模型中可能包含 连续型随机变量
和 离散型随机变量
。在某种意义上,最完整形式的概率模型,应当能够以模型中随机变量的联合概率分布形式,来说明所有随机变量之间的相关性和高阶依赖性。
令 $\mathbf{x}$ 表示我们想要建模的、由所有可观测变量构成的集合向量。为了符号的简单性和避免混乱,我们使用小写粗体(如 $\mathbf{x}$)来表示可观测随机变量的集合,即通过扁平化( flatten )和连接( concatenate ),将可观测变量集合表示为单个向量的形式。
假设可观测变量集合 $\mathbf{x}$ 是来自于某个未知的隐生成过程的随机样本,其真实(概率)分布 $p^*(\mathbf{x})$ 未知,我们希望能够选择一个被 $\boldsymbol{\theta}$ 参数化的模型 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 来近似该真实分布:
$$
\boldsymbol{x} \sim p_{\boldsymbol{\theta}}(\mathbf{x}) \tag{1.1}
$$
其中, $\boldsymbol{\theta}$ 是参数,而术语 学习 正是指搜索最优参数值的过程,使得模型给出的概率分布 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 能够近似真实分布 $p^*(\mathbf{x})$,并且对于所有已经观测到的 $\mathbf{x}$,有:
$$
p_{\boldsymbol{\theta}}(\mathbf{x}) \approx p^*(\mathbf{x}) \tag{1.2}
$$
我们希望 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 能够拟合数据并且足够灵活,以使模型足够准确。有时,我们也希望能够将有关数据分布的先验知识纳入模型中。
1.3.2 条件建模
有时,我们可能对学习单独的无条件分布 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 自身并不感兴趣,而只关心条件分布 $p^*(\mathbf{y} \mid \mathbf{x})$ (例如预测任务根据 $\mathbf{x}$ 预测 $\mathbf{y}$ )。也就是说,希望通过数据学习真实条件分布的近似分布 $p_{\boldsymbol{\theta}}(\mathbf{y}|\mathbf{x})$。在这种情况下,$\mathbf{x}$ 通常称为模型输入。与无条件模型类似,近似模型 $p_{\boldsymbol{\theta}}(\mathbf{y} \mid \mathbf{x})$ 的选择,也可以通过优化参数 $\boldsymbol{\theta}$ 使其更接近真实条件分布来实现的。即对于任何 $\mathbf{x}$ 和 $\mathbf{y}$,有:
$$
p_{\boldsymbol{\theta}}(\mathbf{y} \mid \mathbf{x}) \approx p^*(\mathbf{y} \mid \mathbf{x}) \tag{1.3}
$$
条件建模的一个常见示例是图像分类任务,其中 $\mathbf{x}$ 是图像,$\mathbf{y}$ 是由人类标记的图像类别。在此场景中,$p_{\boldsymbol{\theta}}(\mathbf{y} \mid \mathbf{x})$ 通常被选择为一个类别分布,而该类别分布的参数是根据 $\mathbf{x}$ 计算的。
当被预测的变量非常高维时(例如预测输出是一幅图像、一段视频或一个声音片段),条件建模会变得非常难于学习。例如:根据已知的类别标签预测一幅图像,这是图像分类任务的反任务。当然,也有输入和输出均是高维的情况,例如,根据文本预测图像(以文绘图),或根据图像预测文本(看图说话)。
1.3.3 说明
为了避免符号混乱,在本文中会默无条件建模,但应该始终牢记,相关方法几乎在所有情况下都适用于条件建模,只是在条件建模中。其中唯一的区别在于,数据的一部分(概率模型所依赖的条件部分)可以被视为模型输入。条件建模和非条件建模之间的相似之处还有模型参数,数据和模型参数之间的明显区别在于:数据通常作为已知值,不需要进行优化求解。
1.4 用神经网络参数化条件分布
可微分前馈神经网络(简称为神经网络)是一种特别灵活、计算可扩展的万能函数逼近器。含多个 “隐藏” 人工神经元层的神经网络的学习,通常被称为深度学习(Goodfellow 等,2016;LeCun 等,2015)。
神经网络在概率模型中有一个特别有趣的应用: **将神经网络用于模拟概率分布函数 (PDF) 或概率质量函数 (PMF)**。基于神经网络的概率模型在计算上具有可扩展性,因为神经网络允许基于随机梯度的优化,并且允许扩展到大型模型和数据集。
我们可以将深度神经网络表示为一个向量函数:NeuralNet(.)
。
在撰写本文时,深度学习已被证明可以很好地解决各种分类问题和回归问题 (LeCun et al., 2015; Goodfellow et al., 2016) 。例如,在基于神经网络的图像分类( LeCun 等,1998 )中,神经网络以图像 $\mathbf{x}$ 为条件,在类标签 $y$ 上参数化了一个类别分布 $p_{\boldsymbol{\theta}}(y \mid \mathbf{x})$。
$$
\mathbf{p} =\text{NeuralNet}(\mathbf{x}) \tag{1.4}
$$
$$
p_{\boldsymbol{\theta}}(y \mid \mathbf{x}) = \text{Categorical}(y; \mathbf{p}) \tag{1.5}
$$
其中 $\text{NeuralNet}(.)$ 的最后一个运算通常是一个 softmax()
函数,使得 $\sum_i p_i = 1$。
1.5 有向概率图模型与神经网络的关系
两者的关系其实很简单: “有向概率图中任意随机变量之间的条件分布,都可以通过神经网络来建模和学习!”
(1)有向图中联合分布的表示
我们使用有向概率图模型,也称为有向图模型或贝叶斯网络。有向图模型是一种概率模型,其中所有变量都以拓扑方式被组织成有向无环图。此类模型中变量的联合分布可以被分解为先验分布和条件分布的乘积:
$$
p_{\boldsymbol{\theta}}(\mathbf{x}1, …, \mathbf{x}M ) = \prod^{M}{j=1} p{\boldsymbol{\theta}}(\mathbf{x}_j | \text{Pa}(x_j)) \tag{1.6}
$$
其中 $\text{Pa}(\mathbf{x}_j)$ 是有向图中节点 $j$ 的父变量集合。对于根节点,其父节点集合为空集,因此取其无条件分布;对于非根节点,则以其父节点为条件。
(2)神经网络可用于对条件分布的建模
传统上,每个条件概率分布 $p_{\boldsymbol{\theta}}(\mathbf{x}_j \mid \text{Pa}(\mathbf{x}_j))$ 可以被参数化为查找表或某种概率函数(Koller 和 Friedman,2009)。而神经网络恰恰是一种可用于参数化复杂函数的灵活方法,非常适合于对条件分布建模。此时,可以将有向图中某个随机变量 $\mathbf{x}$ 的父项 $\text{Pa}(\mathbf{x})$ 视为神经网络的输入,并生成该变量的分布参数 $\boldsymbol{\eta}$:
$$
\begin{align*}
\boldsymbol{\eta} &=\text{NeuralNet}(\text{Pa}(\mathbf{x})) \tag{1.7} \
p_{\boldsymbol{\theta}}(\mathbf{x}|\text{Pa}(\mathbf{x})) &= p_{\boldsymbol{\theta}}(\mathbf{x};\boldsymbol{\eta}) \tag{1.8}
\end{align*}
$$
如果所有变量都是可观测的并且包含在数据中,则通常被称为 完全可观测模型
(即模型中不存在隐变量)。当数据集规模足够大的情况下,可以利用神经网络来直接学习此类模型的参数。
1.6 完全可观测模型
如果有向图模型中的所有随机变量都可以在数据中被观测到,那么我们可以直接利用神经网络对随机变量之间的条件分布建模,并以最大(对数)似然为目标函数,通过前向计算和反向传播实现相对直接的优化。
1.6.1 数据集
我们经常收集由 $N ≥ 1$ 个数据点构成的数据集 $\mathcal{D}$:
$$
\mathcal{D} { \mathbf{x}^{(1)}, \mathbf{x}^{(2)},\ldots, \mathbf{x}^{(N)} } \equiv { \mathbf{x}^{(i)} }^N_{i=1} \equiv \mathbf{x}^{(1:N)} \tag{1.9}
$$
假设每个数据点都是来自同一底层分布的独立样本。换句话说,假设数据集由来自同一(不变)系统的不同的、独立的测量值组成。此时的观测数据集 $\mathcal{D} { x^{(i)} }^N_{i=1}$ 被称为 i.i.d.,即独立同分布。根据 i.i.d. 假设,在给定参数时,所有数据点的概率可以被分解为单个数据点概率的乘积。因此,模型赋予数据的 对数概率
可以由求和式给出:
$$
\log p_{\boldsymbol{\theta}}\mathcal{D} = \sum_{\mathbf{x}\in \mathcal{D}} \log p_{\boldsymbol{\theta}}(\mathbf{x}) \tag{1.10}
$$
1.6.2 最大似然和随机梯度
概率模型最常用的目标函数是 最大(对数)似然。 最大(对数)似然目标等同于最小化数据真实分布 $p(\mathcal{D})$ 和模型分布 $p_{\boldsymbol{\theta}}(\mathcal{D})$ 之间的 $\mathbb{KL}$ 散度(详见 第 2.7 节
的讨论)。在最大似然准则下,我们试图找到能够使模型赋予数据的概率之和最大化的参数 $\boldsymbol{\theta}$,如果 i.i.d. 数据集 $\mathcal{D}$ 的大小为 $N_{\mathcal{D}}$,则最大似然目标是最大化 式(1.10)
给出的对数概率。
使用微分链式法则和自动微分工具,我们可以有效地计算上述目标的梯度(即目标相对于模型参数 $\boldsymbol{\theta}$ 的一阶导数)。我们可以使用此梯度迭代地更新模型参数的值,以达到最大似然目标的局部最优值。当使用所有数据点来计此梯度 $\nabla_{\boldsymbol{\theta}} \log p_{\boldsymbol{\theta}}(\mathcal{D})$ 时,被称为 批量梯度下降(Batch Gradients Descent, BGD)
。批量梯度下降算法的梯度计算需要所有数据点参与,对于非常大的 $N_{\mathcal{D}}$ 来说,每一次迭代都这种计算代价高昂,其复杂度与 $N_{\mathcal{D}}$ 呈线性关系。 因此,在神经网络中更常用另外一种有效的优化方法: 随机梯度下降 (Stochastic Gradient Descent, SGD)
。该方法使用随机抽取的、大小为 $N_{\mathcal{M}}$ ( $\mathcal{M} \subset \mathcal{D}$ )的小批量数据计算梯度,其结果可以作为最大似然准则的无偏估计。
下式描述了新旧目标之间的无偏性,其中符号 $\simeq$ 表示无偏估计。该符号右侧往往是受某些噪声源影响的随机变量,其任意一次确定值可能都不等于左侧,但当对其关于含噪声分布求平均后,等号成立。
$$
\frac{1}{N_{\mathcal{D}}} \log p_{\boldsymbol{\theta}}(\mathcal{D}) \simeq \frac{1}{N_\mathcal{M}} \log p_{\boldsymbol{\theta}}(\mathcal{M}) = \frac{1}{N_\mathcal{M}} \sum_{\mathbf{x} \in \mathcal{M}} \log p_{\boldsymbol{\theta}}(\mathbf{x}) \tag{1.11}$$
对于随机梯度下降而言,噪声源来自随机抽取的小批量数据 $\mathcal{M}$。上式右侧的无偏估计量 $\log p_{\boldsymbol{\theta}}(\mathcal{M})$ 可微,同样可得到批量随机梯度的无偏估计:
$$
\frac{1}{N_{\mathcal{D}}} \nabla_{\boldsymbol{\theta}} \log p_{\boldsymbol{\theta}}(\mathcal{D}) \simeq \frac{1}{N_{\mathcal{M}}} \nabla_{\boldsymbol{\theta}} \log p_{\boldsymbol{\theta}} (\mathcal{M}) = \frac{1}{N_{\mathcal{M}}} \sum_{\mathbf{x} \in \mathcal{M}} \nabla_{\boldsymbol{\theta}} \log p_{\boldsymbol{\theta}}(\mathbf{x}) \tag{1.12}
$$
上述梯度的无偏估计可以直接插入到随机梯度优化器中,实现目标的随机优化。简而言之,我们可以通过在随机梯度方向上迭代的小步骤变化来实现目标函数的整体优化。
1.6.3 贝叶斯推断
从贝叶斯视角来看,还可以通过最大后验估计来改进最大似然估计,或者更严格一点,对参数的完整后验分布做出推断。
1.7 隐变量模型
1.7.1 隐变量
我们可以将前一节中讨论的完全可观测有向图模型扩展到具有隐变量的有向概率图模型。
隐变量是模型的一部分,但无法被观测到,因此隐变量并不是数据集的组成部分。在统计学的符号表示中,常用 $\mathbf{z}$ 来表示隐变量。在对可观测变量 $\mathbf{x}$ 进行无条件建模时,可以用有向图模型表示可观测变量 $\mathbf{x}$ 和隐变量 $\mathbf{z}$ 的联合分布 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$,然后通过对 $\mathbf{z}$ 的边缘化,获得可观测变量 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 的边缘分布:
$$
p_{\boldsymbol{\theta}}(\mathbf{x}) = \int p_{\boldsymbol{\theta}}(\mathbf{x,z}) d \mathbf{z} \tag{1.13}
$$
上式也被称为 边缘似然
或 模型证据
,是参数 $\boldsymbol{\theta}$ 的函数。
引入这种隐式分布,可以使 $\mathbf{x}$ 的构造非常灵活,且具有可解释性,典型的应用案例如:
- 高斯混合模型 : 如果 $\mathbf{z}$ 是离散的,且 $p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z})$ 服从高斯分布,则 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 是混合高斯分布。
- 复合概率模型 :如果 $\mathbf{z}$ 是连续的, $p_{\boldsymbol{\theta}}(\mathbf{x})$ 可以被视为无限混合模型,理论上比离散混合模型更强大。
1.7.2 深度隐变量模型
我们使用术语 深度隐变量模型 (DLVM)
来表示由神经网络参数化的隐变量模型 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$。类似于前面关于条件建模的讨论,深度隐变量模型也可以是以某些上下文为条件的条件模型,例如 $p_{\boldsymbol{\theta}}(\mathbf{x,z} \mid \mathbf{y})$。为方便讨论核心问题,在此我们重点讨论非条件模型,但相关方法同样适用于条件模型。
深度隐变量模型的一个重要优势是: 即便有向模型中的每个因子(先验或条件分布,前者对应于概率图中没有指入边的结点,后者则指概率图中有向边表示的条件分布)都相对简单(例如高斯),最终得到的边缘分布 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 也可以因为深度神经网络而变得非常具有表达力。深度隐变量模型几乎具有表达任意复杂依赖性的能力。对于某些场景下的复杂数据分布 $p^*(\mathbf{x})$ 而言,这种能力极具吸引力。
最简单、最常见的深度隐变量模型是具有如下因子分解结构的概率模型,对应于 $\mathbf{x,z}$ 两个结点和由 $\mathbf{z}$ 指向 $\mathbf{x}$ 的一条有向边:
$$
p_{\boldsymbol{\theta}}(\mathbf{x,z}) = p_{\boldsymbol{\theta}}(\mathbf{z})p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}) \tag{1.14}
$$
其中 $p_{\boldsymbol{\theta}}(\mathbf{z})$ 和/或 $p_{\boldsymbol{\theta}} (\mathbf{x} \mid \mathbf{z})$ 的参数化形式由模型指定。其中隐变量的分布 $p(\mathbf{z})$ 被称为 $\mathbf{z}$ 上的先验分布,它不以任何观测为条件,并且通常被建模为简单分布(如高斯分布、指数族分布等)。
1.7.3 深度隐变量模型示例
包含球形高斯隐变量的可分解伯努利观测模型是一个比较简单的深度隐变量模型,其在 (Kingma and Welling, 2014) 中被用于二值型的可观测变量 $\mathbf{x}$ 进行建模。该模型的生成过程如下:
$$
\begin{align*}
p(\mathbf{z}) &= \mathcal{N} (\mathbf{z}; 0, I) \tag{1.15}\
\mathbf{p} &= \text{DecoderNeuralNet}{\boldsymbol{\theta}}(\mathbf{z}) \tag{1.16} \
\log p(\mathbf{x} \mid\mathbf{z}) &= \sum \limits^{D}{j=1} \log p(x_j|\mathbf{z}) = \sum \limits^{D}{j=1} \log \text{Bernoulli}(x_j; p_j ) \tag{1.17}\
&= \sum \limits^{D}{j=1} x_j \log p_j + (1 − x_j) \log(1 − p_j) \tag{1.18}
\end{align*}
$$
其中 $\mathbf{p}$ 代表 $\mathbf{x}$ 中各分量的伯努利参数构成的向量,假设服从多元标准高斯分布,$\forall p_j \in \mathbf{p} : 0 \leq p_j \leq 1$ (通常可以通过 $\text{DecoderNeuralNet} \boldsymbol{\theta}(.)$ 最后一层的 sigmoid
非线性函数实现);$D$ 是 $\mathbf{x}$ 的维数,$\text{Bernoulli}(.; p)$ 是 $\text{Bernoulli}$ 分布的概率质量函数。
1.8 边缘似然与后验的难处理性
与完全可观测模型不同,在含有隐变量的概率图模型中,由于隐变量的存在,使得边缘似然以及后验推断很难处理,深度隐变量模型也不例外。其主要困难在于: 隐变量模型中的数据边缘似然 $p(\mathbf{x} \mid \mathcal{D})$ 通常难以处理,因为理论上需要对所有数据点关于隐变量的先验分布 $p(\mathbf{z})$ 做积分(见 式 1.13
)。如果该积分没有一个便于计算的解析形式或高效估计方法,则推断很难被有效实施;而非常不幸的是,这种情况是常态。
根据第 1.6 节,完全可观测模型中并不存在边缘似然的难处理性问题,也就是说,我们无法像完全可观测模型一样,对目标直接做关于模型参数的微分和优化。
除此上述问题之外,边缘似然 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 的难处理性会直接影响到对后验分布 $p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})$ 的推断。因为,根据贝叶斯定理,后验分布是联合分布与边缘似然之比(式 1.19
),尽管其中分子项 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 的计算效率很高,但分母项却正好是难处理的边缘似然。也就是说,后验 $p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})$ 的难处理性主要受边缘似然 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 影响,两者在深度隐变量模型中都非常棘手。
$$
p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x}) =\frac{p_{\boldsymbol{\theta}}(\mathbf{x,z})} {p_{\boldsymbol{\theta}}(\mathbf{x})} \tag{1.19}
$$
已知变分推断、MCMC 等近似推断技术使我们能够获得后验 $p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})$ 和边缘似然 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 的近似。但传统变分推断方法相对昂贵,例如:此类方法通常需要所有数据点参与的优化迭代、产生不良后验近似等。而变分自编码器希望尽量避免这种昂贵的推断过程。
与隐变量类似,如果将(有向图模型对应的)神经网络参数也视为随机变量,则其后验分布 $p(\boldsymbol{\theta}|\mathcal{D})$ 同样难以精确推断,也需要近似技术,此时相应的模型就是贝叶斯神经网络(但本文似乎不涉及相关内容)。
2 变分自编码器
2.1 隐变量的近似后验
在上一章中,我们介绍了深度隐变量模型(DLVM),提到计算数据 边缘似然
$p_{\boldsymbol{\theta}}(\mathbf{x})$ 和隐变量 后验分布
$p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})$ 是两个非常棘手的问题。对贝叶斯方法熟悉的人应该能够想到,处理此问题的常见方法是变分推断,即利用一个可以参数化的近似分布(或称变分分布)来逼近真实分布,然后通过最大化 $\mathbb{ELBO}$ 变分下界(或最小化 $\mathbb{KL}$ 散度),得到变分参数的最优解,进而得到最优的变分分布。
与传统变分推断方法不同,变分自编码器 (Variational AutoEncoder,VAE) 采用了一种能够实现变分推断功能,但却完全不同的方法来高效地计算隐变量的近似后验,并将其用于后续的生成任务(见 图2.0
)。变分自编码器假设所有数据点对应的局部隐变量共享相同的变分参数 $\boldsymbol{\phi}$,并且局部隐变量的后验分布可由数据通过神经网络预测得出(见 图 2.1
);这实际上引入了一个神经网络推断模型 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$(被称为 识别模型
或 编码器
);其中向量 $\boldsymbol{\phi}$ 表示该编码器神经网络的参数,也可以被视为所有局部隐变量共享的 全局变分参数
。我们将优化变分参数 $\boldsymbol{\phi}$ 以使得其能够预测出 $\mathbf{z}$ 近似后验分布:
$$
q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) \approx p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x}) \tag{2.1}
$$
由此可见, 变分自编码器的关键设计要点在于:将每一个数据点的局部隐变量推断问题转换成了神经网络预测问题,将局部隐变量的变分参数转变成了共享的全局变分参数,从而大大提升了计算效率。正如我们即将解释的,通过推断模型获得的近似分布将有助于优化边缘似然的计算。
图 2.0: VAE 学习可观测变量 $\mathbf{x}$ 空间(其经验分布 $q_{\mathcal{D}}(\mathbf{x})$ 通常很复杂)和隐变量 $\mathbf{z}$ 空间(其分布通常相对简单,例如图中所示的球形)之间的随机映射。图右侧的生成模型学习联合分布 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$,通常将其分解为 $p_{\boldsymbol{\theta}}(\mathbf{x,z}) = p_{\boldsymbol{\theta}}(\mathbf{z})p_{\boldsymbol{\theta}}(\mathbf{x \mid z})$,其中 $p_{\boldsymbol{\theta}}(\mathbf{z})$ 是在隐空间上的先验分布,而 $p_{\boldsymbol{\theta}}(\mathbf{x \mid z})$ 对应于随机解码器。图左侧的推断模型采用一个随机编码器 $q_{\boldsymbol{\phi}}(\mathbf{z \mid x})$ 逼近生成模型的真实后验 $p_{\boldsymbol{\theta}}(\mathbf{z \mid x})$。
图 2.1: 上图中 (a) 为传统变分推断对应的概率图模型,每一个可观测变量的实例 $\boldsymbol{x}_i$ 都与一个特定的局部隐变量 $\boldsymbol{z}_i$ 一起构成联合分布,每个数据点都需要推断一个局部隐变量的后验分布 $p(\boldsymbol{z}_i|\boldsymbol{x}_i)$ ,得到一组变分参数,处理上非常棘手;(b)为变分自编码器对应的概率图模型,所有数据点的局部隐变量共享相同的变分参数,并且每个局部隐变量都可以直接由可观测变量通过共享的变分参数预测出来。
需要说明的是,并非只有上述如此简单的有向概率图模型可以采用推断网络进行预测,从理论上来说,几乎任何有向概率图模型都可以采用推断网络来代替。并且,在有向概率图模型的推断理论指导下,其后验分布可以表示为:
$$
q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) = q_{\boldsymbol{\phi}} (\mathbf{z}1,\ldots, \mathbf{z}M \mid \mathbf{x}) = \prod^{M}{j=1} q{\boldsymbol{\phi}} (\mathbf{z}_j| \text{Pa}(\mathbf{z}_j), \mathbf{x}) \tag{2.2}
$$
其中 $\text{Pa}(\mathbf{z}_j)$ 是有向图中变量 $\mathbf{z}_j$ 的父变量的集合。
此时公式右侧似乎形式上更复杂了,但理论上依然可以使用深度神经网络进行参数化建模。在这种情况下,变分自编码器的变分参数 $\boldsymbol{\phi}$ 就是神经网络的权重和偏差,而该神经网络能够用于预测传统变分推断中的变分参数(如下式中的 $\boldsymbol{\mu}$ 和 $\boldsymbol{\sigma}$ )。例如:
$$
\begin{align*}
( \boldsymbol{\mu} , \log \boldsymbol{\sigma}) = \text{EncoderNeuralNet}{\boldsymbol{\phi}} (\mathbf{x}) \tag{2.3} \
q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) = \mathcal{N} (\mathbf{z}; \boldsymbol{\mu} , \operatorname{diag}(\boldsymbol{\sigma})) \tag{2.4}
\end{align*}
$$
变分自编码器通常使用单一神经网络在数据集的所有数据点上执行后验推断(即所有数据点共享相同的变分参数,见 图 2.1
)。这与传统变分推断方法形成了鲜明对比,传统方法需要在每个数据点上独立和迭代地优化。变分自编码器使用的这种跨数据点共享变分参数的策略,也被称为 摊销变分推断
(Gershman 和 Goodman,2014 年)。通过摊销推断,我们可以避免逐个数据点的优化循环,并继续发挥随机梯度的高效率优势。
个人思考
摊销变分推断的思想其实挺超前的,但细想似乎又很直接。变分推断的核心思想是用变分分布近似真实分布,而变分分布本身其实是一种参数化函数的形式。从这一点思考开来,变分分布原则上可以是任意的参数化函数形式,只要其能够给出符合真实分布的近似密度。
2.2 目标函数的选择: ELBO
什么是 Jenson 不等式?
知识点:
Jensen不等式以丹麦数学家约翰·詹森(Johan Jensen)命名。它给出了 均值的凸函数值
和凸函数的均值
之间的大小关系。 如果 $X$ 是一个随机变量,$\varphi$ 是一个凸函数,则
$$
\varphi(E[X]) \leq E[\varphi (X)].
$$
特别地,如果 $\varphi$ 是严格凸函数,当且仅当 $X$ 是常量时,上式的等号成立。Jensen 不等式在应用于凹函数时,不等号的方向相反。
与传统变分方法一样,变分自编码器的优化目标也是 证据下界( $\mathbb{ELBO}$ )。此目标的另一个术语也被称为 变分下界。在经典的变分推断文献中,$\mathbb{ELBO}$ 通常利用 Jensen 不等式
推导得出(参见 变分推断综述 ),但在这里我们将使用一种替代推导,以便更深入地理解几种概念之间的紧密性。
对于任意包含变分参数 $\boldsymbol{\phi}$ 的推断模型 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$,有:
$$
\begin{align*}
\log p_{\boldsymbol{\theta}}(\mathbf{x})&=\mathbb{E}{q{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}\left[\log p_{\boldsymbol{\theta}}(\mathbf{x})\right] \tag{2.5} \
&=\mathbb{E}{q{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})} \left[ \log \left[\frac{p_{\boldsymbol{\theta}}(\mathbf{x},\mathbf{z})}{p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})}\right]\right] \tag{2.6} \
&=\mathbb{E}{q{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}\left[\log \left[\frac{p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})}{q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})} \frac{q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}{p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})}\right]\right] \tag{2.7} \
&=\underbrace{\mathbb{E}{q{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}\left[\log \left[\frac{p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})}{q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}\right]\right]}{=\mathcal{L}{\theta, \boldsymbol{\phi}}(\mathbf{x})}+\underbrace{\mathbb{E}{q{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}\left[\log \left[\frac{q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}{p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})}\right]\right]}{=D{K L}\left(q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})\right)} \tag{2.8}
\end{align*}
$$
式(2.5)
两边是恒等的,因为 $\log p_{\boldsymbol{\theta}(\mathbf{x})}$ 与 $\mathbf{z}$ 无关,添加期望符号不影响等式成立;式(2.6)
通过简单地变换,引入了隐变量 $\mathbf{z}$;式(2.7)
进一步引入变分分布 $q_{\boldsymbol{\phi}}(\mathbf{z|x})$;式(2.8)
是 式(2.7)
的正常分解,根据 $\mathbb{KL}$ 散度 的定义,等号右侧第二项是 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 和 $p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})$ 之间的 $\mathbb{KL}$ 散度,因为 $\mathbb{KL}$ 散度具有非负性 (参见 $\mathbb{KL}$ 散度的定义),所以有:
$$
D_{K L}\left(q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x}) | p_{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{z} \mid \mathbf{x})\right) \geq 0 \tag{2.9}
$$
式 (2.8)
等号右侧第一项就是前面提到的变分下界,也称为证据下界( $\mathbb{ELBO}$ ),形式可进一步推导如下:
$$
\begin{align*}
\mathcal{L}{\boldsymbol{\theta}, \boldsymbol{\phi}}(\mathbf{x}) &=\mathbb{E}{q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}\left[\log p_{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{x}, \mathbf{z})-\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})\right] \
&= \mathbb{E}{q{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}\log p_{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{x}, \mathbf{z}) - \mathbb{E}{q{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})} \log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})\tag{2.10}
\end{align*}
$$
注意:由于 $\mathbb{KL}$ 散度非负,所以由 式(2.8)
可得到 $\mathbb{ELBO}$ 、 $\mathbb{KL}$ 散度和边缘似然( $\mathbb{ML}$ )三者之间的关系:
$$
\begin{align*}
\mathcal{L}{\boldsymbol{\boldsymbol{\theta}}, \boldsymbol{\phi}}(\mathbf{x}) &=\log p{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{x})-D_{K L}\left(q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})|| p_{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{z} \mid \mathbf{x})\right) \tag{2.11}\
& \leq \log p_{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{x}) \tag{2.12}
\end{align*}
$$
于是, $\mathbb{KL}$ 散度 $D_{KL} \left( q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) | p_{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{z} \mid \mathbf{x}) \right)$ 可以同时作出如下两种解释:
(1)根据定义,$\mathbb{KL}$ 散度确定了近似分布与真实分布之间的相似程度;
(2)根据
式(2.8)
,$\mathbb{KL}$ 散度确定了变分下界 $\mathcal{L}{\boldsymbol{\theta}, \boldsymbol{\phi}}(\mathbf{x})$ 与对数边缘似然 $\log p{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{x})$ 之间的差。此时 $\mathbb{KL}$ 散度代表了变分界的紧致度,变分分布 $q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})$ 越接近真实后验分布 $p_{\boldsymbol{\boldsymbol{\theta}}}(\mathbf{z} \mid \mathbf{x})$,则 $\mathbb{KL}$ 散度所代表的差越小。
如果审视 式 2.11
还可以发现,关于参数 $\boldsymbol{\theta}$ 和 $\boldsymbol{\phi}$ 最大化变分下界 $\mathcal{L}_{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x})$,可以同时优化我们关心的两个目标:
目标 1: 数据的边缘似然尽量大,使模型更能够解释数据。式中右侧第一项表明,最大化 $\mathbb{ELBO}$ 会努力最大化边缘似然 $p_{\boldsymbol{\theta}}(\mathbf{x})$,使模型更能解释数据,这也意味着生成模型会变得更好。
目标 2: 最小化隐变量的后验推断误差,使近似分布更贴近真实分布。右侧第二项表明,最大化 $\mathbb{ELBO}$ 会努力最小化近似后验 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 与真实后验 $p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})$ 之间的 $\mathbb{KL}$ 散度,因此近似后验 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 会变得更好。
2.3 ELBO 的随机梯度优化
据前所述,将 $\mathbb{ELBO}$ 作为目标函数,既能够最大化边缘似然,还能够最小化变分分布与真实后验分布之间的 $\mathbb{KL}$ 散度。但更重要的是:$\mathbb{ELBO}$ 还允许使用随机梯度下降 联合优化 所有参数(即包含变分参数 $\boldsymbol{\phi}$ ,也包含生成参数 $\boldsymbol{\theta}$ ),参见 图2.2
。因为,式 2.10
中的 $q_{\boldsymbol{\phi}}(\mathbf{z|x})$ 正对应推断模型,而 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 正对应生成模型。
这意味着,我们有机会通过随机梯度优化方法,训练一个端到端的神经网络。 也就是说,我们有机会将 $\mathbb{ELBO}$ 作为目标函数,从 $\boldsymbol{\phi}$ 和 $\boldsymbol{\theta}$ 的任意随机初始化值开始,通过随机梯度下降优化参数值直到收敛。但比较麻烦的问题在于:$\mathbb{ELBO}$ 是一个关于变分分布的期望值,也就是说 $\mathbf{z}$ 是一个随机变量,而这打断了误差反向传播的通路,使端到端的训练不可行(见 图 2.3
左)。
图 2.2:变分自编码器中计算流程的简单示意图
另外,对于给定的独立同分布数据集,$\mathbb{ELBO}$ 目标函数是所有数据点 $\mathbb{ELBO}$ 的总和(或均值),即:
$$
\mathcal{L}{\boldsymbol{\theta},\boldsymbol{\phi}} \mathcal{D} = \sum{x \in D} \mathcal{L}_{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x}) \tag{2.13}
$$
根据 式(2.10)
会发现,即便是单个数据点的 $\mathbb{ELBO}$ 及其梯度 $\nabla_{\boldsymbol{\theta},\boldsymbol{\phi}} \mathcal{L}{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x})$ ,处理已经比较困难了,更何况做基于所有数据点做梯度优化。一种巧妙的方法是用一个计算更容易的梯度无偏估计量 $\tilde{\nabla}{\boldsymbol{\theta}, \boldsymbol{\phi}} \mathcal{L}_{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x})$ 来代替真实梯度,进而在简化计算的同时,其无偏性能够保证正常地执行小批量梯度下降。
下面我们对 $\mathbb{ELBO}$ 关于两类参数的梯度分别进行分析,希望能够从中找到解决问题的方法:
(1)计算关于生成参数的梯度
事实上,$\mathbb{ELBO}$ 相对于生成模型参数 $\boldsymbol{\theta}$ 的无偏梯度很容易推导,根据 式(2.10)
:
$$
\begin{align*}
\nabla_{\boldsymbol{\theta}} \mathcal{L}{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x}) &= \nabla{\boldsymbol{\theta}} \mathbb{E}{q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} \left [\log p_{\boldsymbol{\theta}}(\mathbf{x,z}) - \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) \right] \tag{2.14} \
&= \mathbb{E}{q{\boldsymbol{\phi}} (\mathbf{z}| \mathbf{x})} [\nabla_{\boldsymbol{\theta}}(\log p_{\boldsymbol{\theta}}(\mathbf{x,z}) - \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}))] \tag{2.15} \
&\simeq \nabla_{\boldsymbol{\theta}}(\log p_{\boldsymbol{\theta}}(\mathbf{x,z}) - \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})) \tag{2.16} \
&= \nabla_{\boldsymbol{\theta}}(\log p_{\boldsymbol{\theta}}(\mathbf{x,z})) \tag{2.17}
\end{align*}
$$
由于 $q_{\boldsymbol{\phi}(\mathbf{z|x})}$ 与参数 $\boldsymbol{\theta}$ 无关,所有 式(2.14)
右侧的梯度符号和期望符号可以互换,进而得到 式(2.15)
;式(2.16)
是利用 $q_{\boldsymbol{\phi}} (\mathbf{z \mid x})$ 的随机样本得到的梯度无偏估计量,其中第二项与 $\boldsymbol{\theta}$ 无关,求导后为 $0$,因此有 式(2.17)
。也就是说,式(2.17)
是 式(2.15)
的一个蒙特卡罗无偏估计。或者说, $\mathbb{ELBO}$ 关于生成参数 $\boldsymbol{\theta}$ 的梯度,可以通过 $\log p_{\boldsymbol{\theta}(\mathbf{x,z})}$ 关于变分分布的蒙特卡洛积分无偏估计。
(2)计算变分参数的梯度
$\mathbb{ELBO}$ 关于变分参数 $\boldsymbol{\phi}$ 的无偏梯度估计更复杂一些,因为 $\mathbb{ELBO}$ 式中的期望是关于变分分布 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 的,而该分布本身是 $\boldsymbol{\phi}$ 的函数。这导致梯度公式中的梯度符号与期望符号无法互换:
$$
\begin{align*}
\nabla_{\boldsymbol{\phi}} \mathcal{L}{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x}) &= \nabla{\boldsymbol{\phi}} \mathbb{E}{q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} \left[\log p_{\boldsymbol{\theta}}(\mathbf{x,z}) - \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})\right] \tag{2.18}\
&\neq \mathbb{E}{q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} \left[\nabla_{\boldsymbol{\phi}} (\log p_{\boldsymbol{\theta}}(\mathbf{x,z}) − \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})) \right] \tag{2.19}
\end{align*}
$$
当面对连续型隐变量时,我们可以使用下一节即将介绍的重参数化技巧来获得 $\nabla_{\boldsymbol{\theta},\boldsymbol{\phi}} \mathcal{L}_{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x})$ 的无偏估计。
当面对离散型隐变量时,可能稍微复杂一些,感兴趣的读者可以跳转到 第 2.9.1 节
了解详细内容。
2.4 重参数化技巧
对于连续型隐变量以和可微的推断模型和生成模型,通过 变量变化原理
,$\mathbb{ELBO}$ 可以实现同时关于 $\boldsymbol{\phi}$ 和 $\boldsymbol{\theta}$ 求微分,此方法被称为重参数化技巧(Kingma 和 Welling,2014; Rezende 等,2014)。其基本思想是将 $\mathbb{ELBO}$ 关于变分分布 $p_{\boldsymbol{\phi}}(\mathbf{z|x})$ 的期望,通过变量变化转变为关于一个简单分布的期望,从而使 式(2.14)
中的期望符号和求导符号可以互换,进而得到 $\mathbb{ELBO}$ 关于变分参数梯度的无偏估计。
2.4.1 变量变化原理
首先,我们可以将随机变量 $\mathbf{z} \sim q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 表示为另一个随机变量 $\boldsymbol{\epsilon}$ 的某些可微和可逆变换,我们将这种变换关系记为:
$$
\mathbf{z} = \mathbf{g}(\boldsymbol{\epsilon}, \boldsymbol{\phi}, \mathbf{x}) \tag{2.20}
$$
其中随机变量 $\boldsymbol{\epsilon}$ 的分布独立于 $\mathbf{x}$ 或 $\boldsymbol{\phi}$,$g$ 是可微且可逆的变换。
2.4.2 变量变化下的期望梯度
给定上述变量变化后,根据变量变化原理,任何关于变分分布 $p_{\boldsymbol{\phi}}(\mathbf{z|x})$ 的期望可以被改写为关于 $\boldsymbol{\epsilon}$ 的期望:
$$
\mathbb{E}{q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} [f (\mathbf{z})] = \mathbb{E}_{p(\boldsymbol{\epsilon})}[f (\mathbf{z})] \tag{2.21}
$$
其中 $\mathbf{z} = \mathbf{g}(\boldsymbol{\epsilon}, \boldsymbol{\phi} , \mathbf{x})$。该转换的优势是:新的期望(关于 $\boldsymbol{\epsilon}$ 的分布 )和梯度算子(关于参数 $\boldsymbol{\phi}$)之间变得可交换了,进而可以得到原始梯度的一个蒙特卡罗无偏估计:
$$
\begin{align*}
\nabla_{\boldsymbol{\phi}} \mathbb{E}{q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} [f (\mathbf{z})] &= \nabla_{\boldsymbol{\phi}} \mathbb{E}{p(\boldsymbol{\epsilon})} [f(\mathbf{z})] \tag{2.22} \
&= \mathbb{E}{p(\boldsymbol{\epsilon})} [\nabla_{\boldsymbol{\phi}} f (\mathbf{z})] \tag{2.23} \
&\simeq \nabla_{\boldsymbol{\phi}} f (\mathbf{z}) \tag{2.24}
\end{align*}
$$
在 式(2.24)
中,$\mathbf{z} = \mathbf{g}(\boldsymbol{\phi}, \mathbf{x},\boldsymbol{\epsilon})$,其计算基于随机噪声 $\boldsymbol{\epsilon} \sim p(\boldsymbol{\epsilon})$ 的样本。有关说明见 图 2.3
及其说明。
图 2.3:重参数化技巧的说明。变分参数 $\boldsymbol{\phi}$ 通过随机变量 $\mathbf{z} \sim q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 影响目标 $f$。我们的目的是希望能够计算梯度 $\nabla {\boldsymbol{\phi}} f$ 以便使用 SGD 优化目标。在原始形式(左)中,我们无法求 $f$ 关于 $\boldsymbol{\phi}$ 的微分,因为我们无法通过随机变量 $\mathbf{z}$ 实现反向梯度的传播。但是,我们可以通过将变量重参数化为确定性的可微函数 $g(\boldsymbol{\phi},\mathbf{x},\boldsymbol{\epsilon})$,从而 “外部化” $\mathbf{z}$ 中的随机性。这使得我们可以 “通过 $\mathbf{z}$ 实现反向传播”,进而获得梯度 $\nabla{\boldsymbol{\phi}} f$。
2.4.3 ELBO 的梯度
通过重参数化,我们可以用一个关于 $p(\boldsymbol{\epsilon})$ 的期望,替换关于 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 的期望。 $\mathbb{ELBO}$ 可以重写为:
$$
\begin{align*}
\mathcal{L}{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x}) &= \mathbb{E}{q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} [\log p_{\boldsymbol{\theta}}(\mathbf{x,z}) − \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})] \tag{2.25} \
&= \mathbb{E}{p(\boldsymbol{\epsilon})} [\log p{\boldsymbol{\theta}}(\mathbf{x,z}) − \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})] \tag{2.26}
\end{align*}
$$
其中 $\mathbf{z} = \mathbf{g}(\boldsymbol{\epsilon} ,\boldsymbol{\phi}, \mathbf{x})$ 。
因此,我们可以得到单数据点 $\mathbb{ELBO}$ 的蒙特卡罗无偏估计 $\tilde{\mathcal{L}}_{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x})$,其中样本来自新引入的噪声分布 $p(\boldsymbol{\epsilon})$ :
$$
\begin{align*}
\boldsymbol{\epsilon} &\sim p(\boldsymbol{\epsilon}) \tag{2.27}\
\mathbf{z} &= \mathbf{g}(\boldsymbol{\phi} , \mathbf{x} ,\boldsymbol{\epsilon} ) \tag{2.28}\
\tilde{\mathcal{L}}{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x}) &= \log p{\boldsymbol{\theta}}(\mathbf{x,z}) − \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) \tag{2.29}
\end{align*}
$$
这一系列的运算可以在 TensorFlow 等软件中表示为符号图,并且不费吹灰之力进行关于参数 $\boldsymbol{\theta}$ 和 $\boldsymbol{\phi}$ 微分。得到的梯度 $\nabla_{\boldsymbol{\phi}} \tilde{\mathcal{L}}_{\boldsymbol{\theta}, \boldsymbol{\phi}} (\mathbf{x})$ 可用于使用小批量 SGD 优化 $\mathbb{ELBO}$。请参见算法 1。该算法最初被 Kingma 和 Welling (2014)称为 自编码变分贝叶斯 (AEVB)
算法。更一般地,重参数化的 $\mathbb{ELBO}$ 估计被称为 随机梯度变分贝叶斯估计
。如 (Kingma and Welling, 2014) 附录中所述,该估计器还可用于估计模型参数的后验。
无偏性的证明
此处未处理,关心的读者请参阅原文。
2.4.4 计算的实现
$\mathbb{ELBO}$ 的估计需要计算分布 $\log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$。给定一个 $\mathbf{x}$ 值,然后给定一个 $\mathbf{z}$ 值,此对数分布应该只是一个简单函数计算。但如果等价地做变量变化,则需要在给定一个 $\boldsymbol{\epsilon}$ 值和变换 $\mathbf{g}(\cdot)$ 后,从函数形式上作进一步的推导,使之变成 $\boldsymbol{\epsilon}$ 的函数。
在实际工作中,分布 $p(\boldsymbol{\epsilon})$ 通常是一个提前设定好的简单分布(如标准高斯)。只要 $\mathbf{g}(.)$ 满足变量变化条件,原先 $\mathbf{z}$ 的函数就可以被改写为 $\boldsymbol{\epsilon}$ 的函数:
$$
\log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) = \log p(\boldsymbol{\epsilon}) − \log d_{\boldsymbol{\phi}} (\mathbf{x},\boldsymbol{\epsilon}) \tag{2.33}
$$
也就是说,原先面向 $\mathbf{z}$ 的计算,在转换为面向 $\boldsymbol{\epsilon}$ 的计算时,需要计算上式右侧第二项的雅可比矩阵行列式的绝对值对数 ( $\partial{\mathbf{z}}/\partial{\boldsymbol{\epsilon}}$ ) :
$$
\log d_{\boldsymbol{\phi}} (\mathbf{x},\boldsymbol{\epsilon}) = \log \left| \operatorname{det} \left(\frac{\partial \mathbf{z}} {\partial \boldsymbol{\epsilon}} \right) \right| \tag{2.34}
$$
我们读为 “从 $\boldsymbol{\epsilon}$ 到 $\mathbf{z}$ 的变换的行列式对数”。我们使用符号 $\log d_{\boldsymbol{\phi}} (\mathbf{x},\boldsymbol{\epsilon})$ 来明确表示这个行列式对数,类似于 $\mathbf{g}(\cdot)$,该行列式对数也是 $\mathbf{x}$ 和 $\boldsymbol{\phi}$ 的函数。雅可比矩阵包含从 $\boldsymbol{\epsilon}$ 到 $\mathbf{z}$ 的变换的所有一阶导数:
$$
\frac{\partial \mathbf{z}}{\partial \boldsymbol{\epsilon}}=\frac{\partial\left(z_1, \ldots, z_k\right)}{\partial\left(\epsilon_1, \ldots, \epsilon_k\right)}
=\left(\begin{array}{ccc}
\frac{\partial z_1}{\partial \epsilon_1} & \cdots & \frac{\partial z_1}{\partial \epsilon_k} \
\vdots & \ddots & \vdots \
\frac{\partial z_k}{\partial \epsilon_1} & \cdots & \frac{\partial z_k}{\partial \epsilon_k}
\end{array}\right)
$$
正如即将展示的,我们可以构建非常灵活的变换 $\mathbf{g}(\cdot)$ (如三角矩阵变换),使得 $\log d_{\boldsymbol{\phi}} (\mathbf{x},\boldsymbol{\epsilon})$ 很容易计算,从而产生高度灵活的推断模型 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$。
2.5 高斯后验分布的具体示例
2.5.1 可完全因子分解的高斯后验
变分分布的一个常见选择是可因子化的高斯后验 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) = \mathcal{N} (\mathbf{z}; \boldsymbol{\mu} , \operatorname{diag}(\boldsymbol{\sigma}^2))$,即隐变量之间相互独立:
$$
\begin{align*}
(\boldsymbol{\mu} , \log \boldsymbol{\sigma}) &= \text{EncoderNeuralNet}{\boldsymbol{\phi}} (\mathbf{x}) \tag{2.36}\
q{\boldsymbol{\phi}} (\mathbf{z}| \mathbf{x}) &= \prod_i q_{\boldsymbol{\phi}} (z_i|\mathbf{x}) = \prod_i \mathcal{N} (z_i; \mu_i, \sigma^2_i) \tag{2.37}
\end{align*}
$$
其中 $\mathcal{N} (z_i; \mu_i,\sigma^2_i)$ 是单变量高斯分布的概率分布函数。重参数化后,可以写成:
$$
\begin{align*}
\boldsymbol{\epsilon} &\sim \mathcal{N} (0, \mathbf{I}) \tag{2.38} \
( \boldsymbol{\mu} , \log \boldsymbol{\sigma}) &= \text{EncoderNeuralNet}_{\boldsymbol{\phi}} (\mathbf{x}) \tag{2.39}\
\mathbf{z} &= \boldsymbol{\mu} + \boldsymbol{\sigma} \odot \boldsymbol{\epsilon} \tag{2.40}
\end{align*}
$$
其中 $\odot$ 是逐元素乘积。从 $\boldsymbol{\epsilon}$ 到 $\mathbf{z}$ 的变换所对应的雅可比是一个对角矩阵:
$$
\frac{\partial \mathbf{z}}{\partial \boldsymbol{\epsilon}} = \operatorname{diag}(\boldsymbol{\sigma}) \tag{2.41}
$$
即对角线元素为 $\boldsymbol{\sigma}$ 的对角矩阵。对角(或更一般地,三角形)矩阵的行列式是其对角元素的乘积。因此雅可比行列式的对数行列式为:
$$
\log d_{\boldsymbol{\phi}} (\mathbf{x},\boldsymbol{\epsilon}) = \log \left| \operatorname{det} \left(\frac{\partial \mathbf{z}}{\partial \boldsymbol{\epsilon}} \right)\right| = \sum_i \log \sigma_i \tag{2.42}
$$
当 $z = g(\boldsymbol{\epsilon,\phi},\mathbf{x})$ 时,后验分布为:
$$
\begin{align*}
\log q_{\boldsymbol{\phi}} (\mathbf{z}| \mathbf{x}) &= \log p(\boldsymbol{\epsilon}) − \log d_{\boldsymbol{\phi}} (\mathbf{x},\boldsymbol{\epsilon}) \tag{2.43}\
&= \sum_i \log \mathcal{N} (\epsilon_i; 0, 1) − \log \sigma_i \tag{2.44}
\end{align*}
$$
2.5.2 全协方差的高斯后验
完全因子分解的高斯后验可以进一步扩展到具有全协方差的高斯(即隐变量之间存在相关性):
$$
q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) = \mathcal{N} (\mathbf{z}; \boldsymbol{\mu} , \boldsymbol{\Sigma}) \tag{2.45}
$$
该分布的重参数化由下式给出:
$$
\begin{align*}
\boldsymbol{\epsilon} &\sim \mathcal{N} (0, I) \tag{2.46} \
\mathbf{z} &= \boldsymbol{\mu} + \mathbf{L}\boldsymbol{\epsilon} \tag{2.47}
\end{align*}
$$
其中 $\mathbf{L}$ 是下(或上)三角矩阵,非零的对角线元素定义了各隐变量的标准差,其他非对角线元素则定义了隐变量之间的相关性(协方差)。
全协方差的高斯后验采用这种重参数化方式,主要是因为其雅可比惊人得简单。其雅可比矩阵是一个三角矩阵为:$\frac{\partial \mathbf{z}}{\partial \boldsymbol{\epsilon}} = \mathbf{L}$。而三角矩阵的行列式就是其对角线元素的乘积,亦即:
$$
\log \left| \operatorname{det} (\frac{\partial \mathbf{z}}{\partial \boldsymbol{\epsilon}} ) \right | = \sum_i \log \left| L_{ii} \right| \tag{2.48}
$$
而后验的对数分布为:
$$
\log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) = \log p(\boldsymbol{\epsilon}) − \sum_i \log \left| L_{ii} \right| \tag{2.49}
$$
式中的 $L$ 来自于 $\mathbf{z}$ 的协方差矩阵的 Cholesky 分解 $\boldsymbol{\sigma} = LL^T$:
$$
\begin{align*}
\boldsymbol{\Sigma} &=\mathbb{E}\left[(\mathbf{z}-\mathbb{E}[\mathbf{z} \mid])(\mathbf{z}-\mathbb{E}[\mathbf{z} \mid])^T\right] \tag{2.50}\
&=\mathbb{E}\left[\mathbf{L} \boldsymbol{\epsilon}(\mathbf{L} \boldsymbol{\epsilon})^T\right]=\mathbf{L} \mathbb{E}\left[\boldsymbol{\epsilon} \boldsymbol{\epsilon}^T\right] \mathbf{L}^T \tag{2.51}\
&=\mathbf{L L}^T \tag{2.52}
\end{align*}
$$
注: 因为 $\epsilon \sim \mathcal{N}(0, \mathbf{I})$,所以有 $\mathbb{E}\left[\boldsymbol{\epsilon} \boldsymbol{\epsilon}^T\right]=\mathbf{I}$ 。
构建具有所需性质(即三角矩阵和非零的对角元素)的矩阵 $\mathbf{L}$ 的一种方法是将其构造如下:
$$
\begin{align*}
\left(\boldsymbol{\mu}, \log \boldsymbol{\sigma}, \mathbf{L}^{\prime}\right) &\leftarrow \text{ EncoderNeuralNet}\phi(\mathbf{x}) \tag{2.53} \
\mathbf{L} &\leftarrow \mathbf{L}{\text {mask }} \odot \mathbf{L}^{\prime}+\operatorname{diag}(\boldsymbol{\sigma}) \tag{2.54}
\end{align*}
$$
上式结合 式2.47
$\mathbf{z} = \boldsymbol{\mu} + \mathbf{L}\boldsymbol{\epsilon}$ 即构成完整的模型。式中的 $\mathbf{L}_{\text{maks}}$ 是一个掩膜矩阵,其对角线(含)以上的元素均为 $0$,对角线下方为 $1$。请注意,由于掩膜 $\mathbf{L}$ 的存在,雅可比矩阵 $(\partial \mathbf{z}/\partial \boldsymbol{\epsilon})$ 是三角形的,其对角线元素为 $\boldsymbol{\sigma}$。因此,雅可比的对数行列式与因子化的高斯情况相同:
$$
\log \left|\operatorname{det}\left(\frac{\partial \mathbf{z}}{\partial \boldsymbol{\epsilon}}\right)\right|=\sum_i \log \sigma_i \tag{2.55}
$$
2.5.3 向更复杂的后验推广
更一般地,可以用一系列(可微的和非线性的)变换代替 $\mathbf{z} = \mathbf{L}\boldsymbol{\epsilon} + \boldsymbol{\mu}$ ;只要链中每一步的雅可比行列式都是具有非零对角线元素的三角形,始终保持对数行列式简单。正如 Kingma 等在 2016 年探索并在 第 3 节
中讨论的那样,逆自回归流 (IAF) 正是使用了此原理。
2.6 边缘似然的估计
在训练变分自编码器之后,我们可以使用重要性采样技术估计模型下数据的边缘似然,正如 Rezende et al., 2014 最初提出的那样。单一数据点的边缘似然可以写为:
$$
\log p_{\boldsymbol{\theta}}(\mathbf{x}) = \log \mathbb{E}{q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} [p_{\boldsymbol{\theta}}(\mathbf{x,z})/q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})] \tag{2.56}
$$
从 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 中抽取随机样本,其蒙特卡洛估计为:
$$
\log p_{\boldsymbol{\theta}}(\mathbf{x}) \approx \log \frac{1}{L}\sum \limits^L_{l=1} p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z}^{(l)})/q_{\boldsymbol{\phi}} (\mathbf{z}^{(l)} \mid \mathbf{x}) \tag{2.57}
$$
其中每个 $\mathbf{z}^{(l)} \sim q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 是一个随机来自推断模型的样本。随着 $L$ 变大,近似值将渐进成为边缘似然的最优估计,事实上,由于这是蒙特卡洛估计,对于 $L \rightarrow \infty$,它收敛到真实的边缘似然。
2.7 最大似然目标与变分下界目标的关系
提高 $\mathbb{ELBO}$ 紧致性的一种潜在方法是增加生成模型的灵活性。这可以通过 $\mathbb{ELBO}$ 和 $\mathbb{KL}$ 散度之间的联系来理解。
2.7.1 最大似然目标
独立同分布数据集 $\mathcal{D}$ 的大小为 $N_{\mathcal{D}}$,最大似然准则为:
$$
\begin{align*}
\log p_{\boldsymbol{\theta}}\mathcal{D} &= \frac{1}{N_{\mathcal{D}}} \sum_{\mathbf{x} \in \mathcal{D} } \log p_{\boldsymbol{\theta}}(\mathbf{x}) \tag{2.58}\
&= \mathbb{E}{q{\mathcal{D}}(\mathbf{x})} [\log p_{\boldsymbol{\theta}}(\mathbf{x})] \tag{2.59}
\end{align*}
$$
其中 $q_{\mathcal{D}}(\mathbf{x})$ 是数据分布,它是一个混合分布:
$$
q_{\mathcal{D}}(\mathbf{x}) = \frac{1}{N} \sum \limits^{N}{i=1} q^{(i)}{\mathcal{D}} (\mathbf{x}) \tag{2.60}
$$
其中每个分量 $q^{(i)}_{\mathcal{D}} (\mathbf{x})$ :
- 在连续数据的情况下,对应于以值 $\mathbf{x}^{(i)}$ 为中心的 Dirac delta 分布
- 在离散数据的情况下,对应于所有概率质量集中在值 $\mathbf{x}^{(i)}$ 处的离散分布。
数据分布和模型分布之间的 $\mathbb{KL}$ 散度可以重写为负对数似然加上一个常数:
$$
\begin{align*}
D_{KL}(q_{\mathcal{D}}(\mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{x})) &= − \mathbb{E}{q{\mathcal{D}(\mathbf{x})}} [\log p_{\boldsymbol{\theta}} (\mathbf{x})] + \mathbb{E}{q{\mathcal{D}(\mathbf{x})}} [\log q_{\mathcal{D}}(\mathbf{x})] \tag{2.61} \
&= - \log p_{\boldsymbol{\theta}}(\mathcal{D}) + \text{ constant } \tag{2.62}
\end{align*}
$$
其中 $\text{ constant } = -\mathcal{H}(q_{\mathcal{D}}(\mathbf{x}))$。
2.7.2 变分下界目标
结合数据分布 $q_{\mathcal{D}}(\mathbf{x})$ 和推断模型,数据 $\mathbf{x}$ 和隐变量 $\mathbf{z}$ 的联合分布为:$q_{\mathcal{D}, \boldsymbol{\phi}} (\mathbf{x,z}) = q_{\mathcal{D}}(\mathbf{x})q(\mathbf{z} \mid \mathbf{x})$。与上一节类似,该数据(联合)分布与模型(联合)分布之间的 $\mathbb{KL}$ 散度为:
$$
\begin{align*}
&D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{x}, \mathbf{z}) \mid p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right) \tag{2.63}\
&=-\mathbb{E}{q{\mathcal{D}}(\mathbf{x})}\left[\mathbb{E}{q_\phi(\mathbf{z} \mid \mathbf{x})}\left[\log p{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})-\log q_\phi(\mathbf{z} \mid \mathbf{x})\right]-\log q_{\mathcal{D}}(\mathbf{x})\right] \tag{2.64}\
&=-\mathcal{L}_{\boldsymbol{\theta}, \phi}(\mathcal{D})+\text { constant } \tag{2.65}
\end{align*}
$$
上式表明,$q_{\mathcal{D}, \boldsymbol{\phi}} (\mathbf{x,z})$ 与 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 的 $\mathbb{KL}$ 散度,可以写成负 $\mathbb{ELBO}$ 加上一个常数的形式,其中 $\text{ constant } = -\mathcal{H}(q_{\mathcal{D}}(\mathbf{x}))$。 也就是说,最大化 $\mathbb{ELBO}$ 等价于最小化 $q_{\mathcal{D}, \boldsymbol{\phi}} (\mathbf{x,z})$ 与 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 之间的 $\mathbb{KL}$ 散度。
2.7.3 两者的关系
最大似然目标和最大化 $\mathbb{ELBO}$ 目标之间的关系可以概括为在以下简单等式中:
$$
\begin{align*}
&D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{x}, \mathbf{z}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right) \tag{2.66}\
&=D_{K L}\left(q_{\mathcal{D}}(\mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{x})\right)+\mathbb{E}{q{\mathcal{D}}(\mathbf{x})}\left[D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{z} \mid \mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})\right)\right] \tag{2.67}\
&\geq D_{K L}\left(q_{\mathcal{D}}(\mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{x})\right) \tag{2.68}
\end{align*}
$$
即 最大化变分下界得到的变分界比最大似然法松弛,或反之,最大似然法得到的变分界比最大化变分下界更为紧致。
另外有一种观点认为,$\mathbb{ELBO}$ 可以被视为增强了的最大似然目标空间。对于某些特定的编码器 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$,我们可以将 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 视为原始数据 $\mathbf{x}$ 和每个数据点处的辅助特征 $\mathbf{z}$ 的联合数据分布的增强版本;而 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 自身则定义了原始数据和辅助特征变量的联合模型分布,见 图 2.4
。
图 2.4:最大似然 ($\mathbb{ML}$) 目标可以看作是 $D_{KL}(q_{D, \boldsymbol{\phi}} (\mathbf{x})||p_{\boldsymbol{\theta}}(\mathbf{x}))$ 的最小化,而 $\mathbb{ELBO}$ 目标可以看作是 $D_{KL}(q_{D, \boldsymbol{\phi}} (\mathbf{ x, z})||p_{\boldsymbol{\theta}}(\mathbf{x,z}))$,其上限为 $D_{KL}(q_{D, \boldsymbol{\phi}} (\mathbf{x})||p_{\boldsymbol{\theta}}(\mathbf{x}))$。如果不可能完美拟合,由于 $\mathbb{KL}$ 散度的方向,$p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 通常会以比 $q_{D, \boldsymbol{\phi}} (\mathbf{x,z})$ 更高的方差结束。
2.8 挑战
2.8.1 优化方面存在的问题
与 (Bowman et al., 2015) 和 (Sønderby et al., 2016a) 中的发现一致,我们发现直接使用变分下界目标做随机优化,很可能会陷入不受欢迎的稳定平衡。在训练开始时,似然项 $\log p(\mathbf{x} \mid\mathbf{z})$ 相对较弱,因此初始的后验状态 $q(\mathbf{z} \mid \mathbf{x}) ≈ p(\mathbf{z})$,这导致了难以逃离的稳定平衡。 (Bowman et al., 2015) 和 (Sønderby et al., 2016a) 中采用了一些优化策略,即使隐变量的代价函数 $D_{KL}(q(\mathbf{z} \mid \mathbf{x}) | p(\mathbf{z}))$ 的权重在多轮 epochs 中从 $0$ 缓慢退火到 $1$。
(Kingma et al., 2016) 中提出的另一种方法是 自由比特(free bits)
:$\mathbb{ELBO}$ 目标的一种变体。该目标能够确保平均而言,每个隐变量(或每组隐变量)的信息编码 bit 数最小。
隐空间的维度被分为 $K$ 个组。然后我们使用以下小批量目标,确保每个子集 $j$(平均每个小批量为 $\mathcal{M}$)使用少于 $\lambda$个 nats 的信息不是有利:
$$
\begin{align*}
\tilde{L}\lambda &= \mathbb{E}{\mathbf{x} \sim \mathcal{M}} [ \mathbb{E}{q(\mathbf{z} \mid \mathbf{x})} [\log p(\mathbf{x} \mid\mathbf{z})]] \tag{2.69}\
&= - \sum\limits^K{j=1} \text{maximum}(\lambda,\mathbb{E}{\mathbf{x}\sim \mathcal{M}} [D{KL}(q(z_j|\mathbf{x})||p (z_j))] \tag{2.70}
\end{align*}
$$
由于增加隐信息通常有利于目标的第一项(通常称为 负重构误差
),在实际工作中,这导致 $\mathbb{E}{x \sim M} [D{KL}(q(\mathbf{z}_j \mid \mathbf{x}) | p(\mathbf{z}_j))] \geq \lambda, \text{ for all } j$。
Kingma 等(2016)发现该方法适用于相当广泛的值范围( $\lambda \in [0.125, 0.25, 0.5, 1 , 2]$ ),从而显著改善了基准结果的对数似然。
2.8.2 生成的样本不够清晰
在 第 2.7 节
中我们看到优化 $\mathbb{ELBO}$ 等效于最小化 $D_{KL}(q_{\mathcal{D},\boldsymbol{\phi}} (\mathbf{x,z})||p_{\boldsymbol{\theta}}(\mathbf{x,z}))$。如果 $q_{\mathcal{D},\boldsymbol{\phi}} (\mathbf{x,z})$ 和 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 无法完美拟合,那么模型分布 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ (和 $p_{\boldsymbol{\theta}}(\mathbf{x})$)的方差最终将大于数据分布 $q_{\mathcal{D}, \boldsymbol{\phi}} (\mathbf{x, z})$ (和数据 $q_{\mathcal{D}, \boldsymbol{\phi}} (\mathbf{x})$)的方差。这是由于 $\mathbb{KL}$ 散度的方向;如果 $(\mathbf{x,z})$ 的值可能低于 $q_{\mathcal{D}, \boldsymbol{\phi}}$ 但不在 $p_{\boldsymbol{\theta}}$ 之下,则项 $\mathbb{E}{q{\mathcal{D}, \boldsymbol{\phi}} (\mathbf{x,z})} [\log p_{\boldsymbol{\theta}}(\mathbf{x,z})]$ 将趋于无穷大。然而,相反的情况并非如此:生成模型仅在将概率质量置于 $(\mathbf{x,z})$ 的值上而在 $q_{\mathcal{D}, \boldsymbol{\phi}}$ 下没有支持时受到轻微惩罚。
因此,可以通过选择足够灵活的推断模型和/或足够灵活的生成模型来解决“模糊”问题。在接下来的两章中,我们将讨论构建灵活推断模型和灵活生成模型的技术。
2.9 相关的工作
在这里,我们简要讨论在(Kingma 和 Welling,2014)的工作之前和同时进行的相关文献。
(1)Wake-Sleep 算法
- Wake-Sleep 算法(Hinton et al., 1995)是一种在线学习方法,适用于同一类的连续隐变量模型。和我们的方法一样,Wake-Sleep 算法采用近似真实后验的识别模型。Wake-Sleep 算法的一个缺点是,它需要同时优化两个目标函数,而这两个目标函数一起并不对应于边缘似然(界)的优化。Wake-Sleep 的一个优点是:它也适用于具有离散隐变量的模型。 Wake-Sleep 与每个数据点的 AEVB 具有相同的计算复杂性。
(2)传统变分推断
传统变分推断在机器学习领域有着悠久的历史。我们参考 (Wainwright and Jordan, 2008) 对指数族概率图模型变分推断的思想进行全面概述和综合。Wainwright 和 Jordan(2008 年)展示了如何将各种推断算法(例如期望传播、求和积、最大积和许多其他算法)理解为变分推断的精确或近似形式。
- 随机变分推断 (Hoffman 等,2013 年)受到越来越多的关注。
- Blei 等(2012)引入了一种控制变量方案来减少评分函数梯度估计器的方差,并将估计器应用于后验的指数族近似。
- Ranganath 等(2014) 给出了一些通用方法(例如引入了控制变量方案)以减少原始梯度估计的方差。
- Salimans 和 Knowles(2013)在随机变分推断算法的有效版本中使用了与本工作类似的重参数化,用于学习指数族近似分布的自然参数。
- Graves(2011)引入了一个类似的梯度估计器;但方差估计不是关于 $\mathbb{ELBO}$ 梯度的无偏估计量。
(3)自编码器
变分自编码器训练算法揭示了有向概率图模型(用变分目标训练)和自编码器之间的联系。
线性自编码器和某一类生成线性高斯模型之间的联系早已为人所知。Roweis(1998) 表明 PCA 对应于具有先验 $p(\mathbf{z}) = \mathcal{N} (0, I)$ 和条件分布 $p$ 的线性高斯模型的特殊情况的最大似然 (ML) 解 $(\mathbf{x} \mid \mathbf{z}) = \mathcal{N} (x; W_z, I)$,特别是无限小的情况。 在这种限制情况下,隐变量 $p(\mathbf{z} \mid \mathbf{x})$ 的后验是狄拉克 delta 分布: $p(\mathbf{z} \mid \mathbf{x}) = δ(z - W^\prime x)$ ,其中 $W^\prime = (WT W)^{−1}WT$ ,即给定 $W$ 和 $\mathbf{x}$,隐变量 $\mathbf{z}$ 不存在不确定性。
Roweis( 1998)介绍了一种 EM 类型的方法来学习 $W$。更早的工作 (Bourlard 和 Kamp, 1988) 表明线性自编码器的优化可以检索数据中的主要成分。然而,这种使用线性自编码器的方法仅限于线性高斯模型,而我们的方法适用于更广泛的连续隐变量模型。
(4)正则自编码器
当对推断模型和生成模型都使用神经网络时,该组合形成一种具有特定正则化项的自编码器 (Goodfellow et al., 2016):
$$
\tilde{\mathcal{L}}{\boldsymbol{\theta}, \phi}(\mathbf{x} ; \boldsymbol{\epsilon})=\underbrace{\log p{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z})}{\text {Negative reconstruction error }}+\underbrace{\log p{\boldsymbol{\theta}}(\mathbf{z})-\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})}_{\text {Regularization terms }} \tag{2.71}
$$
非正则化的普通自编码器 (Vincent et al., 2010) 的训练准则对应于输入 $\mathbf{x}$ 和隐表示 $\mathbf{z}$ 之间互信息下限的最大化。互信息的最大化(相对于参数)相当于最大化条件熵,其下限是自编码模型下数据的预期对数似然(Vincent et al., 2010),即负重构误差。然而,这种重建标准本身不足以学习有用的表示(Bengio et al., 2013)。因此,已经提出了正则化技术来使自编码器学习有用的表示,例如去噪、收缩和稀疏等自编码器变体(Bengio 等,2013)。 变分自编码器目标包含一个由变分界规定的正则化项,缺少学习有用表示所需的通常令人讨厌的正则化超参数。
(5)编码器-解码器架构模型
相关的还有编码器-解码器架构,例如预测稀疏分解 (PSD) (Kavukcuoglu et al., 2008),我们从中汲取了一些灵感。
同样相关的是最近引入的生成随机网络(Bengio 等,2014),其中含噪声的自编码器学习从数据分布中采样的马尔可夫链的转换算子。
在(Salakhutdinov 和 Larochelle,2010 年)中,识别模型被用于使用深度玻尔兹曼机器进行高效学习。
与我们提出的用于学习一类有向概率图模型的通用算法相比,这些方法针对的是非归一化模型(即像玻尔兹曼机这样的无向模型)或仅限于稀疏编码模型。
(Gregor et al., 2014) 提出的 DARN 方法也使用自编码结构学习有向概率图模型,但是他们的方法适用于二进制隐变量。在平行的工作中,Rezende 等( 2014 )还使用重参数化技巧在自编码器、有向概率图模型和随机变分推断之间建立了联系。他们的工作是独立于我们开发的,并为变分自编码器提供了另外的视角。
(6)评分函数无偏估计方法
除了利用重参数化技巧做 $\mathbb{ELBO}$ 随机梯度的无偏估计外,另一种常用的无偏随机梯度估计是评分函数估计(Kleijnen 和 Rubinstein,1996):
$$
\begin{align*}
\nabla_{\boldsymbol{\phi}} \mathbb{E}{q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} [f (\mathbf{z})] &= \mathbb{E}{q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})} [f (\mathbf{z})\nabla_{\boldsymbol{\phi}} \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})] \tag{2.72}\
&\approx f (\mathbf{z}) \nabla_{\boldsymbol{\phi}} \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) \tag{2.73}
\end{align*}
$$
其中 $\mathbf{z} \sim q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$。
这也被称为 似然比估计器
(Glynn, 1990; Fu, 2006) 和 REINFORCE 梯度估计器
(Williams, 1992)。该无偏估计方法已成功用于多种变分推断方法,如神经变分推断 (Mnih and Gregor, 2014)、黑盒变分推断 (Ranganath et al., 2014)、自动变分推断 (Wingate and Weber, 2013) 和变分随机搜索(Paisley et al., 2012),经常结合各种新颖的控制变量技术 (Glasserman, 2013) 来减少方差。
评分函数估计器的一个优点是它适用于离散的隐变量。
我们不直接与这些技术进行比较,我们只关注连续隐变量,因为在这种情况下,可以利用梯度信息 $\nabla_{\mathbf{z}} \log p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 实现快速的反向传播计算。评分函数估计器仅使用标量值 $\log p_{\boldsymbol{\theta}}(\mathbf{x,z})$,而忽略函数 $\log p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 的梯度信息,通常会导致更高的方差。这已经被实验证实 (Kucukelbir et al., 2017),该文献表明,一个复杂的评分函数估计需要两个数量级的样本才能达到与重参数化估计相同的方差。
与评分函数估计器相比,我们提出的重参数化梯度估计的效率差异可以直观地理解为:在计算 $\mathbb{ELBO}$ 相对于 $\boldsymbol{\phi}$ 的梯度期间,从当前生成参数 $\boldsymbol{\theta}$ 中消除了信息瓶颈。在评分函数估计方法中,此计算受到标量值 $\log p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 的瓶颈约束;而在重参数化方法中,瓶颈约束是更宽的向量 $\nabla_\mathbf{z} \log p_{\boldsymbol{\theta}}(\mathbf{x,z})$。
3 更复杂的推断模型
在本章中,我们将讨论提高推断模型 $q_{\boldsymbol{\phi}}(\mathbf{z \mid x})$ 灵活性的技术。增加推断模型的灵活性和准确性通常会提高变分界 ( $\mathbb{ELBO}$ ) 的紧致度,使其更接近真实的边缘似然目标。
3.1 计算可处理性的需求
(1)高效优化的需求促使人们选择简单的高斯后验分布
为了能够有效地优化 $\mathbb{ELBO}$,推断模型既需要高效的后验密度( $q_{\boldsymbol{\phi}}(\mathbf{z|x})$)计算能力,也需要从中快速采样的能力。因为在每次优化迭代时,上述两种操作都需要对小批量中的每个数据点执行一遍。如果隐变量 $\mathbf{z}$ 是高维的,并且我们希望有效利用 GPU 等并行计算资源,那么使上述操作在 $\mathbf{z}$ 维度上实现可并行性,将有助于提高优化效率。但此需求会限制近似后验 $q(\mathbf{z \mid x})$ 的可选类型。因此,在实际工作中的大部分场景中,人们倾向于选择简单的高斯后验。
(2)真实的后验分布大多并非简单的高斯形式,需要更具表达能力的后验近似
但事实上,我们不仅仅希望计算效率高,同时还希望密度 $q(\mathbf{z \mid x})$ 足够灵活,能够匹配真实的后验分布 $q^*(\mathbf{z \mid x})$,并达到比较严格的变分界。例如,真实的后验分布可能是一个多峰的复杂分布,显然此时用简单的高斯分布无法充分表达对真实分布的近似。
上述两种需求之间似乎有些矛盾,是否有能够权衡两者的高效方法呢?
3.2 提升推断模型的灵活性
近年,在保证一定计算效率的情况下,有效提升推断模型灵活性(即变分分布的表达能力)的研究得到了发展。其中,比较引人瞩目的方法有两种:辅助隐变量法
和 归一化流
。
3.2.1 辅助隐变量
Salimans 等(2015)、Ranganath 等(2016)、 Maaløe 等(2016)提出:通过引入辅助隐变量来提高推断模型的灵活性。
这些方法通过使用连续型的辅助变量 $\mathbf{u}$ 来增强推断模型和生成模型。在该方法中,推断模型被定义为 $\mathbf{u}$ 和 $\mathbf{z}$ 的联合分布,它可以被分解为:
$$
q_\phi(\mathbf{u}, \mathbf{z} \mid \mathbf{x})=q_\phi(\mathbf{u} \mid \mathbf{x}) q_\phi(\mathbf{z} \mid \mathbf{u}, \mathbf{x}) \tag{3.1}
$$
这个用 $\mathbf{u}$ 增强的推断模型,隐式地定义了一个能力更强的隐式边缘分布:
$$
q_\phi(\mathbf{z} \mid \mathbf{x})=\int q_\phi(\mathbf{u}, \mathbf{z} \mid \mathbf{x}) d \mathbf{u} \tag{3.2}
$$
同样地,在生成模型中引入了另外一个新的联合分布: $p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z}, \mathbf{u })$。该联合分布可以分解为:
$$
p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z}, \mathbf{u})=p_{\boldsymbol{\theta}}(\mathbf{u} \mid \mathbf{x}, \mathbf{z}) p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z}) \tag{3.3}
$$
当给定数据分布 $q_{\mathcal{D}}(\mathbf{x})$ 时,带有辅助变量的 $\mathbb{ELBO}$ 目标等价于最小化如下 $\mathbb{KL}$ 散度:
$$
\begin{align*}
&\mathbb{E}{q{\mathcal{D}}(\mathbf{x})}\left[\mathbb{E}{q_\phi(\mathbf{u}, \mathbf{z} \mid \mathbf{x})}\left[\log p{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z}, \mathbf{u})-\log q_\phi(\mathbf{u}, \mathbf{z} \mid \mathbf{x})\right]\right] \tag{3.4}
\
&=D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{x}, \mathbf{z}, \mathbf{u}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z}, \mathbf{u})\right. \tag{3.5}
\end{align*}
$$
回顾 第 2.7 节
讨论的内容:在没有辅助变量时,最大化原始 $\mathbb{ELBO}$ 目标等效于最小化 $D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{x}, \mathbf{z}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right)$,最大化边缘似然目标等效于最小化 $D_{K L}\left( q_{\mathcal{D}, \phi}(\mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{x})\right)$。
我们可以将上述结论推广至带辅助变量的场景:
$$
\begin{align*}
D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{x}, \mathbf{z}, \mathbf{u}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z}, \mathbf{u})\right) &\text{(= ELBO loss with auxiliary variables)}\tag{3.6} \
&=D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{x}, \mathbf{z}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right)+\mathbb{E}{q{\mathcal{D}}(\mathbf{x}, \mathbf{z})}\left[D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{u} \mid \mathbf{x}, \mathbf{z}) | p_{\boldsymbol{\theta}}(\mathbf{u} \mid \mathbf{x}, \mathbf{z})\right)\right] \notag \
&\geq D_{K L}\left(q_{\mathcal{D}, \boldsymbol{\phi}}(\mathbf{x}, \mathbf{z}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right) \text{(= original ELBO objective))} \tag{3.7}\
&=D_{K L}\left(q_{\mathcal{D}}(\mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{x})\right)+\mathbb{E}{q{\mathcal{D}}(\mathbf{x})}\left[D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{z} \mid \mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x})\right)\right] \tag{3.8} \
&\geq D_{K L}\left(q_{\mathcal{D}}(\mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{x})\right) \text{(= Marginal log-likelihood objective)} \tag{3.9}
\end{align*}
$$
从上述个等式可以看出,通过使用辅助变量 $\mathbf{u}$ 来增强变分自编码器,理论上会比 $\mathbb{ELBO}$ 效果更糟:
$$
D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{x}, \mathbf{z}, \mathbf{u}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z}, \mathbf{u})\right) \geq D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{x}, \mathbf{z}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right)
$$
但由于增加隐变量后使得推断模型 $q_{\phi}(\mathbf{z \mid x})$ 更灵活了,所以原始 $\mathbb{ELBO}$ 目标 $D_{KL} \left( q_{\mathcal{D}, \phi} (\mathbf{x,z}) | p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf {z})\right)$ 可以得到改进,其作用甚至超过了 $\mathbb{E}{q{\mathcal{D}}(\mathbf{x}, \mathbf{z})}\left[ D_{K L}\left(q_{\mathcal{D}, \phi}(\mathbf{u}\mid \mathbf{x}, \mathbf{z}) |p_{\boldsymbol{\theta}}( \mathbf{u}\mid \mathbf{x}, \mathbf{z})\right)\right]$ 带来的损失。
(Salimans et al., 2015)、(Ranganath et al., 2016) 和 (Maaløe et al., 2016) 等的工作表明,辅助变量确实可以显著改善模型。
在概率图中引入辅助隐变量是一种(含多层隐变量的)变分自编码器的特殊情况,我们将在 第 4 章
中继续讨论,在该节中,我们在 CIFAR-10 实验中使用了多层隐随机变量。
3.2.2 归一化流
另一种使近似后验更灵活的方法是 归一化流 (Normalizing Flows, NF)
,由 (Rezende and Mohamed, 2015) 在随机梯度变分推断的背景下引入。归一化流方法通过迭代过程构建灵活的后验分布,一般的想法是从一个初始随机变量开始,该变量具有一个相对简单的分布和概率密度函数,然后通过对其应用一系列可逆的参数化变换 $\mathbf{f}_t$,使得最后一次迭代 $\mathbf{z}_T$ 有更灵活的分布(下式中的 $\mathbf{x}$ 表示上下文,但不只是数据点的值 $\mathbf{x}$。在具有多个隐变量层的模型中,其中还包括之前采样过的其他隐变量值):
$$
\begin{align*}
&\boldsymbol{\epsilon}_0 \sim p(\boldsymbol{\epsilon}) \tag{3.10} \
&\text {for } t=1 \ldots T:\tag{3.11} \
&\qquad \boldsymbol{\epsilon}_t=\mathbf{f}t\left(\boldsymbol{\epsilon}{t-1}, \mathbf{x}\right) \tag{3.12}\
&\mathbf{z}=\boldsymbol{\epsilon}_T \tag{3.13}
\end{align*}
$$
根据变量变化原理,该系列变换的总体雅可比可以分解各子变换的雅可比:
$$
\frac{d \mathbf{z}}{d \boldsymbol{\epsilon}0}=\prod{t=1}^T \frac{d \boldsymbol{\epsilon}t}{d \boldsymbol{\epsilon}{t-1}} \tag{3.14}
$$
因此其行列式也可以分解为:
$$
\log \left|\operatorname{det}\left(\frac{d \mathbf{z}}{d \boldsymbol{\epsilon}0}\right)\right|=\sum{t=1}^T \log \left|\operatorname{det}\left(\frac{d \boldsymbol{\epsilon}t}{d \boldsymbol{\epsilon}{t-1}}\right)\right| \tag{3.15}
$$
也就是说,只要能够计算每一个变换 $\mathbf{f}_t$ 的雅可比行列式,我们就能够计算最后一次迭代的复杂概率密度函数:
$$
\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})=\log p\left(\boldsymbol{\epsilon}0\right)-\sum{t=1}^T \log \operatorname{det}\left|\frac{d \boldsymbol{\epsilon}t}{d \boldsymbol{\epsilon}{t-1}}\right| \tag{3.16}
$$
归一化流思想将复杂概率密度的计算,转换成一系列子变换的成绩,如果这些子变换足够简单且计算效率高,则可以帮助我们实现高效计算密度和保持近似分布灵活性的双重目标。
一种拓展形式
Rezende 和 Mohamed(2015)尝试了一种新的变换形式:
$$
\mathbf{f}t\left(\boldsymbol{\epsilon}{t-1}\right)=\boldsymbol{\epsilon}{t-1}+\mathbf{u} h\left(\mathbf{w}^T \boldsymbol{\epsilon}{t-1}+b\right) \tag{3.17}
$$
其中 $\mathbf{u}$ 和 $\mathbf{w}$ 是向量,$\mathbf{w}^T$ 是 $\mathbf{w}$ 转置后,$b$ 是标量,$h(\cdot)$ 是非线性的,因此 $\mathbf{u} h\left(\mathbf{w}^T \mathbf{z}_{t-1}+b\right)$ 可以被解释为一个包含瓶颈隐藏层(只有一个单元)的多层感知机。这种形式的流很难被扩展到高维隐空间:因为信息通过单个瓶颈,因此需要一长串转换来捕获高维的依赖关系。
3.3 自回归变换与逆自回归变换
为了找到一种可以很好地扩展到高维空间的归一化流,Kingma 等(2016)分析了类似 MADE (Germain 等, 2015)、PixelCNN (Van Oord 等,2016)等自回归模型的高斯版本。
设 $\mathbf{y}$ 是此类模型建模的一个变量(如一幅图像),其元素 $\mathbf{y}=\left{y_i\right}_{i=1}^D$ 存在某种排序(如像素按行列排序)。我们使用 $[\boldsymbol{\mu}(\mathbf{y}), \boldsymbol{\sigma}(\mathbf{y})]$ 来表示由向量 $\mathbf{y}$ 到均值向量 $\boldsymbol{\mu}$ 和方差向量 $\boldsymbol{\sigma}$ 转换的函数。自回归结构使得该函数关于变量 $\mathbf{y}$ 的雅可比是对角线为零的三角矩阵,即当 $j \geq i$ 时,$\partial\left[\boldsymbol{\mu}_i, \boldsymbol{\sigma}i\right] / \partial \mathbf{y}j =[0,0]$ 。元素 $\left[\mu_i\left(\mathbf{y}{1: i-1}\right), \sigma_i\left(\mathbf{y}{1: i-1}\right) \right]$ 是根据 $\mathbf{y}$ 的前 $i-1$ 个元素预测的第 $i$ 个元素的均值和标准差。
从自回归模型中采样,等价于从噪声向量 $\boldsymbol{\epsilon} \sim \mathcal{N}(0, \mathbf{I})$ 开始,经过一系列变换到达向量 $\mathbf{y}$,其中:
- $y_0=\mu_0+\sigma_0 \odot \epsilon_0$
- 对于 $i>0$,$y_i=\mu_i\left(\mathbf{y}{1: i-1}\right)+\sigma_i\left(\mathbf {y}{1: i-1}\right) \cdot \epsilon_i$。
显然,上述系列变换所涉及的计算量与变量 $\mathbf{y}$ 的维度 $D$ 成正比。
上述顺序变换的逆变换对于归一化流非常有价值,因为只要对所有的 $i$ 都有 $\sigma_i>0$,那么上述总体采样变换过程就是一对一可逆的:
$$
\epsilon_i=\frac{y_i-\mu_i\left(\mathbf{y}{1: i-1}\right)}{\sigma_i\left(\mathbf{y}{1: i-1}\right)} \tag{3.18}
$$
Kingma 等(2016)提出了两个对于归一化流很重要的观察结果:
第一个关键观察是:这种逆变换可以实现并行化,因为(在自回归模型情况下)各个元素的 $\epsilon_i$ 计算不相互依赖。其向量化变换形式为:
$$
\boldsymbol{\epsilon}=(\mathbf{y}-\boldsymbol{\mu}(\mathbf{y})) / \boldsymbol{\sigma}(\mathbf{y}) \tag{3.19}
$$
其中减法和除法是逐元素的。
第二个关键观察是:这种逆自回归运算具有简单的雅可比行列式。请注意,当 $j \geq i$ 时,自回归结构具有 $\partial\left[\mu_i, \sigma_i\right] / \partial y_j=[0,0]$。 因此,逆变换具有下三角的雅可比矩阵( $\partial \epsilon_i / \partial y_j=0\text{ for } j>i$ ),其具有非常简单的对角线形式:$\partial \epsilon_i / \partial y_i=\frac{1}{\sigma_i}$。下三角矩阵的行列式等于对角项的乘积,因此变换的雅可比的对数行列式非常简单且易于计算:
$$
\log \operatorname{det}\left|\frac{d \boldsymbol{\epsilon}}{d \mathbf{y}}\right|=\sum_{i=1}^D-\log \sigma_i(\mathbf{y}) \tag{3.20}
$$
模型灵活性、跨维度可并行性和简单的对数行列式计算几个特点相结合,使的在高维隐空间中使用此类转换实现归一化流变得非常有价值。
在后续章节中,我们将使用稍微不同但同等灵活的变换形式:
$$
\boldsymbol{\epsilon}=\boldsymbol{\sigma}(\mathbf{y}) \odot \mathbf{y}+\boldsymbol{\mu}(\mathbf{y}) \tag{3.21}
$$
其对应的对数行列式具有如下形式:
$$
\log \operatorname{det}\left|\frac{d \boldsymbol{\epsilon}}{d \mathbf{y}}\right|=\sum_{i=1}^D \log \sigma_i(\mathbf{y}) \tag{3.22}
$$
3.4 逆自回归流
Kingma 等(2016)提出了基于一系列变换的逆自回归流 (IAF),其中每个变换都等效于 式(3.19)
和 式 (3.21)
的自回归逆变换。采用该流模型进行近似后验估计的伪代码见 算法 3
。我们用一个编码器神经网络输出初始的 $\boldsymbol{\mu}_0$ 和 $\boldsymbol{\sigma}_0$,同时输出一个额外的 $\mathbf{h}$ 用作流中下一个步骤的输入。链的初始化采用可因子分解的高斯 $q_\phi\left(\mathbf{z}_0 \mid \mathbf{x}\right)=\mathcal{N}\left(\boldsymbol{\mu}_0, \operatorname {diag}\left(\boldsymbol{\sigma}_0\right)^2\right)$ :
$$
\begin{align*}
\boldsymbol{\epsilon}_0 & \sim \mathcal{N}(0, I) \tag{3.23}\
\left(\boldsymbol{\mu}_0, \log \boldsymbol{\sigma}_0, \mathbf{h}\right) &=\text { EncoderNeuralNet }(\mathbf{x} ; \boldsymbol{\theta}) \tag{3.24}\
\mathbf{z}_0 &=\boldsymbol{\mu}_0+\boldsymbol{\sigma}_0 \odot \boldsymbol{\epsilon}_0 \tag{3.25}
\end{align*}
$$
然后,逆自回归流由以下 $T$ 转换链组成:
$$
\begin{align*}
\left(\boldsymbol{\mu}_t, \boldsymbol{\sigma}_t\right) &=\text { AutoregressiveNeuralNet }{ }t\left(\boldsymbol{\epsilon}{t-1}, \mathbf{h} ; \boldsymbol{\theta}\right) \tag{3.26}\
\boldsymbol{\epsilon}_t &=\boldsymbol{\mu}_t+\boldsymbol{\sigma}t \odot \boldsymbol{\epsilon}{t-1}\tag{3.27}
\end{align*}
$$
此流程的每一步都是 式(3.19)
和 式 (3.21)
中变换的逆变换,并且每一步都使用一个单独的自回归神经网络。依据 式 (3.16)
,最终迭代得到的分布为:
$$
\begin{align*}
\mathbf{z} & \equiv \boldsymbol{\epsilon}T \tag{3.28} \
\log q(\mathbf{z} \mid \mathbf{x}) &=-\sum{i=1}^D\left(\frac{1}{2} \epsilon_i^2+\frac{1}{2} \log (2 \pi)+\sum_{t=0}^T \log \sigma_{t, i}\right) \tag{3.29}
\end{align*}
$$
最终迭代 $\boldsymbol{\epsilon}_T$ 的灵活性以及其与真实后验之间的拟合紧致度,将会随着自回归模型的表达能力和链深度的增加而增加。有关计算的说明,请参见 图 3.1
。
受 LSTM 类型
的启发,后来又提出了一种数值稳定的版本。在该版本中,让自回归网络输出两个无约束的实值向量 $\left(\mathbf{m}_t, \mathbf{s}_t\right)$,并计算 $\boldsymbol{\epsilon}_t$ 为:
$$
\begin{align*}
\left(\mathbf{m}_t, \mathbf{s}_t\right) &=\text { AutoregressiveNeuralNet }{ }t\left(\boldsymbol{\epsilon}{t-1}, \mathbf{h} ; \boldsymbol{\theta}\right) \tag{3.30} \
\boldsymbol{\sigma}_t &=\operatorname{sigmoid}\left(\mathbf{s}_t\right) \tag{3.31} \
\boldsymbol{\epsilon}_t &=\boldsymbol{\sigma}t \odot \boldsymbol{\epsilon}{t-1}+\left(1-\boldsymbol{\sigma}_t\right) \odot \mathbf{m}_t \tag{3.32}
\end{align*}
$$
此版本已经展示在 算法 3
中。注意,这只是 式(3.27)
更新的特定版本,所以对 式 (3.29)
的最终对数密度的简单计算仍然适用。
新的研究结果发现:参数化或初始化每个 $\text{AutoregressiveNeuralNet}_t$ 的参数是有益的,这样它的输出 $\mathbf{s}_t$ 在优化之前是足够正的(例如接近 $+1$ 或 $+2$)。这导致在逆自回归流的每个步骤中仅略微更新 $\epsilon$。正如 Jozefowicz 等在 2015 年所研究的那样,这种参数化在 LSTM
中被称为 “遗忘门偏置”。
很容易看出:逆自回归流的一个特殊情况,即仅有一个步骤和一个线性自回归模型,这正对应前面讨论的完全高斯后验。这会将具有对角协方差的高斯变量转换为具有线性依赖性的变量,也就是具有完全协方差的高斯分布。
自回归神经网络为逆自回归流形成了一个非常丰富的非线性变换族:
- 对于非卷积模型来说,可以使用 (Germain et al., 2015) 中引入的掩膜自回归网络族作为自回归神经网络
- 对于卷积模型来说(如 CIFAR-10 实验),可以使用 (Van Oord 等,2016;Van den Oord 等,2016) 引入的卷积自回归自编码器族
已经有研究发现:在逆自回归流链中的每个步骤之后反转变量顺序,会改善最终结果。由于这是一个保体积变换,所以 式 (3.29)
的简单形式保持不变。
图 3.1:与其他归一化流一样,使用逆自回归流 (IAF)(Kingma 等,2016 年)从近似后验中抽取样本从具有易处理密度的分布开始,例如具有对角协方差的高斯分布,然后是一个链z 的非线性可逆变换,每个变换都有一个简单的雅可比行列式。最终迭代具有灵活的分布。
图 3.2:最好用彩色观看。我们分别采用球形高斯先验(a) 和因子化高斯后验 (b) 、逆自回归流 (IAF) 后验 (c) ,将变分自编码器 (VAE) 拟合到具有四个数据点的玩具数据集。每个彩色簇对应于一个数据点的后验分布。 IAF 极大地提高了后验分布的灵活性,并允许后验和先验之间进行更好的拟合。
3.5 相关工作
正如我们所解释的,逆自回归流 (IAF) 是归一化流家族的成员,首次在 (Rezende 和 Mohamed, 2015) 中在随机变分推断的背景下进行了讨论。在(Rezende 和 Mohamed,2015 年)中,介绍了两种特定类型的流动:平面流( 方程(3.17)
)和径向流。这些流被证明对具有相对低维隐空间的问题是有效的。然而,目前尚不清楚如何将这些流扩展到更高维的隐空间,例如更大尺寸图像生成模型的隐空间,以及平面和径向流如何利用隐空间的拓扑结构。就像 IAF 一样,体积守恒的神经结构首先在 (Deco and Brauer, 1995) 中提出,作为非线性独立分量分析的一种形式。
(Dinh et al., 2014) (NICE) 引入的另一种归一化流使用与 IAF 类似的转换。与 IAF 相比,NICE 直接应用于生成模型中的可观测变量。 NICE 是一种转换类型,每步仅更新一半变量 $\mathbf{z}{1:D/2}$,添加一个向量 $f (\mathbf{z}{\frac{D}{2}+1:D})$,它是剩余隐变量 $\mathbf{z}_{\frac{D}{2} + 1:D}$ 的基于神经网络的函数。这种大块具有逆变换计算成本低的优点,以及需要更长链的缺点。在实验中,(Rezende 和 Mohamed,2015)发现,在低维隐空间的实验中,这种类型的转换通常不如其他类型的归一化流强大。在我们工作的同时,NICE 在 (Dinh et al., 2016) (Real NVP) 中扩展到高维空间。
另一种比较有潜力的变换是哈密顿变分推断中使用的哈密顿流 (Salimans et al., 2015)。在这里,通过模拟由隐变量 $\mathbf{z}$ 和一组辅助动量变量组成的哈密顿系统的流来生成变换。这种类型的变换有一个额外的好处,它是由精确的后验分布引导的,因此对于较小的步长能够保持分布的不变性。如果可以应用足够多的次数,这种转换可以使我们任意接近精确的后验分布。不过,在实际工作中,哈密顿变分推断对计算的要求非常高。此外,它需要一个辅助变分界来解释辅助变量,如果该界不够紧致,可能会阻碍进程。
增加变分推断灵活性的另一种方法是引入辅助隐变量以及相应的辅助推断模型(Salimans et al., 2015; Ranganath et al., 2016; Tran et al., 2015),在 第 3.2.1 节
已经讨论过。具有多层随机变量的隐变量模型,例如我们在实验中使用的模型,通常等同于这种辅助变量方法。我们在实验中将深度隐变量模型与逆归一化流结合在一起,同时受益于这两种技术。
4 更深的生成模型
在上一章中,我们解释了改进推断模型的高级策略。在本章中,我们将回顾学习更深层生成模型的策略(例如使用多个隐变量或可观测变量进行推断和学习),以及提高生成模型 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 灵活性的技术。
4.1 具有多个隐变量的推断和学习
生成模型 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 和推断模型 $q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 可以参数化为任何有向计算图。 $\mathbf{x}$ 和 $\mathbf{z}$ 都可以由多个变量(可能具有某种拓扑顺序)组成。在变分自编码器框架中,如何优化生成模型形式上可能不是很明显,但实际上非常简单。
令 $\mathbf{z} = {\mathbf{z}1, \ldots, \mathbf{z}K}$ 和 $q{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) = q{\boldsymbol{\phi}} (\mathbf{z}_1, \ldots, \mathbf{z}_K|\mathbf{x})$,其中下标对应于隐变量的拓扑排序。
给定一个数据点 $\mathbf{x}$,生成模型的 $\mathbb{ELBO}$ 的估计包括两个步骤:
第一步:从 $\mathbf{z} \sim q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ 中采样 。在多个隐变量的情况下,这意味着按照推断模型有向图的定义,沿着拓扑排序进行一一的祖先采样。在伪代码中,祖先采样步骤如下所示:
$$
\begin{align*}
\text{for } i &= 1…K : \tag{4.1} \
\mathbf{z}i &\sim q{\boldsymbol{\phi}} (\mathbf{z}_i | \text{Pa}(\mathbf{z}_i )) \tag{4.2}
\end{align*}
$$
其中 $\text{Pa}(\mathbf{z}_i)$ 是推断模型中变量 $\mathbf{z}_i$ 的父代 $\mathbf{z}_i$,其中可能包括 $\mathbf{x}$。在重参数化(和可微分)的形式中,这是:
$$
\begin{align*}
\text{for } i &= 1…K :\tag{4.3} \
\boldsymbol{\epsilon}_i &\sim p(\boldsymbol{\epsilon}_i)\tag{4.4} \
\mathbf{z}_i &= \mathbf{g}_i(\boldsymbol{\epsilon}_i, \text{Pa}(\mathbf{z}_i), \boldsymbol{\phi} )\tag{4.5}
\end{align*}
$$
第二步:在生成的样本 $\mathbf{z}$ 和数据点 $\mathbf{x}$ 处计算单点的标量值($\log p_{\boldsymbol{\theta}}(\mathbf{x,z}) - \log q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x})$ )。该标量是对数 $p_{\boldsymbol{\theta}}(\mathbf{x})$ 的无偏随机估计的下界。它也可以使用随机梯度下降进行微分和优化。
4.1.1 排序的选择
需要注意的是:推断模型的隐变量拓扑排序可以不同于生成模型的排序。
由于推断模型以数据作为根节点,而生成模型将数据作为叶节点,一个(在某种意义上)逻辑选择是让推断模型中隐变量的拓扑排序与生成模型中的排序相反。
多项工作(Salimans,2016;Sønderby 等,2016a;Kingma 等,2016)已经表明,让生成模型和推断模型共享隐变量的拓扑排序可能是有利的。其中两种排序选择如 图 4.1
所示。正如这些文献中所解释的,共享排序的优点在于:这使我们能够轻松地在推断模型和生成模型之间共享参数,从而实现更快的学习和更好的解决方案。
图 4.1:取自 Kingma 等,2016 年的插图,展示了推断模型的两种方向性选择。如 (b) 所示,共享推断方向性的好处是:它允许在生成模型和推断模型之间直接共享参数。
要了解为什么这可能是一个好主意,请注意隐变量的真实后验是先验的函数:
$$
p_{\boldsymbol{\theta}}(\mathbf{z} \mid \mathbf{x}) ∝ p_{\boldsymbol{\theta}}(\mathbf{z})p_{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}) \tag{4.6}
$$
同样,给定其在生成模型中的父变量,隐变量的后验是:
$$
p_{\boldsymbol{\theta}}(\mathbf{z}_i|x, \text{Pa}(\mathbf{z}i)) ∝ p{\boldsymbol{\theta}}(\mathbf{z}_i| \text{Pa}(\mathbf{z}i))p{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}i, \text{Pa}(\mathbf{z}_i) )) \tag{4.7}
$$
生成模型的优化同时改变 $p_{\boldsymbol{\theta}}(\mathbf{z}_i| \text{Pa}(\mathbf{z}i))$ 和 $p{\boldsymbol{\theta}}(\mathbf{x} \mid \mathbf{z}i, \text{Pa}(\mathbf{z}i))$ 。通过耦合推断模型 $q{\boldsymbol{\phi}} (\mathbf{z}_i|x, \text{Pa}(\mathbf{z}i))$ 和 先验 $p{\boldsymbol{\theta}}(\mathbf{z}_i| \text{Pa}(\mathbf{z}i))$,且 $p{\boldsymbol{\theta}}(\mathbf{z}_i| \text{Pa}(\mathbf{z}i))$ 的变化可以直接反映在 $q{\boldsymbol{\phi}} (\mathbf{z}_i| \text{Pa}(\mathbf{z}_i))$ 的变化中。
当 $p_{\boldsymbol{\theta}}(\mathbf{z}_i| \text{Pa}(\mathbf{z}_i))$ 是高斯分布时,这种耦合尤其简单。推断模型可以直接指定为该高斯分布的乘积,具有学习的二次伪似然项:
$$
q_{\boldsymbol{\phi}} (\mathbf{z}_i| \text{Pa}(\mathbf{z}i), x) = p{\boldsymbol{\theta}}(\mathbf{z}_i \mid \text{Pa}(\mathbf{z}_i) ) \tilde{l} ( \mathbf{z}_i; \mathbf{x}, \text{Pa}(\mathbf{z}_i))/Z
$$
其中 $\mathbf{z}$ 易于计算。 (Salimans, 2016) 和 (Sønderby et al., 2016a) 开发了这个想法。原则上,此想法可以扩展到更一般的共轭先验类别,但在撰写本文时尚没有这方面的工作。
(Kingma et al., 2016) 探索的一个约束较少的变体是:简单地让 $q_{\boldsymbol{\phi}} (\mathbf{z}_i| \text{Pa}(\mathbf{z}i), x)$ 的参数化神经网络,部分地由 $p{\boldsymbol{\theta}}$ 的参数化神经网络指定( $\mathbf{z}_i| \text{Pa}(\mathbf{z}_i)$ )。一般来说,我们可以让两个分布共享参数。这允许更复杂的后验,例如归一化流或逆自回归流。
4.2 提高表达能力的多种方法
通常,特别是对于大型数据集,我们希望选择一个表达力较强的有向模型类,这样它就可以可行地逼近真实分布。指定表达模型的流行策略是:
- 隐变量方法:将隐变量引入有向模型,并通过(摊销)变分推断进行优化,如本文所述。
- 自回归方法:完全自回归:将分布分解为单变量的条件分布,或至少是非常低维的条件分布(
第 4.3 节
)。 - 流方法:通过具有易处理的雅可比行列式的可逆变换指定分布 (
第 4.4 节
)。
完全自回归模型的合成相对较慢,因为从这些模型合成的计算长度在数据维度上是线性的。完全自回归模型的对数似然计算长度不一定随数据的维度而缩放。在这方面,当 $\mathbf{x}$ 非常高维时,引入隐变量以提高表现力尤其有趣。由于可并行性,在高维变量上指定有向模型,其中每个条件分解为独立分布,相对简单且计算上有吸引力。例如,如果让 $p_{\boldsymbol{\theta}}(\mathbf{x}|\text{Pa}(\mathbf{x}j)) = \prod k p{\boldsymbol{\theta}}(\mathbf{x}_j,k | \text{Pa}(\mathbf{x}_j))$,其中每个因子都是单变量高斯,其均值和方差是非线性函数(由神经网络指定),则对数似然的合成和评估的计算可以在维度 $k$ 上完全并行化。有关证明合成速度提高 $100$ 倍的实验,请参见 (Kingma et al., 2016)。
迄今为止,就测试数据获得的对数似然而言,最好的模型采用了上面列出的三种方法的组合。
4.3 自回归模型
对高维数据建模的一个强有力的策略是将高维观测变量分成小的组成部分(通常是一维部分,或者只是具有少量维的部分),强加一定的顺序,然后将其依赖关系建模为有向图模型。得到的有向图模型将联合分布分解为因子的乘积:
$$
p_{\boldsymbol{\theta}}(\mathbf{x}) = p_{\boldsymbol{\theta}}(\mathbf{x}1, …, \mathbf{x}D) = p{\boldsymbol{\theta}}(\mathbf{x}1) \prod^T{j=2} p{\boldsymbol{\theta}}(\mathbf{x}_j| \text{Pa}(\mathbf{x_j} )) \tag{4.8}
$$
其中 D 是数据的维度。上述模型被称为 自回归 (Autoregressiv Models,AR) 模型
。在基于神经网络的自回归模型中,我们用神经网络来参数化条件分布:
$$
p_{\boldsymbol{\theta}}(\mathbf{x}j | \mathbf{x}{<j}) = p_{\boldsymbol{\theta}}(\mathbf{x}j | \text{ NeuralNet}^j{\boldsymbol{\theta}}(\text{Pa}(\mathbf{x}_j))) \tag{4.9}
$$
如果是连续数据,自回归模型可以解释为更一般方法的特例:学习从数据到已知简单分布(例如高斯或均匀分布)的可逆变换;这种具有可逆变换的方法在 第 4.4 节
中讨论。自回归模型和可逆变换技术可以自然地与变分自编码器结合使用,在撰写本文时,最好的系统使用 Rezende 和 Mohamed,2015 的组合;Kingma 等,2016; Gulrajani 等,2017。
与隐变量模型相比,自回归模型的缺点是:
- 自回归模型的祖先采样是一个长度为 $O(\mathcal{D})$ 的顺序运算,其长度与数据维度成正比。
- 自回归模型还需要选择输入元素的特定顺序(
式(4.8)
)。当不存在单一的自然一维排序时(例如在二维图像中),这会导致模型具有某些令人尴尬的归纳偏好。
4.4 具有易处理雅可比行列式的可逆变换
在连续数据的情况下,自回归模型可以被解释为归一化流的一种特殊情况。归一化流方法使用易处理的雅可比行列式学习从数据到已知简单分布(例如高斯分布或均匀分布)的可逆变换。如果将神经网络用于这种可逆映射,则会形成一种强大而灵活的方法,可用于连续数据的概率建模和非线性独立分量分析(Deco 和 Brauer,1995)。
归一化流迭代地将一个变量更新至目标分布,而且该变量被限制为与数据具有相同的维度。这种对映射中间状态维度的约束,可能使其比没有此约束的方法更难优化。
另一方面,归一化流的显著优势是:似然及其梯度是易于处理的。在(Dinh 等,2014 年;Dinh 等,2016 年)的工作中,引入了特别有趣的流(NICE 和 Real NVP),在两个方向上具有相同的计算成本和深度,因此其优化和采样都相对容易。
在撰写本文时,尚未证明此类模型在数据的对数似然方面能够产生与纯自回归或基于变分自编码器的模型相似的性能,但这仍然是一个活跃的研究领域。
4.5 后续工作
深度生成式模型和变分自编码器的一些重要应用和动机是:
- 表示学习:学习更好的数据表示。它的一些用途包括:
– 数据高效的学习,例如半监督学习
– 数据的低维流形可视化 - 人工创造:在数据之间做内插,或从数据做外推。
在这里,我们现在将重点介绍表示学习和人工创造的一些具体应用。
4.5.1 表示学习
在监督学习的情况下,我们通常旨在学习条件分布:在给定另一个变量值的情况下,预测一个变量可能值的分布。其中一个典型问题是图像分类:给定一张图像,预测在可能的类标签上的分布。在一年一度的 ImageNet 竞赛中(Russakovsky et al., 2015),很明显深度卷积神经网络(LeCun et al., 1998; Goodfellow et al., 2016)(CNNs)在给定大量标记图像的情况下,非常擅长解决图像分类任务。基于残差网络的现代版本 CNN 是 LSTM 型神经网络的一种变体(Hochreiter 和 Schmidhuber,1997),现在可以在这项任务上已经能够达到人类级别的分类精度(He 等,2015;He 等, 2016)。
但当标记样本数量较少时,使用纯监督方法找到的解决方案往往缺乏对新数据的泛化能力。在这种情况下,生成式模型可以用作一种有效类型的正则化。一种策略是在输入变量上与变分自编码器联合优化分类模型( Kingma 等,2014 ),在两者之间共享参数。此时,变分自编码器提供了一个辅助目标,提高了分类解决方案的数据效率。通过在不同建模问题之间共享统计强度,可以大大改善监督分类的错误率。
基于变分自编码器的技术现在是半监督分类中最先进的技术之一(Maaløe 等,2016 年),当利用每个类仅有 $10$ 个已标记图像的样本进行训练时(意味着去除了超过 $99.8%$ 的样本点),在 MNIST 数据集上的分类误差平均低于 $1%$。在(Rezende et al., 2016a)的并行工作中,当每个类只有一个样本时,基于变分自编码器的半监督学习还能做得很好。
GoogLeNet 监督学习模型 (Szegedy et al., 2015) 在 ImageNet 验证集上实现了接近最先进的性能,在仅使用 $1%$ 的训练样本时,其 top-1 分类准确率仅有约 $5%$,如 (Pu et al., 2016) 所示。相比之下,当与已标记和未标记的输入图像联合对标签建模时,使用变分自编码器的半监督方法在同一任务上实现了约 $45%$ 的分类准确率。
4.5.2 对数据的理解和人工创造力
具有隐空间的生成式模型使我们能够将数据转换到更简单的隐空间,进而在隐空间中进行数据探索,以便更好地理解数据。此外,深度生成式模型应用的一个相关分支是合成具有某些理想属性的、似是而非的伪数据,有时被称为人工创造。
(1)化学设计
Gómez-Bombarelli 等(2018)展示了最近在科学上应用人工创造的一个例子。在该文中,在数十万个现有化学结构上训练了一个相当简单的变分自编码器。生成的连续表示(隐空间)随后被用于对某些性质执行基于梯度的优化;该方法在类药物分子和有机发光二极管的设计上得到验证。见 图 4.2
。
图 4.2:(a) 变分自编码器在化学设计中的应用(Gómez-Bombarelli 等,2018 年)。在大型分子数据集上学习分子的隐连续表示 $\mathbf{z}$。 (b) 这种连续表示能够以最大化 $f (\mathbf{z})$(代表了某种所需的特性)为条件, 实现基于梯度的新分子搜索。
(2)自然语言合成
Bowman 等(2015)使用类似方法,从连续空间生成自然语言句子。该文展示了如何在文本上成功训练 变分自编码器。该模型被证明可以成功地在句子之间进行插值,并且能够对缺失的单词进行填充。见图 4.3
。
图 4.3:VAE 在句子对之间插值的应用,来自(Bowman 等,2015)。中间句子在语法上是正确的,主题和句法结构通常在局部是一致的。
(3)天文学
在(Ravanbakhsh 等,2017)中,变分自编码器被应用于模拟对遥远星系的观测。这有助于校准需要间接检测遥远星系观测剪切的系统,这通常是由地球与这些星系之间的暗物质弱引力透镜效应造成的。由于透镜效应如此微弱,因此此类系统需要使用具有已知剪切量的真实图像进行校准。由于真实数据有限,因此提出的解决方案是使用深度生成式模型来人工合成伪数据。
(4)图像(重新)合成
一个流行的应用是图像(重新)合成。可以对变分自编码器进行优化,以在图像上形成生成式模型。可以从生成式模型合成图像,但推断模型(或编码器)也允许将真实图像编码到隐空间中。可以修改这个隐空间中的编码,然后将图像解码回可观测空间。观测空间中相对简单的变换,例如线性变换,通常会转化为对原始图像进行语义上有意义的修改。正如 White 在 2016 年所展示的,一个示例是沿着 “微笑矢量” 对隐空间中的图像进行修改,以使它们看起来更快乐或更悲伤。示例见 图 4.4
。
图 4.4:变分自编码器可用于图像再合成。在 White,2016 年的这个示例中,原始图像(左)在隐空间中沿微笑矢量方向进行修改,产生从微笑到悲伤的一系列原始图像。
4.5.3 其他相关后续工作
遗憾的是,我们没有足够的空间深入讨论所有后续工作,但这里将重点介绍一些相关的近期工作。
(1)重参数化技巧的相关工作
除了我们的原始出版物(Kingma 和 Welling,2014 年)之外,后来的两篇论文提出了等效算法(Rezende 等,2014 年;Lázaro-Gredilla,2014 年),后者的工作将相同的重参数化梯度方法应用于估计参数后验,而不是摊销的隐变量推断。
在 (Kingma and Welling, 2014) 的附录中,我们建议将重参数化梯度应用于参数后验的估计。在 (Blundell et al., 2015) 中,这种方法(采用混合高斯先验并被命名为反向传播贝叶斯
)被用于实验,并取得了一些有希望的早期结果。
在 (Kingma et al., 2015) 中,我们描述了一种改进方法,即局部重参数化技巧,用于进一步降低梯度估计的方差,并将其应用于高斯参数后验的估计。
进一步的结果在(Louizos 等,2017;Louizos 和 Welling,2017;Louizos 和 Welling,2016)中提出,其中先验和近似后验的选择越来越复杂。
在(Kingma et al., 2015; Gal and Ghahramani, 2016)中,重参数化技巧被用于分析如何将 Dropout 作为贝叶斯方法(结合变分 Dropout)。在 (Molchanov et al., 2017) 中,对该方法进行了进一步分析和改进。
各种论文已经应用重参数化梯度来估计参数后验,包括 (Fortunato et al., 2017) 在递归神经网络背景下和 (Kucukelbir et al., 2017) 更普遍地用于贝叶斯模型和 (Tran et al., 2017) ) 用于深度概率编程。在 (Tran et al., 2015) 中提出了一个基于高斯过程的贝叶斯非参数变分族,也使用重参数化梯度。
(2)归一化流的相关工作
归一化流(Rezende 和 Mohamed,2015 年)被提议作为提高推断模型灵活性的框架。Kingma 等(2016 )提出了第一个归一化流,它可以很好地扩展到高维隐空间。相同原理后来在 (Papamakarios et al., 2017) 中应用于对概率分布进行估计,并在 (Huang et al., 2018) 中进一步细化。在 (Tomczak and Welling, 2016; Tomczak and Welling, n.d.) 和 (Berg et al., 2017) 中提出了各种形式的其他流。
(3)辅助变量法的相关工作
作为归一化流的替代方案(或结合使用),也可以使用辅助变量来提高后验灵活性。据我们所知,该原理最早是 Salimans 等(2015)提出的。在该文中,辅助变量原理被用于将变分推断与哈密顿蒙特卡罗 (HMC) 相结合,HMC 的动量变量成为辅助变量。
辅助变量在 (Maaløe et al., 2016) 中作为辅助深度生成式模型进行了更详细的讨论。类似地,可以使用具有多个随机层的深度模型来改善变分界,如 (Sønderby 等,2016a) 和 (Sønderby 等,2016b) 中的阶梯变分自编码器那样。
(4)离散型隐变量的相关工作
对于离散型隐变量的梯度方差减少,已经有大量非重参数化梯度的后续工作。这些建议包括 NVIL (Mnih and Gregor, 2014)、MuProp (Gu et al., 2015)、蒙特卡洛目标的变分推断 (Mnih and Rezende, 2016)、Concrete 分布 (Maddison et al., 2017) 和分类重参数化使用 Gumbel-Softmax(Jang 等,2017)。
(5)目标函数的相关工作
如 (Burda et al., 2015) (Importance-Weighted Autoencoders) 中提出的,$\mathbb{ELBO}$ 目标可以概括为重要性加权目标。这可能会减少梯度的方差,但这里没有深入讨论,因为(与重要性加权估计器的情况一样)很难扩展到高维隐空间。
已经提出了其他目标,例如 Rényi 散度变分推断 (Li and Turner, 2016)、Generative Moment Matching Networks (Li et al., 2015)、基于归一化的目标,例如 NICE 和 RealNVP 流 (Sohl-Dickstein et al., 2015;Dinh 等,2014 年),黑盒 α-散度最小化(Hernánde\mathbf{z}_{L}obato 等,2016 年)和双向亥姆霍兹机(Bornschein 等,2016 年)
已经提出了具有对抗性目标的各种组合。在(Makhzani 等,2015 年)中,提出了“对抗性自编码器”(AAE),这是一种使用生成对抗网络(GAN)(Goodfellow 等,2014 年)执行变分推断的概率自编码器。在 (Dumoulin et al., 2017) 中,提出了对抗学习推断 (ALI),旨在最小化联合分布 $q_{\boldsymbol{\phi}} (\mathbf{x,z})$ 和 $p_{\boldsymbol{\theta}}(\mathbf{x,z})$ 之间的生成对抗网络目标。还提出了其他混合体(Larsen 等,2016;Brock 等,2017;Hsu 等,2017)。
(6)图像建模的相关工作
生成式模型最突出、最困难的应用之一是图像建模。
在 (Kulkarni et al., 2015) (Deep convolutional inverse graphics network) 中,基于 (Dosovitskiy et al., 2015) 提出的用于图像合成的卷积网络的工作,卷积变分自编码器被应用于图像建模并取得了一些成功。
在 (Gregor et al., 2015) (DRAW) 中,注意力机制与循环推断模型和循环生成式模型相结合用于图像合成。这种方法在 (Gregor et al., 2016) (Towards Conceptual Compression) 中进一步扩展了卷积网络,可扩展到更大的图像,并应用于图像压缩。 在 (Kingma et al., 2016) 中,深度卷积推断模型和生成式模型也被应用于图像。
此外,(Gulrajani et al., 2017) (Pixel变分自编码器) 和 (Chen et al., 2017) (Variational Lossy Autoencoder) 将卷积变分自编码器与 PixelCNN 模型 (Van Oord et al., 2016; Van den Oord et al., 2016)。在(Kingma 等,2014;Yan 等,2016;Mansimov 等,2015;Brock 等,2017;White,2016)中研究了用于从属性或文本生成受控图像的方法和变分自编码器架构。
基于灰色图像预测像素颜色是另一个有前途的应用(Deshpande et al., 2017)。 (Kingma et al., 2014; Pu et al., 2016; Xu et al., 2017)以及其他工作已经研究了半监督学习的应用。
(7)文本和序列数据的相关工作
变分自编码器的另一个突出应用是文本和/或序列数据的建模(Bayer 和 Osendorfer,2014;Bowman 等,2015;Serban 等,2017;Johnson 等,2016;Karl 等,2017;Fraccaro 等al., 2016; Miao et al., 2016; Semeniuta et al., 2017; Zhao et al., 2017; Yang et al., 2017; Hu et al., 2017)。
变分自编码器也已应用于语音和手写(Chung et al., 2015)。序列模型通常使用循环神经网络,例如 LSTM(Hochreiter 和 Schmidhuber,1997)作为编码器和/或解码器。在对序列进行建模时,序列的有效性有时会受到上下文无关文法的限制。在这种情况下,将语法纳入变分自编码器可以产生更好的模型,如 (Kusner et al., 2017) (Grammar 变分自编码器) 所示,并应用于文本表示中的分子建模。
(8)其他
由于变分自编码器可以将离散的观测空间转换为具有近似已知边缘的连续隐变量空间,因此它们可用于基于模型的控制(Watter 等,2015;Pritzel 等,2017)。在 (Heess et al., 2015) (Stochastic Value Gradients) 中表明,观测变量的重参数化以及观测模型可用于计算新形式的策略梯度。变分推断和重参数化梯度也被用于内在激励强化学习 (Mohamed and Rezende, 2015) 和 VIME (Houthooft et al., 2016) 的变分信息最大化,以改进探索。变分自编码器也被用作模型中的组件,用于对场景中的对象执行迭代推断(Eslami 等,2016)。
在 (Higgins et al., 2017) (β-变分自编码器) 中,有人提出加强 $D_{KL} \left(q_{\boldsymbol{\phi}} (\mathbf{z} \mid \mathbf{x}) | p_{\boldsymbol{\theta}}(\mathbf{z}) \right)$ 的贡献,从而限制通过隐空间的信息流,即显示可以改善隐因素的解缠结,在 (Chen et al., 2018) 中进行了进一步研究。
其他应用包括图建模 (Kipf and Welling, 2016) (Variational Graph Autoencoders)、从图像中学习 3D 结构 (Rezende et al., 2016b)、一次性学习 (Rezende et al., 2016a)、学习非线性状态空间模型(Krishnan 等,2017),从非并行语料库做语音转换(Hsu 等,2016 年)、歧视感知(公平)表示(Louizos 等,2015 年)和迁移学习(Edwards 和 Storkey,2017 年)进行转换。
本工作中讨论的重参数化梯度估计已在多个方向上进行了扩展(Ruiz 等,2016 年),包括接受-拒绝采样算法(Naesseth 等,2017 年)。在某些情况下,可以通过 “分割 ELBO”(Hoffman 和 Johnson,2016;Roeder 等,2017)和改进的梯度估计来减少梯度方差。 (Fan et al., 2015) 中也提出了二阶梯度估计。
总而言之,这仍然是一个积极研究的领域,经常有令人兴奋的发展。
5 结论
有向概率图模型是现代人工智能的一个重要方面。通过使用可微分的深度神经网络对条件分布实施参数化,可以使此类模型变得非常灵活。
在完全观测的情况下,将此类模型优化为最大似然目标很直接。但人们通常对具有隐变量的灵活模型更感兴趣,例如 深度隐变量模型
或 具有随机参数的贝叶斯模型
。在这两种情况下,都需要执行变分推断来获得近似后验估计。在变分推断中,推断任务被视为对变分参数的优化问题,当采用最大似然法时,通常针对模型的证据下限 $\mathbb{ELBO}$ (或数据的边缘似然)进行优化。现有变分推断方法要么效率相对较低,要么不适用于以神经网络作为组件的模型。
我们的主要贡献是: 引入了一个有效且可扩展的、基于梯度的变分后验推断和近似最大似然学习框架 。
在本文中,我们描述了变分自编码器及其一些扩展。 变分自编码器可以被视为 深度隐变量模型 (DLVM)
、连续隐变量
以及 变分推断
的一种组合框架。深度隐变量模型是一种基于数据的生成式模型。推断模型(也称为编码器或识别模型)被用于近似生成模型中隐变量的后验分布。生成模型和推断模型都是由深度神经网络完全或部分参数化的有向图概率图模型。模型中的所有参数(包括权重和偏差等神经网络参数),可以通过在证据下界( $\mathbb{ELBO}$ )上执行随机梯度上升来联合优化。$\mathbb{ELBO}$ 是数据边缘似然的下界,也称为变分下界。在上述过程中,执行随机梯度下降所必需的随机梯度来自于重参数化技巧给出的无偏估计。变分自编码器框架现在是各种概率建模和人工创造应用的常用工具,并且在大多数深度学习软件库中都有基本实现。
为了学习灵活的推断模型,我们又提出了逆自回归流,这是一种允许扩展到高维隐空间的归一化流。进一步探索的一个方向是与求逆计算成本较低的变换进行比较,如 NICE (Dinh et al., 2014) 和 Real NVP (Dinh et al., 2016)。在变分自编码器框架中应用这种变换可能会形成相对简单但结合了强大的后验、先验和解码器的变分自编码器。这种架构有可能与纯自回归架构(Van den Oord 等,2016 年)相媲美甚至超越,同时允许更快的合成。
我们提出的变分自编码器框架至今仍然是文献中唯一同时支持离散型和连续型观测变量的框架,允许有效的摊销推断和快速合成,并且就数据对数似然相关方法而言(GAN 等方法不使用显式似然,因此被排除在外),变分自编码器可以产生接近最先进的性能。