1. 什么是变分自编码器?(直观理解)
1.1 用类比解释
想象你是一个艺术家,想画出无数张类似“猫”的图片,但你只有一堆猫的照片作为参考。直接复制这些照片太无聊,你希望能“理解”猫的本质,然后自由创作新的猫的形象。变分自编码器(VAE)就像一个智能助手,它帮你做到以下几件事:
- 提取猫的“精髓”:从照片中提取猫的本质特征(比如“毛色”“眼睛形状”“耳朵角度”),这些特征被压缩成一个低维的“代码”(潜在变量 zzz)。
- 生成新猫:根据这些“代码”,重新画出新的猫的图片,尽量让它们看起来像真实的猫。
- 保持多样性:不仅能重现照片里的猫,还能生成新的、没见过的猫,但仍然符合“猫”的特征。
在这个过程中,VAE的核心任务是:
- 压缩(编码):把复杂的输入数据(如猫的图片)压缩成简单的潜在变量 zzz。
- 重建(解码):从潜在变量 zzz 还原出原始数据,或生成新的类似数据。
- 概率建模:确保潜在变量 zzz 服从某种分布(如正态分布),这样可以随机采样生成多样化的数据。
1.2 正式定义
变分自编码器是一种生成模型,结合了深度学习和贝叶斯推断,旨在学习数据的潜在分布并生成与训练数据相似的新样本。它由两部分组成:
- 编码器(Encoder):将输入数据 xxx 映射到潜在空间,生成潜在变量 zzz 的概率分布 q(z∣x)q(z|x)q(z∣x)。
- 解码器(Decoder):从潜在空间的 zzz 采样,生成数据 xxx 的概率分布 p(x∣z)p(x|z)p(x∣z)。
VAE的特别之处在于,它不像传统自编码器(Autoencoder)只学习点对点的映射,而是学习数据的概率分布,使潜在空间具有连续性和可解释性。
2. VAE与传统自编码器的区别
为了更好地理解VAE,我们先看看它与传统自编码器(Autoencoder, AE)的区别。
2.1 传统自编码器(AE)
- 结构:包括编码器和解码器。
- 编码器:将输入 xxx 压缩为低维表示 zzz(如 z=f(x)z = f(x)z=f(x))。
- 解码器:将 zzz 还原为 x^\hat{x}x^(如 x^=g(z)\hat{x} = g(z)x^=g(z))。
- 目标:最小化重构误差 L=∥x−x^∥2\mathcal{L} = \| x - \hat{x} \|^2L=∥x−x^∥2,使 x^\hat{x}x^ 尽可能接近 xxx。
- 局限性:
- 潜在空间 zzz 没有明确的结构,可能不连续。
- 无法直接从潜在空间采样生成新数据,因为 zzz 是确定的点,而不是分布。
- 主要用于数据压缩或降维,不适合生成任务。
2.2 变分自编码器(VAE)
- 结构:同样有编码器和解码器,但输出的是概率分布。
- 编码器:输出潜在变量 zzz 的分布参数(如均值 μ\muμ 和方差 σ\sigmaσ),即 q(z∣x)q(z|x)q(z∣x)。
- 解码器:从 zzz 的分布采样,生成数据 p(x∣z)p(x|z)p(x∣z)。
- 目标:不仅最小化重构误差,还要确保潜在空间的分布接近某个先验分布(如标准正态分布)。
- 优势:
- 潜在空间是连续的、结构化的,可以通过采样生成新数据。
- 基于概率建模,适合生成多样化的样本。
- 支持潜在空间的插值和探索。
2.3 类比总结
- AE:像一个“精确的复印机”,把照片压缩后再精确还原,但不能自由创作。
- VAE:像一个“有创意的艺术家”,不仅能复原照片,还能根据照片的“精髓”画出新的、类似的图片。
3. VAE的核心思想(概率建模与变分推断)
VAE的核心思想是将数据生成过程建模为一个概率过程,通过学习数据的潜在分布来生成新样本。以下是其关键概念:
3.1 潜在变量模型
- 假设数据 xxx(如一张猫的图片)是由一些不可观测的潜在变量 zzz(如“猫的特征”)生成的。
- zzz 通常服从一个简单的先验分布 p(z)p(z)p(z),如标准正态分布 N(0,I)\mathcal{N}(0, I)N(0,I)。
- 数据生成过程可以表示为条件概率 p(x∣z)p(x|z)p(x∣z),即给定 zzz,生成 xxx 的概率。
- 目标是学习数据的边际分布:
p(x)=∫p(x∣z)p(z)dzp(x) = \int p(x|z)p(z)dzp(x)=∫p(x∣z)p(z)dz
但这个积分通常难以计算,因为 zzz 的维度可能很高。
3.2 变分推断
- 直接计算后验分布 p(z∣x)p(z|x)p(z∣x)(给定数据 xxx,推断 zzz 的分布)是不可解的,因为它涉及复杂的积分。
- VAE引入一个近似分布 q(z∣x)q(z|x)q(z∣x),通过优化使 q(z∣x)q(z|x)q(z∣x) 接近真实的 p(z∣x)p(z|x)p(z∣x)。
- 优化目标是最大化数据的对数似然 logp(x)\log p(x)logp(x),但由于直接优化困难,VAE转而优化证据下界(ELBO)。
3.3 类比解释
- 想象你有一堆猫的照片,想知道每张照片背后“猫的特征”是什么(即 zzz)。
- 直接推断特征(p(z∣x)p(z|x)p(z∣x))太复杂,就像在一堆杂乱的线索中找答案。
- VAE的做法是“猜一个答案”(用 q(z∣x)q(z|x)q(z∣x) 近似),然后不断调整这个猜测,让它越来越接近真实答案,同时确保生成的猫看起来像真的(优化 p(x∣z)p(x|z)p(x∣z))。
4. VAE的数学推导(从头到尾)
为了深入理解VAE,我们需要从数学角度剖析其原理。以下是详细的推导过程,尽量分解为小步骤,并配以直观解释。
4.1 目标:最大化数据似然
我们希望模型能生成与训练数据相似的样本,即最大化数据的对数似然:
logp(x)\log p(x)logp(x)
其中:
- p(x)=∫p(x∣z)p(z)dzp(x) = \int p(x|z)p(z)dzp(x)=∫p(x∣z)p(z)dz,表示数据的边际分布。
- p(z)p(z)p(z) 是先验分布,通常为 N(0,I)\mathcal{N}(0, I)N(0,I)。
- p(x∣z)p(x|z)p(x∣z) 是解码器的输出,表示从 zzz 生成 xxx 的概率。
直接计算 p(x)p(x)p(x) 的积分是不可行的,因为 zzz 的维度可能很高,且 p(x∣z)p(x|z)p(x∣z) 通常由复杂的神经网络参数化。
4.2 引入变分推断
为了解决这个问题,VAE引入一个近似后验分布 q(z∣x)q(z|x)q(z∣x),通过优化使 q(z∣x)q(z|x)q