向量量化的变分自编码器VQ-VAE理论基础的探索

之前探索了变分自编码器VAE中Encoder和Decoder的理论基础

https://blog.csdn.net/liliang199/article/details/156280212

这里进一步探索向量量化的变分自编码器VQ-VAE的理论基础。

所用示例参考和修改自网络资料。

1. 核心思想与动机

VQ-VAE指Vector Quantized Variational AutoEncoder。

VQ-VAE在VAE上引入离散潜在空间,通过向量量化将连续编码映射到离散码本中。

相比VAE其关键差异在于:

1)学习离散表示,更接近自然信号(语言、语音、图像)的本质

2)避免VAE中的后验坍缩问题

3)为后续自回归建模(如PixelCNN)提供高质量的离散潜在表示

这里从多个角度分析和探索VQ-VAE相比VAE的这些差异改进。

2. 模型架构与数学定义

2.1 编码器Encoder

编码器产生连续向量:

其中是编码器神经网络,输出维度为。

2.2 向量量化层

向量量化层主要包括码本、向量量化两部分。

码本(Codebook):

其中是码本大小,离散潜在变量的取值数,d为离散潜在变量的维度。

量化操作:

给定编码器输出,通过最近邻搜索找到码本中最接近的向量:

这产生了离散潜在表示。

2.3 解码器Decoder

解码器从量化后的向量重建数据:

3. 损失函数与训练目标

3.1 总体损失函数

VQ-VAE的损失函数包含三部分:

其中:

表示停止梯度操作,是超参数通常设为0.25。

3.2 各部分说明

1)重构损失(Reconstruction Loss)

  • 使解码器能从量化向量中重建输入

  • 对于图像:通常用L2损失或感知损失

  • 对于离散数据:用交叉熵损失

2)码本损失(Codebook Loss)

  • 更新码本向量使其接近编码器输出

  • sg操作:码本更新时不考虑编码器的梯度

3)承诺损失(Commitment Loss)

  • 鼓励编码器输出承诺于特定的码本向量

  • 防止编码器输出在码本向量之间频繁跳跃

3.3 梯度流处理

量化操作不可导,VQ-VAE使用直通估计器(Straight-Through Estimator)处理梯度。

前向传播:使用量化后的向量

反向传播:将解码器的梯度直接复制到编码器输出

数学上表示为:

3.4 两阶段训练流程

VQ-VAE训练分两个阶段。

第一阶段:训练VQ-VAE

  1. 训练编码器、码本、解码器

  2. 学习高质量的数据离散表示

  3. 得到压缩的潜在空间:个可能的向量

第二阶段:训练先验模型

在训练好的VQ-VAE之上,学习离散潜在变量的先验分布:

常用自回归模型有PixelCNN、Transformer,可捕获离散潜在变量之间的长程依赖关系。

4 相比VAE的优化

4.1 VAE vs VQ-VAE

这里动从多个角度对比VAE和VQ-VAE。

1)潜在空间

VAE采用连续连续空间表示,VQ-VAE采用离散表示。

2)后验分布

VAE采用连续的高斯分布,VQ-VAE采用分类分布(ont-hot)。

3)KL项

VAE采用显式KL散度,VQ-VAE则通过量化隐式约束。

4)正则化

VAE采用KL散度正则化,VQ-VAE则采用码本与承诺损失。

5)从高斯先验采样

VAE从从高斯先验采样,VQ-VAE则从码本索引采样。

4.2 VQVAE理论优势

相比VAE,VQ-VAE有一些列优势。

1)避免了后验坍缩

VAE中当解码器过于强大时,可能忽略潜在变量,导致KL散度项趋向于0。

VQ-VAE通过强制离散表示避免了这一问题。

2)解耦表示学习与生成建模

VQ-VAE专注于学习有效的离散表示,先验模型专注于学习序列依赖关系。

这种分离使得每部分可以独立优化

3)支持多尺度架构

VQ-VAE可以扩展到多尺度,形成层次化离散表示。

每一层捕获不同抽象级别的信息。

5. VQ-VAE核心洞察

5.1 目标函数推导

VQ-VAE可视为最小化以下目标

其中第二项保证编码器输出与量化向量的接近。

VQ-VAE与EM算法也有关联,VQ-VAE的训练类似于期望最大化(EM)算法。

E步相当于将数据点分配到最近的码本向量,具体为最近邻搜索。

M步相当于更新码本向量和网络参数以最小化重构误差。

5.2 实际应用扩展

VQ-VAE有一系列进一步改进,比如VQ-VAE-2、VQ-GAN。

VQ-VAE-2使用多尺度层次化潜在空间,底层捕获局部细节,高层捕获全局结构。

VQ-GAN则结合对抗损失生成更高质量的图像。

VQ-VAE在音频领域也应用广泛。

比如将波形编码为离散token序列,使用Transformer学习token序列的分布。

5.3 VQ-VAE总结

VQ-VAE的核心贡献在于:

1)离散潜在表示,更符合许多模态(语言、语音)的本质

2)解耦训练,表示学习与序列建模分离

3)可扩展性,支持层次化、多尺度架构

4)实用性,为自回归生成模型提供高质量的离散输入

VQ-VAE离散表示在生成建模中优势明显,被后续一系列生成式框架采用,

如DALL-E、AudioLM、Codeformer。

reference


VAE中Encoder和Decoder的理论基础的探索

https://blog.csdn.net/liliang199/article/details/156280212

PixcelCNN-Pytorch

https://github.com/singh-hrituraj/PixelCNN-Pytorch

What Is DALL-E?

https://www.coursera.org/articles/what-is-dall-e

audiolm-pytorch

https://github.com/lucidrains/audiolm-pytorch

VQ-VAE-2

https://github.com/vvvm23/vqvae-2

VQGAN

https://github.com/Westlake-AI/VQGAN

CodeFormer

https://github.com/sczhou/CodeFormer

相关推荐
Navicat中国2 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI2 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区2 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
XCDoris4 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy5 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V5 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI5 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技5 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据5 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化
冬奇Lab5 小时前
开源项目第242期:HyperFrames —— 写 HTML 就能渲染视频,专为 AI Agent 设计的确定性视频框架
人工智能·开源·音视频开发