生成模型 (1.2):Variational Auto-Encoder

生成模型 #生成模型 #VAE 约 23 分钟 · 7706 字

引言

上一篇文章中,我们介绍了变分推断及其数学原理。我们已经知道,变分推断就是在用一个可解的带参分布 来近似难解的后验分布 。通过最大化对数似然函数下界估计(即ELBO),我们可以找到最优的参数 ,并用 来作为后验分布的近似。

变分自编码器 (Variational Autoencoders, VAEs) 就是基于变分推断的最简单的生成模型。VAE使用一个可学习的编码器 (encoder) 来作为变分分布 ,将观测数据 映射到隐变量 上,然后使用一个可学习的解码器 (decoder) 从隐变量 还原出原始数据 。

基于这种思想,研究者们还提出了层级VAEs (Hierarchical VAEs, HVAEs) 捕捉不同尺度的数据特征。

一、VAE

自编码器 (Autoencoders, AEs) 是深度生成模型的最简单的版本,其中包含两个模块:确定性 (deterministic) 的编码器用于从原始数据映射到隐变量,确定性的解码器用于从隐变量还原回原始数据,并通过最小化重建误差 (reconstruction error) 来训练编码器和解码器。

虽然这种方法能够保证较好的重建效果,但我们完全不知道隐空间的形式,也没有对其加以约束。因此在生成阶段,我们很难从隐空间中进行采样并利用解码器来生成一个新样本。

为了解决这个问题,VAE为隐分布引入了概率结构,即使用概率化 (probalistic) 的编码器和解码器来分别学习隐变量的分布 以及原始数据的分布 。这使得VAE具有优秀的生成能力,而不仅仅只是对数据进行编码和重建。

1.1. Probalistic Encoder-Decoder

解码器

VAE假设任意一个数据 都可以由某个隐变量 生成,且这个隐变量服从某个简单的先验分布 (prior distribution),比如说标准高斯分布:。

VAE使用一个解码器 将 映射到 中。在实际应用中,解码器的分布一般是一个带参数的简单分布,最常用的是高斯分布。在生成阶段,我们首先从先验分布中采样一个隐变量 ,然后使用解码器来生成新样本 。

从上面的过程可以看到,VAE实际上是一个隐变量生成模型,通过解码器分布和先验分布来建模原始数据的似然:

(1)

然而,由于这个积分是难解的,因此我们一般通过最大化ELBO来最大化似然函数 ,正如我们在前面介绍的那样。

编码器

为了将隐分布与真实数据联系起来,我们需要通过贝叶斯定理来计算后验分布:

(2)

正如上面提到的,由于似然函数 是难解的,因此VAE中引入了一个编码器 作为变分分布来近似这个后验分布:

(3)

其中, 是编码器的参数。我们可以通过训练参数 来是的变分分布尽可能接近真实后验分布。

1.2. 使用ELBO进行训练

正如前一篇文章提到的,VAE通过最大化ELBO来训练变分参数 。具体来说,ELBO的形式如下:

(4)

通过Jensen不等式我们可以知道,ELBO是对数似然函数的下界估计,即:

(5)

当且仅当 时等号成立。具体的证明见上一篇文章。

从公式 中我们看到,ELBO可以拆分为两项:

  1. 第一项是重构误差项,用于鼓励模型从隐变量 中准确重构得到原始数据 。后面我们将看到,这一项就是自编码器的损失函数。然而,只优化重构误差会导致模型只记住了训练数据,无法提升生成能力。
  2. 第二项是隐分布KL散度项,用于鼓励编码器的分布 尽可能接近隐变量的先验分布 。这个正则化项将隐空间变得更加平滑和连续,使得在生成时我们可以从 中采样到有效的隐变量 来生成逼真的样本。

1.3. Gaussian VAE

在这一节中我们介绍VAE在实际应用中的做法。最简单和最标准的实践是称为高斯VAE的方法,它在编码器和解码器中都使用高斯分布。

编码器

