前言
Diffusion Transformer(DiT)是近年来扩散模型领域的重要创新。它不仅在视频生成中表现突出,在机器人动作预测等具身智能任务中也展现出巨大潜力。
第一部分 Diffusion Transformer (DiT):将扩散过程中的 U-Net 换成 ViT
1.1 什么是 DiT
1.1.1 架构核心:Transformer 替代卷积
在 ViT 出现之前,图像领域的扩散噪声估计器主要依赖基于 CNN 的 U-Net 架构。随着 Vision Transformer 的兴起,研究者开始尝试用 Transformer 替换扩散模型中的骨干网络。
2022 年 12 月,William Peebles 和 Saining Xie 在论文《Scalable Diffusion Models with Transformers》中提出了 DiT 结构。其核心思想是将 DDPM 中的卷积架构 U-Net 替换为 Transformer 架构,即 DiT = DDPM + ViT。
这种设计结合了视觉 Transformer 和扩散模型的优点,使得模型能够利用 Transformer 强大的全局建模能力来处理潜在空间中的图像块(patches)。
1.1.2 三种条件策略
DiT 通过不同的方式引入条件信息(Conditioning),主要包括以下三种策略:
-
adaLN-Zero block 借鉴 ResNets 的初始化经验,作者对自适应层归一化(Adaptive Layer Norm)进行了修改。除了回归缩放参数 γ 和 β,还回归在残差连接前应用的维度方向缩放参数 α。实验表明,这种自适应层归一化效果最好。
-
交叉注意力块 (Cross-Attention) 将时间步 t 和类别 c 的嵌入连接成一个序列,作为额外的 token 输入。在多头自注意力之后增加一个交叉注意层,类似于 LDM 的设计。这种方式增加了约 15% 的计算开销。
-
上下文条件化 (In-context Conditioning) 将时间步和类别向量嵌入作为两个额外 token 追加到输入序列中,像 CLS Token 一样处理。这种方法无需修改标准 ViT 块,计算开销可忽略不计。
在推理过程中,加噪的潜在变量被分解为 patch 并经过多个 DiT Block 处理。最终输出噪声预测值及对应的协方差矩阵,经过 T 步采样后得到降噪后的潜在表示。
1.2 DiT 在视频生成领域中的应用
1.2.1 视频生成的改造方案
要将 DiT 用于视频生成,需要在架构上进行两项关键改造:
-
时空信息的融合 将噪音 Patch 线性化后,并入 Text Prompt Condition 和 Time Step Condition,共同作为 Transformer 的输入。Transformer 内部通常包含三个子模块:
- Local Spatial Attention:负责收集单帧内的空间信息。
- Causal Time Attention:负责收集历史时间信息,确保时间一致性。
- MLP 模块:对时间和空间信息进行非线性融合。
-
支持多分辨率与长宽比 为了支持不同长宽比和分辨率的视频,需要设计特定的 Attention Mask 机制。例如,使用 0/1 Attention Mask 矩阵,确保某帧的 Patch 只能看到本帧内的其他 Patch,而不会泄露到其他帧的信息。这有效解决了 NaViT 导致的分辨率适配问题。
1.2.2 典型应用:CogVideo
CogVideo 是 DiT 在视频生成领域的代表性应用之一,展示了该架构在处理长时序视频生成时的优势。
1.3 相关工作
1.3.1 U-ViT:清华团队的早期探索
在 DiT 提出之前,清华大学朱军团队于 2022 年 9 月发布了《All are Worth Words: A ViT Backbone for Diffusion Models》,提出了 U-ViT 架构。该工作同样尝试用 Transformer 替代 U-Net,并引入了长跳跃连接(Long Skip Connections)以保留低级特征,加速训练收敛。相比 DiT,U-ViT 在 CIFAR10、CelebA 等多个数据集上进行了验证。


