07 生成式 AI进阶本域第 2 篇
自编码器与变分自编码器
先把信息压过一个瓶颈,再从瓶颈里把它重新长出来
定义
自编码器是一对网络:编码器把输入压成低维表示,解码器再尽力从该表示复原输入,训练目标是最小化重构误差。变分自编码器(VAE)把这一表示从确定的点换成一个概率分布——通常是各维独立的高斯——并在损失中加入约束,使整个隐空间接近标准正态分布,从而可以从随机采样生成新样本。
直观理解
只靠「压缩—还原」训练的自编码器,像把整本电话簿背下来:它记得每个号码,却没抽出规律,也编不出新号码。VAE 的要求更苛刻:不仅重建要对,隐空间还必须整齐——相近的编码解码出相近的东西,且整片空间都「住得起人」。于是随便取一点,也能解出一张合理的图。代价是,约束会让重构比普通自编码器更模糊一些。
自编码器的编码—解码回路;VAE 在瓶颈处把确定向量换成一个可采样的高斯分布
VAE 的 KL 项把各维编码推向标准正态:训练充分后,隐空间边缘分布接近 N(0, 1),因此随机取点也能解码出合理样本
工作原理
- 01
编码:压进瓶颈
编码器逐层降维,得到一个远小于输入的隐向量。瓶颈层之所以关键,是因为它强制模型丢弃细节、保留可复用的结构——这正是降维与特征提取的来源。
- 02
解码:从瓶颈重建输入
解码器把隐向量升维回原尺寸,损失通常取逐像素的均方误差或二元交叉熵。重构损失只关心「像不像原件」,并不关心隐空间是否规整。
- 03
VAE 的概率化改造
编码器不再输出一个点,而是输出隐变量的均值与方差,据此定义一个高斯分布;解码时先从这个分布采样,再送入解码器。重参数化技巧把「采样」写成均值加标准差乘噪声,使梯度能穿过随机操作回传。
- 04
ELBO:重构与正则的拉锯
训练目标(证据下界 ELBO)由两项构成:重构项希望解码准确,正则项(KL 散度)希望编码分布贴近标准正态。前者把编码拉向「各具特色」,后者把编码拉向「整齐划一」,二者的平衡决定了生成样本的清晰度与多样性。
关键公式
L = E_q[log p(x|z)] − KL( q(z|x) ‖ p(z) )应用场景
- 表示学习与降维:用瓶颈层做特征提取、可视化与去噪
- 生成建模:从隐空间采样合成图像、分子与序列
- 异常检测:异常样本的重构误差显著大于正常样本
- 作为生成模型的前置部件:潜空间扩散里的编码器与解码器正是自编码器
常见误区
- VAE 的样本常偏模糊。逐像素重构损失会在多个合理答案之间取平均,结果就是「哪张都不像」的平均图;扩散与 GAN 正是在这一点上补足。
- 普通自编码器不能直接当生成模型用。它的隐空间没有可采样的分布结构,随便取一点往往解码出无意义的输出。
- 「瓶颈越小越好」是误解。瓶颈过窄会丢失必要信息、重构崩塌;过宽则退化成恒等映射,学不到有用的表示。
关键术语
- 瓶颈层
- 隐表示所在的低维层,限制信息通过的通道
- 重参数化
- 把随机采样写成确定变换加外部噪声,使梯度可回传
- KL 散度
- 衡量编码分布与标准正态的偏离,充当正则项
- ELBO
- 数据对数似然的下界,等于重构项减去 KL 项,VAE 的实际优化目标