AR+diffusion的一类工作是怎么做的,相比DDPM式的diffusion工作有什么优势?

AR(自回归)和 Diffusion(扩散模型)这两大阵营,过去几年基本是在两个领域各自发展,一个统治 NLP、一个霸榜图像生成。但最近这一波 AR+Diffusion 的工作,本质上就是想把 Transformers 在大规模扩展上的统治力(Scaling Law) 和 Diffusion 在生成质量与建模连续分布上的优势结合在一起了。简单说就是让AR负责"骨架",Diffusion负责细节。

目前的融合方案也不是简单的“拼凑”而且还分成了两个主流的方法。一个是改了预测的顺序,一个是改了预测的空间

1、重新定义“序列” (Next-Scale Prediction)

这一派的代表作是 VAR (Visual Autoregressive Modeling)

传统的 AR 做图像(比如 VQ-GAN 或 DALL-E 1),把图片切成一堆 Token然后从左上角到右下角逐个预测。这种光栅扫描(Raster Scan)的方式其实是不符合我们画画的方式的,你想啊,有谁画画是从左上角第一个像素画到右下角最后一个的?

所有VAR 做了一个算是很天才的改动:它不再预测“下一个位置”,而是预测“下一个分辨率”。

模型先生成一个 1×1 的全图语义概括,基于这个概括,生成 2×2 的粗略轮廓,再基于 2×2 生成 4×4……一直到 256×256。

虽然数学上它还是 AR(当前的预测依赖于之前的历史),但在视觉效果上它和 Diffusion 的去噪过程简直异曲同工:都是从模糊(低频)到清晰(高频)。这种方法直接让 AR 模型拥有了 Diffusion 那种“由粗到细”的生成质感,同时因为是指数级预测速度也很快。

Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction

2、继续”卷“连续空间 (Continuous AR + Diffusion Loss)

这一派的代表作是 MAR (Masked Autoregressive) 或者 Show-O 这类工作。

以前 AR 做必须用 VQ-VAE 把图像变成离散的 Token(Codebook)这就好比把原本细腻的油画强行变成了“像素风”这种操作中间是有损耗的。

而连续空间的可能性太多了如果直接用均方误差(MSE)或者单纯的回归去预测会得到一团模糊的平均值。这时候就该上Diffusion了。

这类工作把 Diffusion 作为一个损失函数 或者解码头,模型在 AR 的过程中不再是做一个几千类的分类题(也就是不用Softmax)而是预测“应该往哪个方向去噪”。Transformer 负责根据上下文规划大局,Diffusion 负责在每一步里把具体的连续特征画清楚。

https://arxiv.org/abs/2406.11838Show-o: One Single Transformer to Unify Multimodal Understanding and Generation

优势

首先肯定是速度这会快不少,纯Diffusion模型比如DDPM需要跑几百步甚至上千步才能从噪声逐渐去噪成清晰图像。但AR+Diffusion,AR部分可能就几步甚至一步就把大框架定下来了,Diffusion只需要在局部做refinement总采样步数能砍掉很多。

然后就是全局一致性也很好,纯Diffusion有个问题就是它是通过逐步去噪来生成的,对于长程依赖关系的把握肯定是不如AR。所以先用AR定好"骨架"再用Diffusion填细节,生成的东西往往结构更合理。

最后就是控制性方面也更灵活。AR阶段可以很容易地加入各种条件控制,比如你想让某个区域有特定内容,直接在token序列里操作就行,这比在Diffusion的噪声空间里做条件引导要简单的多。而且分成两个阶段后每个阶段都可以独立调参优化,训练起来也更方便。

CALM自编码器

最后我再提一嘴CALM自编码器

CALM自编码器:用连续向量替代离散token,生成效率提升4倍

思路也是一样的都是先离散后连续。

CALM(Contrastive Autoregressive Language-Image Model)也是把文本 Token 换成连续向量的研究。所以可以看到它们都在干同一件事:干掉 Vector Quantization (VQ) / Discrete Token。

它们都使用了一个 Autoencoder 把数据压缩到连续的潜空间(Latent Space),然后让 Transformer 直接在这个连续空间里进行“回归”或者“去噪”。

离散序列建模和连续高质量生成各有所长,所以现在改为了分工合作。AR负责理解语义、规划布局,后面的模块(不管是decoder还是diffusion)负责渲染细节。

原始链接: https://www.zhihu.com/question/1991877566051664226/answer/1993659498397716564
侵权请联系站方: [email protected]

相关推荐

换一批