Variational Auto Encoder

RPChe_

本文将简要的介绍 VAE 。本来还想谈谈 VQ-VAE ,但是觉得这种模型比较平凡,因此不讲了。

Variational Auto Encoder

  • 熟知生成模型的主要目的是建模概率分布,并从中取样进行生成。我们先前已经介绍了一些无监督学习模型,例如 GMM ,然而 GMM 的建模太糙了,无法忠实的刻画给定的分布。现在我们我们要介绍最早成功的生成模型,VAE ,对其从 EM 和编解码器两个视角给出解读。

VAE as EM

  • 在 EM 的基础上,我们考虑引入一些更细化的假设,这便是 VAE 。具体的,令潜变量 ,其中维数 为预先指定的超参数。1我们假设后验 服从简单高斯分布,其均值 由神经网络参数化,而方差固定为 ,其中 为一超参数。考虑证据下界: 在 E 步中,我们希望令 ,按贝叶斯公式: 我们无法得到 ,因而无法得到 的解析形式。2因此,考虑做变分推断,使用 参数化的神经网络 拟合 ,其中 仍被假设服从对角高斯分布
  • 在此基础上,容易推导得到: 对于证据下界中的另外一项后验对数期望,没有较好的办法获取其解析解,因此考虑采取数值模拟策略,通过采样来估计: 这给出了 VAE 的完整优化框架,仿照 EM :

    1. 随机初始化参数
    2. 计算变分分布 ,得到证据下界的相对熵项。
    3. 使用数值方式估计证据下界的后验对数期望项。
    4. 根据证据下界的上升方向,使用梯度方法优化

    综上,VAE 的优化过程可以概括为通过变分推断优化证据下界以优化数据建模的似然。一个额外的问题是,在使用梯度方式时,我们希望在模型中进行反向传播,然而步骤 是不可微的。为此,我们要引入重参数化技巧,考虑: 其中 代表逐元素积。从而: 对于 的梯度: 对于 的梯度: 注意此时概率空间是固定的,因此可以将梯度移入: 这说明通过对 取样,便可以对后验对数期望和梯度做数值模拟。这样便可以使用梯度方法进行优化了。

VAE as Auto Encoders

  • 在做重参数化时,证据下界的期望项转为: 代入简单高斯假设,容易得到: 其中 为取定 时神经网络预测的均值。此时我们将 VAE 的流程看作:对于任意的数据点 ,使用带有参数 的网络作为编码器将其压缩到 ,然后使用带有参数 的网络作为解码器将其解码回到 。这个视角即为“变分自编码器”名字的由来。在优化证据下界这一严格的看法之外,直观上也可以将 VAE 的训练看作对于所有训练样本,,让 VAE 学会压缩并解码这些样本。这样生成便转化为对隐空间中的变量 取样,再将其解码得到生成样本。因此该损失项也称 reconstruction loss 。

    一个自然的看法是这套思想是否具备扩展性,即任取深度编解码器模型,我们是否都可以通过从隐空间中取样并解码来生成。简单的回答是,不行。这主要是因为一般的编解码器不会对隐空间的分布做要求,例如其中可能包含了大量的空洞,不对应合理的数据。因此我们必须要刻画隐空间的结构,才能保证以大的概率取样到合理的数据。对应到 VAE 中,我们实际上要求了隐空间带有高斯分布 的先验,这一要求体现到相对熵: 中,因此其也称 regularization loss 。

KL annealing

  • 如果各位观察过朴素 VAE 的生成结果,很容易发现其比较糊,我猜这主要是因为 VAE 的假设说到底还是不够精细。而精心训练的纯自编码器却可以做到高质量的解码,因此我们认为解码质量的损失主要来自 regularization loss 项。为此,可以对该项施加系数 ,以减弱先验的要求。这引出了一个 trade-off ,先验的减弱会提高解码质量,然而会增大生成难度,因为这意味着隐空间的分布不会再那么像高斯分布了。

    该方法被称作 KL annealing ,这是因为相对熵也称 KL 散度。注意此处的“散度”与描述向量场局部流量的散度是不同的,其更倾向于描述“相差量”。实际上散度的一般定义可以视作范数的弱化,其英语 divergence 应该蕴含了此类意思,但是翻译的时候被丢弃了。


  1. 这主要是工程上和经验上的选择。↩︎

  2. 是关于 线性高斯的,其实可以解出 ,然而以上的假设并不能保证这一点。↩︎

  • 标题: Variational Auto Encoder
  • 作者: RPChe_
  • 创建于 : 2025-10-31 00:00:00
  • 更新于 : 2025-11-01 21:15:56
  • 链接: https://rpche-6626.github.io/2025/10/31/DG/vae/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论