学习日记37:Vector Quantized Diffusion Model for Text-to-Image Synthesis
提出VQ-Diffusion文本到图像生成模型将VQ-VAE离散隐空间与条件扩散模型结合采用掩码替换扩散策略解决自回归模型的单向偏置与误差累积问题。相较于普通的扩散模型它整体结构、语义更稳定训练更稳、更容易收敛但细节表现力不如连续隐空间扩散且画质细腻度、真实感通常略逊于Stable Diffusion 系列。VQ-VAE把一张连续像素图压缩成一串固定视觉模板的编号也就是从连续空间 → 离散隐空间。它会学习一个 codebook可以理解成图像的视觉单词表。编码器将图片编码为一组特征向量然后找到 codebook 里最相似的模板用这个模板的编号index代表该位置。结果就是一张图被转换成一串离散编号token。最后解码器根据这些编号从 codebook 里取出对应向量再还原成图片。VQ-diffusion就是先有图文对使用训练好的VA-VAE把图片变成离散token,将其对应到codebook中的编号另一边文字也会文字也会被切成 token用 BPE 算法把句子切成子词变成一串整数编号 y长度是 M。然后让 “根据文字 y生成对应图片 x” 的概率尽可能大。之前的自回归方法有问腿也就是单向偏置和累计误差但扩散模型很好没有这些问题。但但现在绝大多数扩散都是连续扩散针对离散分类分布的研究很少。离散扩散过程首先是加噪过程离散扩散的每一步加噪就是用一个矩阵 Qₜ 做 “概率转移”把一个 token 按概率变成另一个 token。矩阵Q就是前一个状态是n,下一个状态是m的概率矩阵K×K大小。V是one-hot编码也就是说 上式中的q就是 “从 n 变成 m” 的那一个概率值。从这些分析可知只要知道了最初的清晰图片x0,那么每一步的xt都可以知道同时也可以看出在加噪过程中这个Q的选择是十分重要的如果选用普通的均匀离散扩散加噪方式太粗暴了模型很难反向还原。于是作者提出使用Mask 扩散不随机乱换 token而是直接把某些位置变成 [MASK]。具体来说codebook中原来只有 K 个视觉模板现在多加一个特殊符号 [MASK]总共有 K1 个类别。对一个正常 token每一步有三种可能γ_t 概率 → 变成 [MASK]Kβ_t 概率 → 随机换成别的 tokenα_t 概率 → 保持不变。如果只掩码、不加一点点随机替换数学上后验会退化模型没法正常学习。只有mask 少量随机替换一起用扩散过程才成立。去噪过程模型不输出向量而是输出每个位置的概率分布模型输入xt 与文本信息y,然后预测一个它认为的x0,然后使用Q矩阵贝叶斯公式算出x0转换到t-1时长啥样 然后把这个作为xt-1。贝叶斯的作用是计算xt-1,它能合理地一步变成 xₜ又能从 x̂₀ 合理地加噪过来。