懒得写,省流版。详细的内容见参考资料。

VAE有一堆概率公式推导,看得头疼,等我概率基础好些了再说。

架构

VAE 变分自编码器,我听不懂这个名字,感觉不如叫编码器-分布-解码器,这样更直观。

VAE 的架构跟GAN一样都有两个网络组成,但是网络的工作不一样。VAE中的两个网络是编码器解码器。编码器将数据映射到一个固定的分布上(就像GAN生成器采样的那个分布那样),解码器将那个分布上的数据映射到原先的数据。

编码器和解码器就像一个函数和他的反函数,将数据变为其他形式,然后再从其他形式变回来。通过从其他容易进行采样的形式(一般是正态分布)上采样,然后将采样结果通过解码器解码,便可以生成出数据。(那个其他形式,也就分布被成为潜空间 Latent Space

训练

最吃学历的一集。

老实说,我压根看不懂损失函数是怎么被推导出来的,因为我看到的只有大片大片的概率公式。

想看的话可以看参考资料去。


AI 补充(我写的确实有遗漏的点)

基于您的笔记,我们可以增加一些概念性的补充,不涉及复杂的数学:

VAE (Variational Autoencoder) 学习笔记(概念版)

(省流版,忽略详细数学推导)

  • 您想到的名字: “编码器-分布-解码器” (Encoder-Distribution-Decoder) - 这个名字非常直观! 标准名称是 变分自编码器 (Variational Autoencoder, VAE)。“自编码器”是因为它像普通自编码器一样试图将输入编码再解码回来,“变分”则涉及其背后的数学方法(变分推断)。

1. 架构 (Architecture)

VAE由两个核心网络组成,它们协同工作:

  • 编码器 (Encoder): 这个网络接收输入的原始数据(例如一张图片),它不直接将数据映射到一个点,而是学习将数据映射到潜在空间 (Latent Space) 中一个分布的参数。最常见的是,编码器会为每个输入数据输出潜在空间中的一个高斯分布的均值 (μ) 和方差 (σ2)。您可以理解为,编码器试图找出“这个数据在潜在空间里最可能位于哪个区域,以及这个区域有多大的不确定性”。

  • 潜在空间 (Latent Space): 这是一个维度较低的向量空间(通常比原始数据维度低很多)。它是数据的抽象表示空间。VAE的目标是让这个潜在空间具有良好的属性,比如连续性(潜在空间中相近的点对应的数据也相似)和紧凑性。

  • 采样 (Sampling): 在潜在空间中,我们不会直接使用编码器输出的 μ 和 σ2。我们会根据编码器输出的这些参数,从对应的分布中随机采样得到一个潜在向量 (Latent Vector) z。这个采样步骤是VAE与传统自编码器的一个关键区别,它引入了随机性,使得VAE能够用于生成。为了让训练过程中的梯度能够通过采样步骤反向传播,这里通常会使用一个技巧叫做**“重参数化技巧”(Reparameterization Trick)**。

  • 解码器 (Decoder): 这个网络接收从潜在空间中采样得到的潜在向量 z 作为输入,并将其转换回原始数据空间,生成一个重构的数据(比如一张重构的图片)。解码器的目标是能够从潜在向量中还原出尽可能接近原始输入的数据。

  • 生成新数据: VAE学会了如何从潜在空间(理想情况下,经过训练,潜在空间中的标准正态分布区域对应着有意义的数据)映射到数据空间。因此,要生成新的数据,我们只需简单地从潜在空间中的标准正态分布中随机采样一个潜在向量 z,然后将其输入到训练好的解码器中,解码器就会生成一个全新的数据样本。

2. 训练 (Training)

  • 核心思想: VAE的训练目标是最大化数据的变分下界 (Evidence Lower Bound, ELBO)。就像您感觉到的,这部分涉及复杂的概率和积分公式推导。

  • 直观理解损失函数: 尽管数学复杂,但 VAE 的损失函数从概念上可以分解为两部分,这两部分是需要同时优化的:

    1. 重构损失 (Reconstruction Loss): 衡量解码器从潜在向量重构出来的数据与原始输入数据有多接近。这一部分鼓励编码器和解码器能够有效地压缩和还原信息。目标是最小化重构误差。
    2. KL散度损失 (KL Divergence Loss): 衡量编码器为每个输入数据学习到的潜在分布(由 μ 和 σ2 定义)与我们预设的先验分布(通常是标准正态分布 N(0,I))之间的距离。这一部分鼓励编码器将数据映射到的潜在分布接近标准正态分布。这样做的目的是为了让潜在空间变得规整且容易采样,以便我们将来可以直接从标准正态分布中采样来生成新数据。目标是最小化这个KL散度。
  • 训练过程: 训练时,编码器和解码器一起被优化,试图在“准确重构原始数据”和“让潜在分布接近先验分布”这两个目标之间找到平衡。

总结您笔记的亮点和补充:

您的笔记成功地提炼出了VAE的 编码器 → (潜在空间分布采样) → 解码器 → 重构/生成 这个核心流程,并理解了潜在空间的概念和其在生成中的作用。关于数学推导的跳过是完全可以接受的,许多人在应用VAE时也是侧重于理解其架构和概念,而不是从头推导公式。

补充部分则:

  • 确认了您的直观命名很形象。
  • 更精确地描述了编码器输出的是分布的参数,而不是直接映射到固定分布的点。
  • 加入了采样步骤和重参数化技巧的概念。
  • 概念性地解释了VAE损失函数的**两个核心组成部分(重构和KL散度)**及其目的,绕开了具体的概率公式。
  • 强调了潜在空间在生成新数据时的作用。

希望这些补充能在概念层面进一步巩固您对VAE的理解!在实践中,理解重构损失和KL散度损失各自的作用通常就足以帮助您调试模型了。

修改历史

  1. 初稿。2025-05-08
  2. 修改历史。2025-05-09 13:38:26

参考资料