NO.53.tip: 非线性潜变量模型
背景
考虑一个简单的向量变量 上的分布,例如高斯分布:
假设我们使用一个由深度神经网络给出的函数 来变换 ,其中 代表权重和偏置。 上的分布与神经网络的结合定义了 上的分布。从这样的模型中采样是直截了当的,因为我们可以从 中生成样本,然后使用神经网络函数对每个样本进行变换,以获得对应的 的样本。这是一个高效的过程,因为它不涉及迭代。
为了从数据中学习 ,考虑如何计算似然函数 。 上的分布由密度的变量变换公式给出:
其中 是偏导数的雅可比矩阵,其元素由下式给出:
要计算式 (2) 右侧的分布 (对于给定的数据向量 )和式 (3) 中同一 值的雅可比矩阵,我们需要使用神经网络函数的逆函数 。对于大多数神经网络来说,这个逆函数将不是良好定义的。例如,神经网络可能实现一种多对一的函数关系,在这种情况下,不同的输入值会被映射到相同的输出值,变量变换公式并不能给出良好定义的密度。此外,如果潜空间的维度与数据空间的维度不同,那么变换将是不可逆的。
解决这个问题的一种方法是限制函数 是可逆的,这要求 和 具有相同的维度。我们将在介绍标准化流(normalizing flow)的技术时更详细地探索这种方法。
源与流
非线性流形
要求潜空间和数据空间具有相同的维度是一个重大的限制。考虑这样一种情况: 的维度是 , 的维度是 ,其中 $M < D$。在这种情况下, 上的分布局限于维度为 的流形或子空间。许多机器学习应用中都出现了低维流形,例如在模拟自然图像的分布时。非线性潜变量模型(nonlinear latent variable model)在模拟此类数据时可能非常有用,因为它们表达了强烈的归纳偏置,即数据并不"填满"数据空间,而是被限制在一个流形上,尽管这个流形的形状和维度通常是未知的。
然而,这个框架将零概率密度赋予那些不完全位于流形上的任何数据向量,这些点都将为零,并且对于小的 变化将保持不变。为了解决这个问题,我们使用之前用于解决回归和分类问题的策略,定义了整个数据空间上的条件分布,其参数由神经网络的输出决定。例如,如果 是连续变量的一个向量,则可以选择条件分布为高斯分布:
注意,从这个分布中独立抽取样本不仅简单而且效率高。首先使用标准方法从高斯分布中抽取一个样本,然后将这个值作为神经网络的输入,得到输出值 。最后从均值为 、协方差为 的高斯分布中抽取一个样本 [式 (1),式 (4)]。重复上述过程以生成多个独立样本。
潜变量分布 与条件分布 的组合定义了数据空间上的边缘分布:
我们可以用一个涉及一维潜空间和二维数据空间的简单例子来说明这一点。
似然函数
我们已经看到从这个非线性潜变量模型中抽取样本是很容易的。假设我们希望通过最大化似然函数来拟合观测到的数据集。可以通过对 进行积分并使用概率的加和规则和乘积法则来得到似然值:
尽管积分内部的两个分布都是高斯分布,但由神经网络定义的高度非线性函数 却使得积分在解析上是不可处理的。一种计算似然函数的方法是从潜空间分布 中抽取样本,并用这些样本来近似式 (6),从而得到
其中 。这将 的分布表示为具有固定混合系数 的高斯混合分布,当样本数量趋于无穷时,该方法给出了真实的似然函数。然而,实际训练中所需的 值通常会大得不切实际。
离散数据
如果观测到的数据集包含独立的二进制变量,则可以使用以下条件分布的形式:
其中 是输出单元 的激活值,激活函数 由逻辑斯谛 sigmoid 函数给出, 是输出单元 的预激活值。类似地,对于独热编码(one-hot encoded)的分类变量,可以使用多项式分布:
其中,softmax 激活函数为
我们还可以通过构造相关条件分布的乘积来考虑离散变量和连续变量的组合。
在实际应用中,连续变量通常以离散值表示,例如在图像中,红色、绿色和蓝色通道的强度可能取自 8 位二进制数字所能表示的数值集 。当我们采用基于深度神经网络的高度灵活模型时,这可能会导致一个问题:如果密度坍塌到一个或多个离散值上,似然函数就有可能变为零,导致异常解。这个问题可以通过使用一种称为去量化(dequantization)的技术来解决,该技术涉及向变量添加噪声,这些噪声在连续离散值之间的区域内通常是均匀分布的。训练集的去量化就是用随机抽取的样本替换每个观测值,这些样本来自与特定离散值相关联的连续分布。采用这种方法,模型找到异常解的可能性就会降低。
构建生成式模型的 4 种方法
我们已经看到,基于深度神经网络的非线性潜变量模型提供了一个高度灵活的框架来构建生成式模型。由于神经网络变换的普适性,这些模型原则上能够以高精度近似任何期望的分布。此外,一旦训练好,这些模型还可以使用一种高效、非迭代的过程从分布中生成样本。然而,我们也面临着一些与训练此类模型相关的挑战,迫切需要找到比线性模型更复杂的方法。业内已经提出了不少方法,每种方法都有自身的优势和局限性,它们大致可以分为以下 4 种。
(1) 基于生成对抗网络(Generative Adversarial Network, GAN)放宽"网络映射必须是可逆的"这一要求,允许潜空间的维度低于数据空间的维度。这里也放弃了似然函数的概念,引入了第二个神经网络,其功能是为生成网络提供训练信号。由于缺乏明确定义的似然函数,训练过程可能不稳定,但一旦训练完成,就很容易从模型中生成样本,并且所得结果的质量也高。
(2) 变分自编码器(Variational AutoEncoder, VAE)也使用了第二个神经网络,其作用是近似潜变量的后验分布,从而允许计算似然函数的近似值。与 GAN 相比,其能使训练更为稳健,而且能直接从训练好的模型中采样,但是要获得高质量的结果可能更困难。
(3) 在标准化流(normalizing flow)中,将潜空间的维度设置为等于数据空间的维度,然后修改神经网络,使其变得可逆。"网络必须是可逆的"这一要求限制了其函数形式,但也使得无须近似就能计算似然函数,而且能进行高效采样。
(4) 扩散模型(diffusion model)使用一个网络学习如何通过一系列去噪步骤将先验分布的样本转换为数据分布的样本。这在许多应用中带来了先进的性能,缺点是由于多次经历网络的去噪过程,采样成本可能较高。