深度学习模型:变分自动编码器(VAE)

2024-06-21 李腾 86 次阅读 0 次点赞

本文将详细介绍变分自动编码器(VAE),将从基本概念到核心思想,再到具体实现和应用,逐步展开。

----

什么是变分自动编码器?

变分自动编码器 是一种生成模型,结合了神经网络和统计推断,主要用于学习复杂数据(如图像、音频)的潜在概率分布,并可以从该分布中生成新的数据。

简单来说,VAE 的目标是:

  1. 学习数据的底层结构:将高维的输入数据(如一张图片)压缩到一个低维的、连续的“潜在空间”中。
  2. 生成新数据:从这个潜在空间中随机采样一个点,并将其解码成一张新的、类似原始数据的数据。

VAE 在名字和结构上与传统自动编码器相似,但其核心思想和数学基础有本质区别。

核心思想:从点估计到分布估计

要理解 VAE,最关键的是理解它与传统自动编码器的区别。

特性传统自动编码器变分自动编码器
编码器输出一个确定的潜在向量一个概率分布的参数(通常是均值和方差)
潜在空间可能是不连续、无结构的连续、有结构的,容易采样
目标完美地重建输入数据学习数据的生成过程,并形成一个平滑的潜在空间
本质一种数据压缩/降维工具一种生成模型

VAE 的核心直觉是: 对于同一个概念(比如“数字2”),可能存在多种变体(不同字体、粗细、倾斜度)。因此,编码器不应该将输入图像映射到潜在空间中的一个,而应该映射到一个区域(即一个分布)。这个分布代表了所有可能生成该输入图像的潜在因素。

VAE 的架构与关键组件

VAE 也由编码器(推理网络)和解码器(生成网络)两部分组成。

1. 编码器
  • 输入:数据点 ( x )(例如,一张图片的像素向量)。
  • 输出:不是一个向量,而是两个向量,共同定义了一个潜在分布 ( q_{\phi}(z|x) )(通常假设为正态分布):
  • 均值向量 ( \mu ):定义了潜在空间中对应该数据点的分布中心。
  • 对数方差向量 ( \log \sigma^2 ):定义了该分布的方差(使用对数方差是为了保证数值稳定性,且可以是负值)。
  • 作用:给定一个输入 ( x ),推断出它可能来自的潜在变量 ( z ) 的后验分布 ( q_{\phi}(z|x) )。
2. 潜在空间与重参数化技巧

这是 VAE 训练中最巧妙的部分。

  • 问题:我们需要从编码器输出的分布 ( N(\mu, \sigma^2) ) 中采样一个潜在变量 ( z ),但“采样”这个操作是不可导的,无法通过反向传播来训练网络。
  • 解决方案重参数化技巧
  • 我们不直接采样 ( z ),而是先从一个标准正态分布 ( N(0,1) ) 中采样一个噪声变量 ( \epsilon )。
  • 然后,利用编码器输出的参数来构造 ( z ):

[ z = \mu + \sigma \odot \epsilon ]

其中 ( \odot ) 表示逐元素相乘。

  • 这样,随机性就来自于与网络参数 ( \phi ) 无关的 ( \epsilon ),而 ( z ) 对于 ( \mu ) 和 ( \sigma ) 是可导的。梯度可以通过 ( z ) 顺利地从解码器传回到编码器。
3. 解码器
  • 输入:从编码器分布中采样并通过重参数化得到的潜在变量 ( z )。
  • 输出:重建的数据 ( x’ ),它应该与原始输入 ( x ) 尽可能相似。解码器学习的是生成分布 ( p_{\theta}(x|z) )。
  • 作用:将潜在空间中的点映射回原始数据空间,即生成数据。

损失函数:平衡重建与正则化

VAE 的损失函数由两部分组成,它反映了 VAE 的两个核心目标。

1. 重建损失
  • 目的:确保解码器能够从潜在变量 ( z ) 中准确地重建出原始输入 ( x )。这衡量了生成数据的保真度。
  • 常用形式
  • 对于实值数据(如图像),通常使用均方误差
  • 对于二值数据,通常使用二元交叉熵
2. KL 散度损失
  • 目的正则化潜在空间。它强制让编码器输出的分布 ( q_{\phi}(z|x) ) 尽可能接近一个先验分布 ( p(z) )(通常为标准正态分布 ( N(0,1) ))。
  • 作用
  • 保证潜在空间的连续性和结构性:所有编码后的分布都向中心(原点)靠拢,防止网络为每个数据点学习一个互不相干的分布。
  • 实现生成能力:由于潜在空间是平滑且连续的,在潜在空间中移动时,解码器的输出也会平滑地变化。这使得我们可以在两个数字的潜在编码之间插值,并生成中间形态的数字。

总损失函数是这两部分的加权和:

[ \mathcal{L}//{VAE} = \mathbb{E}//{z \sim q_{\phi}(z|x)}[\log p_{\theta}(x|z)] - \beta \cdot D_{KL}(q_{\phi}(z|x) || p(z)) ]

其中:

  • ( \mathbb{E}[\log p_{\theta}(x|z)] ) 是重建损失的期望。
  • ( D_{KL} ) 是 KL 散度。
  • ( \beta ) 是一个超参数,用于控制正则化的强度(在 ( \beta )-VAE 中引入,用于获得更解耦的表示)。

VAE 的优势与局限性

优势:
  1. 是一种 principled 的概率生成模型,有坚实的数学基础。
  2. 潜在空间连续、有结构,便于插值和语义操作。
  3. 训练过程相对稳定,与 GAN 相比不容易出现模式崩溃。
  4. 编码器可以用于学习有意义的潜在表示。
局限性:
  1. 生成的样本通常比 GAN 更模糊,缺乏锐利的细节。这是因为重建损失(如 MSE)倾向于生成所有可能输出的平均值。
  2. 可能难以捕获非常复杂的数据分布。

应用场景

  1. 图像生成:生成人脸、艺术品、动漫角色等。
  2. 数据插值:在两张图像之间生成平滑的过渡序列。
  3. 异常检测:重建误差高的样本可以被视为异常。
  4. 表示学习:学习数据的低维、有意义的潜在表示,用于下游任务。
  5. 语音和音乐生成

总结

变分自动编码器通过将“编码”思想从确定性的点估计提升到概率性的分布估计,成功地构建了一个强大的生成模型。其核心——重参数化技巧和由重建损失+KL散度构成的损失函数——巧妙地解决了概率模型训练中的难题,并催生了一系列更先进的生成模型(如 VQ-VAE, NVAE 等)。虽然其在生成图像清晰度上可能略逊于 GAN,但其理论优雅、训练稳定和潜在空间可解释性等优点,使其成为生成式AI领域不可或缺的基石之一。

本文由人工编写,AI优化,转载请注明原文地址: 深度学习模型:变分自动编码器(VAE)

评论 (0)

登录后发表评论

暂无评论,快来发表第一条评论吧!