从“确定性编码”到“概率性编码”
为了更好地理解VAE,我们先从其前身——标准自编码器说起。

-
标准自编码器:
- 结构:由编码器和解码器两部分组成,编码器将输入数据
x(如图片)压缩成一个低维的潜在向量z,解码器则尝试从这个z重构出原始输入x‘。 - 目标:最小化重构误差(如均方误差),让
x‘尽可能接近x。 - 问题:它的潜在空间
z是确定性的,结构可能是混乱、不连续的,如果你在潜在空间中随机取一个点,解码器很可能生成一个无意义的输出,它主要用于数据降维和去噪,而非生成新数据。
- 结构:由编码器和解码器两部分组成,编码器将输入数据
-
变分自编码器的飞跃:
- VAE 的核心改变是:编码器不再输出一个确定的
z,而是输出一个概率分布(通常是高斯分布)的参数。 - 对于输入
x,编码器输出两个向量:μ(均值)和σ(方差),这意味着潜在变量z是从一个由N(μ, σ²)定义的分布中采样得到的。 - 这个设计带来了两个关键优势:
- 连续性和完整性:通过强制潜在空间遵循一个先验分布(通常是标准正态分布
N(0, I)),VAE 鼓励整个潜在空间变得平滑、连续,在平滑的空间中,任意点解码后都应生成一个有意义的数据。 - 生成能力:由于我们定义了潜在空间的先验分布,要生成新数据时,只需从
N(0, I)中随机采样一个z,然后送入解码器即可。
- 连续性和完整性:通过强制潜在空间遵循一个先验分布(通常是标准正态分布
- VAE 的核心改变是:编码器不再输出一个确定的
核心机制:损失函数与“重参数化技巧”
VAE 的训练目标是最大化数据 x 的证据下界,其损失函数由两部分组成:
损失 = 重构损失 + KL 散度损失
- 重构损失:与标准自编码器类似,衡量解码器输出与原始输入的差异(如交叉熵或均方误差),这确保了生成的数据要像原始数据。
- KL 散度损失:衡量编码器产生的分布
N(μ, σ²)与先验分布N(0, I)之间的差异,它的作用是“正则化”潜在空间,使其趋向于标准正态分布,从而保证空间的规整性和可生成性。
一个关键挑战:采样操作不可导
直接从分布 N(μ, σ²) 采样 z 是一个随机过程,梯度无法反向传播,VAE 使用了一个聪明的 “重参数化技巧” 来解决:
- 不直接采样
z,而是改为:z = μ + σ ⊙ ε ε是从标准正态分布N(0, I)中采样的随机噪声。- 这样,随机性被转移到了
ε上,而μ和σ成为了可导的确定性参数,梯度得以顺利通过。
比喻理解
- 标准自编码器:像是一个“无损压缩”算法,它试图为每张图片找一个特定的“压缩代码”来精确还原它。
- 变分自编码器:像是一个“画家”,它不记忆代码,而是学习图片的“本质特征”(如姿势、表情、发型),对于一张人脸图片,编码器会学习到“微笑程度=0.8,脸型=0.3”等属性的概率分布,生成时,你只需要告诉解码器“我想要一个微笑程度=0.9,脸型=0.5的人脸”,它就能画出来,潜在空间的每个维度都对应着某种有意义的语义特征。
主要特点与优点
- 是一个显式的概率生成模型:直接对数据分布建模。
- 潜在空间结构化、连续:便于插值和语义操作(如将“微笑”属性从0渐变到1)。
- 训练相对稳定:与GAN相比,VAE的训练过程更不易崩溃。
- 编码解码一体化:既能生成,也能进行数据压缩和表示学习。
主要缺点
- 生成的样本通常比GAN更模糊:这是由损失函数(如均方误差)和拟合目标(数据分布的“平均”)决定的。
- 可能面临“后验坍缩”问题:在训练中,解码器可能过于强大,导致KL散度项失效,编码器输出退化为先验分布。
典型应用
- 生成新数据:生成新的图像、音乐、文本等。
- 数据降维与可视化:将高维数据映射到二维/三维潜在空间。
- 数据去噪与修复。
- 半监督学习:利用未标记数据学习更好的数据表示。
- 生成:在潜在空间中进行有意义的属性插值和编辑(如改变人脸表情、发型)。
变分自编码器的核心概念,是将自编码器的确定性思想,与变分推断的概率性思想相结合,它通过将输入编码为一个概率分布,并利用KL散度正则化潜在空间,从而学习到一个结构良好、连续且完整的低维流形,这使得它不仅能重构输入,更能作为一个强大的生成模型,从学习到的数据分布中创造出新的、合理的数据样本。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。