TellWorldAI 世界档案
问档案English

首页›原理

原理

变分自编码器

变分自编码器是一种生成模型:编码器把输入映射为隐空间上的分布,解码器从采样结果重建输入,训练时最大化数据似然的下界。

时代 深度学习

是什么

变分自编码器(variational autoencoder, VAE)是一种生成模型,由两部分网络组成。编码器把输入 x 映射为隐空间 z 上的一个分布,解码器则从 z 重建出 x[1]。它的隐空间是概率性的,例如可以是一个多元高斯分布(multivariate Gaussian),因此也可以把它看成一种隐空间带概率含义的自编码器[1]。从方法谱系上说,它属于概率图模型(probabilistic graphical model)与变分贝叶斯方法(variational Bayesian methods)[1]。

怎么工作

训练并不直接最大化似然,而是最大化证据下界(evidence lower bound)。这个下界等于重建的对数似然的期望,减去近似后验与先验之间的 KL 散度(KL divergence)[1]。两项各有分工:第一项是重建误差,常用均方误差或交叉熵来衡量;第二项则把后验分布拉向先验[1]。

麻烦出在采样这一步。用梯度下降训练,梯度必须能穿过对 z 的随机采样,但一次随机采样并不是网络参数的可微函数。重参数化技巧(reparameterisation trick)的做法,是把隐变量的采样写成「均值加上一个按比例缩放的噪声项」[1]。随机性被挪到参数之外——噪声独立抽取——于是梯度可以穿过这个期望[1]。这样得到的是无偏的梯度估计,普通的随机梯度下降(stochastic gradient descent)就能直接使用[1]。原论文从优化角度讲的是同一件事:对变分下界做重参数化,可以得到一个能用标准随机梯度方法优化的下界估计量[2]。

举一个假设性的小例子。设编码器对某个输入输出一组均值和一组离散程度。与其直接抽一个 z,不如先从一个固定的简单分布里抽一个噪声向量,乘上离散程度、加上均值,再把结果送进解码器。解码器看到的仍然是一个随机的隐向量,但随机性是以输入的形式进来的,而不是藏在参数内部,于是损失对均值和离散程度的梯度是明确的。

从哪来

Kingma 与 Welling 的论文《Auto-Encoding Variational Bayes》发表于 2013 年,后来在 ICLR 2014 上报告[1]。该文于 2013 年 12 月提交,提出了一种可扩展到大规模数据集的随机变分推断与学习算法[2],并证明对变分下界做重参数化可以得到一个能用标准随机梯度方法优化的下界估计量[2]。另一条相近的工作是 Rezende、Mohamed 与 Wierstra 的《Stochastic Backpropagation and Approximate Inference in Deep Generative Models》,于 2014 年在 ICML 上发表[1]。

论文的一项实用贡献与后验有关。对于每个数据点都有连续隐变量的独立同分布(i.i.d.)数据集,只要拟合一个近似推断模型(也称识别模型,recognition model)去逼近难以处理的后验,后验推断就变得高效[2]。这个识别模型就是今天通常所说的编码器。

变体与局限

此后出现了若干扩展:Higgins 等人在 2016 年和 2017 年提出 Beta-VAE,Sohn 等人在 2015 年提出条件变分自编码器(conditional VAE)[1]。基本目标函数有一个已知的失效模式:KL 项可能强到让模型干脆忽略隐变量,这种情况被称为后验坍缩(posterior collapse)[1]。一旦发生,解码器仍能给出看似合理的输出,但隐变量几乎没有承载输入的信息。

把这几部分合起来看,就能理解它为什么受欢迎:一个有原则的概率目标,一套能接进常规梯度训练流程的做法,以及一个分布式的、而非固定编码的隐空间。

注释与来源

  1. Variational autoencoderhttps://en.wikipedia.org/wiki/Variational_autoencoder
  2. Auto-Encoding Variational Bayeshttps://arxiv.org/abs/1312.6114

引用本页: 变分自编码器. TellWorld, https://www.tellworld.net/zh/learn/variational-autoencoder. 更新于 2026-11-07