大家好,这里是好评笔记,本文为试读,查看全文请移步公主号:Goodnote。本文详细介绍VQ-VAE和VQ-VAE-2的原理和训练过程,为后面的dVAE在DALLE中的使用打下坚实的基础。
@[toc]
AE和VAE
参考:深度学习——AE、VAE
VQ-VAE
论文:Neural Discrete Representation Learning
VQ-VAE(Vector Quantized Variational AutoEncoder,向量量化变分自编码器) 主要是将连续潜在空间的点映射到最近的一组离散的向量(即codebook中的向量)。模型引入了离散潜在空间的思想,克服了传统 VAE 中连续潜在空间表示的局限性,能够有效学习高质量的离散特征表示。
传统 VAE 的问题
- 连续潜在空间的限制:
- VAE 的潜在变量 是连续值,这会导致模型生成的表示较为分散、不够紧凑,无法高效捕获复杂数据的离散结构(如图像中的清晰边缘、重复纹理,或离散的语音特征)。
- 后验坍塌问题:
- 潜在变量的表示能力未被充分利用。指编码器生成的潜在表示 对解码器的输出贡献非常小,可能部分或完全被忽略。
- 当 KL 散度正则化过强时,编码器可能输出接近于先验分布(如 ),导致潜在变量 的信息丢失。
VQ-VAE 与 VAE 的对比
| 特点 | VAE | VQ-VAE |
|---|---|---|
| 潜在空间 | 连续空间 | 离散空间 |
| 潜在变量 | 每一维是连续的实数值,包括所有的有理数(如整数、小数和分数)以及无理数 | 每一维是离散的整数 |
| 潜在分布建模 | 高斯分布 | 离散分布(通过 codebook 表示) |
VQ-VAE 的主要改进
-
解决后验坍塌问题:
- 通过 codebook 的离散化潜在变量,解码器被迫使用潜在变量的所有信息,避免后验坍塌。
-
增强生成质量:
- VAE 生成的图像质量相对有限,而 VQ-VAE 可以生成更高分辨率和更清晰的图像。
-
为后续模型奠定基础:
- VQ-VAE 的离散表示为 DALL·E 和 VQ-GAN 等模型的开发提供了关键技术支持。
VQ-VAE 的核心思想
关键点:
- VQ-VAE 的最大特点是引入了 向量量化(Vector Quantization),将连续的潜在变量 离散化。这有助于模型捕捉和表示更加丰富和复杂的数据分布。
- 将编码器输出的连续潜在向量 映射到离散的代码簇(codebook)中最近的离散向量 ,编码范围更加可控。
Codebook 是嵌入空间中一组可学习的向量集合,用来将连续的编码器输出 映射为离散表示 。这些嵌入向量也称为 离散嵌入向量,它们定义了潜在空间中离散值的分布。
高效的重建与生成:
- 编码器将输入映射为潜在空间的连续值。
- 向量量化将这些连续值投影到离散的代码簇中。
- 解码器根据离散化的潜在变量重建输入。
VQ-VAE 模型结构
VQ-VAE 与 VAE 的结构非常相似,只是中间部分不是学习概率分布,而是换成 VQ 来学习 Codebook。
VQ-VAE 的整体结构如下:
Figure 1:
- 左侧:描述 VQ-VAE 的图示。编码器 的输出被映射到最近的嵌入点 。梯度 (红色箭头)将推动编码器改变输出,从而在下一次前向传播中调整配置。
- 右侧:嵌入空间的可视化。编码器输出 被映射到最近的离散点 。
VQ-VAE 的核心思想是输入的图片通过编码器、向量量化模块和解码器的协同作用,将连续潜在变量映射为离散的潜在表示,并最终重建输入数据,得到新图像。以下是模型的主要流程:
1. 编码器 (Encoder)
详细全文请移步公主号:Goodnote。