模型综述 #
VQ-VAE(Vector Quantised - Variational AutoEncoder)首先出现在论《Neural Discrete Representation Learning》
VAE假设隐向量分布服从高斯分布
VQVAE假设隐向量服从类别分布
PixelCNN #
要追溯VQ-VAE的思想,就不得不谈到自回归模型。可以说,VQ-VAE做生成模型的思路,源于PixelRNN、PixelCNN之类的自回归模型,这类模型留意到我们要生成的图像,实际上是离散的而不是连续的。以cifar10的图像为例,它是32×32大小的3通道图像,换言之它是一个32×32×3的矩阵,矩阵的每个元素是0~255的任意一个整数,这样一来,我们可以将它看成是一个长度为32×32×3=3072的句子,而词表的大小是256,从而用语言模型的方法,来逐像素地、递归地生成一张图片(传入前面的所有像素,来预测下一个像素),这就是所谓的自回归方法:
p(x)=p(x1)p(x2|x1)…p(x3n2|x1,x2,…,x3n2−1)
其中p(x1),p(x2|x1),…,p(x3n2|x1,x2,…,x3n2−1)每一个都是256分类问题,只不过所依赖的条件有所不同。
自回归的方法很稳妥,也能有效地做概率估计,但它有一个最致命的缺点:慢。因为它是逐像素地生成的,所以要每个像素地进行随机采样,上面举例的cifar10已经算是小图像的,目前做图像生成好歹也要做到256×256×3的才有说服力了吧,这总像素接近20万个(想想看要生成一个长度为5万的句子),真要逐像素生成会非常耗时。而且这么长的序列,