编码器 建模了一个参数可学习的高斯分布:

(6)

其中, 和 是神经网络的两个输出。

解码器

同样的,解码器 则是建模了一个均值可学习的高斯分布,这里的方差被固定为一个小常量 ,用于保证稳定生成:

(7)

ELBO的形式

在这种设定下,ELBO中的重构误差项可以被改写为如下形式:

(8)

其中, 是独立于 和 的常量。

因此,Gaussian VAE的目标函数可以写为:

(9)

1.4. VAE的缺点

即使VAE理论上很完善,但实际应用中仍有一些缺陷。一个最明显的问题就是VAE会生成比较模糊的数据。

为了理解这一现象,我们将编码器 固定,解码器的形式为:

(10)

此时目标函数可以简化为如下的最小二乘优化问题:

(11)

这个优化问题的最优解为:

(12)

其中, 是编码器的后验分布,其形式由贝叶斯定理给出:

(13)

最优解有另外一种等价形式:

(14)

现在我们考虑两个不同的输入 ,且这两个输入被映射到隐空间中的某块重叠区域,即 和 的支撑集有交集。

对于重叠区域中的某个 ,公式 的最优解中的期望项包含来自两个不同输入的贡献。因此,VAE有可能会生成模糊的结果。其根本原因就在于最优解的形式中包含了一个条件期望项 。

二、Hierarchical VAEs

2.1. HVAE的数学建模

为了增强VAE对于更加复杂和高维分布的拟合能力,研究者们提出了层级VAEs (HVAEs),通过引入多个隐变量 将VAE堆叠为一个自上而下的层级结构。

HVAE建模了如下的似然函数:

(15)

在生成阶段,我们先采样 ,并逐层解码得到新的生成数据 。

HVAE同样引入了一个可学习的编码器 作为变分分布,最常见的形式如下:

(16)

2.2. HVAE的ELBO形式

和VAE中类似,我们可以从对数似然函数出发,定义HVAE的ELBO项:

(17)

将 和 进行拆分,可以得到ELBO的另一个等价形式:

(18)

2.3. HVAE v.s. VAE

正如深度神经网络依靠更深的结构、更大的参数量在众多场景下超越了传统机器学习方法一样,HVAE的有效性也展示了更深的生成模型的有效性。这种思想是现代生成式建模的基石所在,贯穿了后续的众多方法(如Score-based Models、DDPM、Normalizing Flows等)。

这种思想的核心在于:堆叠更深的层数可以让模型逐步生成数据,首先生成一些粗粒度的轮廓,再逐步添加细粒度的细节。这个过程让模型更能捕捉到高维数据中的复杂结构。

这里必须指出,使用HVAE与单纯地加深VAE中的编码器和解码器是有区别的,这是因为VAE本身有一些局限性,无法通过加深模型层数来改进。

局限1: 变分分布的形式无法改变

标准VAE中,变分分布的形式为:

(19)

更深的编码器只会让 和 更加准确,但并不能改变变分族的形式,变分分布仍然是一个高斯分布。

当真实的后验分布具有多个峰值时,变分分布的形式就决定了无法很好的拟合,这使得ELBO项和真正的似然函数之间存在比较大的距离,也就削弱了生成能力。

局限2: 后验崩溃

当解码器变得太强时,我们往往会遭遇后验崩溃 (posterior collapse) 的现象。

为了解释这个现象,我们对VAE对训练目标进行一定的等价变形:

(20)

其中, 是聚合后验概率。第二项是随机变量 和 的互信息 (mutual information):

(21)

当解码器变得太强,不需要隐变量 就能很好地建模数据分布,即解码器学到了一个与 无关的分布 时,模型为了最大化ELBO,可以让变分分布 ,此时 。

因此ELBO的优化本质是 重建精度 与 正则化强度 的权衡:如果解码器能忽略 仍重建出高质量样本,则ELBO会偏好这种解,因为此时正则化项为零。这导致变分分布 被推向先验分布 ,隐变量变得冗余。