[Paper Reading] VQ-VAE: Neural Discrete Representation Learning
名称
VQ-VAE: Neural Discrete Representation Learning
时间:17.11
机构:Google
TL;DR
VQ全称为Vector Quantised,故名思义,本文相对于VAE最大改进是将VAE的latent representation由连续建模为离散。后续stable diffsusion也使用VQ-VAE进行编解码。
Method
如何离散化?
使用K-means在线聚类embedding space,如架构图fig1所示,encoder在线提取好连续latent feature之后,使用最近邻类别中心作为其离散值,并通过EMA在线更新聚类中心embedding space,所以AE的训练与embedding space的更新是交替进行的,本质上一个在线KMeans算法详细参考Appendix。
梯度反传如何处理?
由上图红色箭头所示,梯度反传时直接将decoder的梯度拷贝给encoder,并没有参考类似于QAT那种梯度反传(实际上也无法直接参考,因为是聚类中心的离散化,而非数值的离散化),作者表示这么简单粗暴的处理实验证明效果也不错。
Loss如何设计?
如下公式所示,第一项为重建loss可优化encoder与decoder,第二项不产生梯度,第三项用来优化encoder产生靠近聚类中心的特征。
Q: 训练完成后如何生成图像?
文中提到利用Pixel-CNN生成latent feature,是一种基于auto-regressive的序列生成方案,原理类似于下图。
Experiment
效果与连续版本的VAE相当,但是可以将图像压缩到更小的space空间,比如 128 × 128 × 3 image space -> 32 × 32 × 1 ,方便一些agressive regression任务直接在discrete latent space上进行,从而节省计算量。
总结与发散
论文名称的VQ全称为Vector Quantised,但个人认为,这里Quantised翻译为“量化”不如翻译成“聚类”更容易理解,只不过每个聚类中心是一个latent space的feature map。
Q:与SD有什么关系?
看到实验部分,就比较容易联想到为什么LDM可以用VQ-VAE了,因为这里已经开始在latent space做PixelCNN了。
相关链接
https://www.cnblogs.com/fariver/p/18063010
VQ-VAE: Neural Discrete Representation Learning
https://spaces.ac.cn/archives/6760
https://zhuanlan.zhihu.com/p/632209862