1. 变分自编码器(VAE)的基本概念
变分自编码器(Variational Autoencoder, VAE)是一种结合了深度学习和概率图模型的生成模型。我第一次接触VAE是在一个图像生成项目中,当时被它既能压缩数据又能生成新样本的特性所吸引。与传统的自编码器(Autoencoder, AE)不同,VAE不是简单地将输入数据压缩到隐空间再重建,而是在隐空间中引入了概率分布的概念。
传统AE的工作方式很直观:编码器将输入x映射到隐变量z,解码器再将z重建为x̂。这种结构在数据压缩和去噪方面表现不错,但它有一个致命缺陷——隐空间缺乏良好的数学性质,导致我们无法从中随机采样生成新样本。而VAE通过将隐变量z视为随机变量,并强制其服从标准正态分布,完美解决了这个问题。
举个例子,假设我们要处理手写数字图像。传统AE可能会把每张图片编码为隐空间中的一个固定点,而VAE则会将其编码为一个概率分布(通常是高斯分布)。这意味着同一个输入在VAE中会对应隐空间的一片区域,而不是单个点。这种设计带来了两个关键优势:一是隐空间变得连续,任意采样都能对应有意义的输出;二是隐空间变得结构化,相似的输入会聚集在一起。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. VAE的核心数学原理
2.1 变分下界(ELBO)的推导
VAE的理论基础建立在变分推断之上,核心是最大化证据下界(Evidence Lower BOund, ELBO)。我第一次推导这部分数学时花了整整三天时间,但理解后才发现它的精妙之处。让我们从最基本的概率公式开始:
给定观测数据x,我们想最大化它的对数似然log p(x)。通过引入隐变量z,可以将其表示为:
code复制log p(x) = log ∫ p(x|z)p(z)dz
但这个积分通常难以直接计算(尤其是在高维空间)。VAE的聪明之处在于引入了一个近似后验分布q(z|x),通过Jensen不等式可以得到:
code复制log p(x) ≥ E[log p(x|z)] - KL(q(z|x)||p(z))
这就是著名的ELBO,它由两部分组成:重构项和KL散度项。
重构项E[log p(x|z)]衡量的是解码器重建输入的能力。在实际实现中,我们通常用蒙特卡洛采样来估计这个期望值。KL散度项则强制q(z|x)接近先验分布p(z)(通常取标准正态分布),这保证了隐空间
