基于Transformer的图像生成算法:Diffusion Transformers(DiT)
题目描述
Diffusion Transformers(DiT)是一种将Transformer架构与扩散模型(Diffusion Models)相结合的新型图像生成算法。传统的扩散模型通常依赖于U-Net作为其骨干网络来学习数据的去噪过程。然而,研究者们提出了一个核心问题:Transformer能否替代U-Net,成为扩散模型中更强大、可扩展性更强的去噪网络?DiT正是为了验证这一假设而设计。它旨在通过纯Transformer的架构,利用其强大的全局建模能力和对大规模数据的优秀扩展性,来提升扩散模型在图像生成质量、细节保真度和计算效率方面的表现。
解题过程(算法详解)
我将从“扩散模型基础”、“为何用Transformer替代U-Net”、“DiT的核心架构”以及“其工作流程”四个方面,循序渐进地为你解析。
第一步:回顾扩散模型的基本原理
理解DiT的前提是掌握扩散模型。扩散模型是一种生成模型,其核心思想是通过一个逐步加噪(前向过程)和逐步去噪(反向过程)的马尔可夫链来生成数据。
- 前向过程(扩散过程):
- 给定一张真实图像
x₀,我们通过T个时间步逐步向其添加高斯噪声。 - 在每个时间步
t,图像x_{t-1}会变成x_t,公式为:x_t = √(α_t) * x_{t-1} + √(1 - α_t) * ε。其中,ε是标准高斯噪声,α_t是一个预先定义的、随时间t递减的噪声调度参数(介于0和1之间)。 - 经过足够多的步数
T后,图像x_T几乎变成了纯高斯噪声。
- 给定一张真实图像
- 反向过程(生成过程):
- 这是模型需要学习的核心。目标是从纯噪声
x_T开始,逐步“猜测”并去除噪声,最终还原出一张逼真的图像x₀。 - 在每一步
t,模型需要预测在x_t中加入的噪声ε,或者直接预测去噪后的图像x_{t-1}。当前主流方法是训练一个神经网络ε_θ(x_t, t)来预测噪声ε。 - 关键:这个神经网络(如U-Net)的输入是带噪图像
x_t和时间步t的嵌入,输出是预测的噪声。通过最小化预测噪声与真实添加噪声之间的差距(如均方误差MSE)来训练网络。
- 这是模型需要学习的核心。目标是从纯噪声
第二步:分析U-Net的局限与Transformer的潜力
在DiT之前,几乎所有高性能扩散模型(如Stable Diffusion)都使用U-Net作为其去噪网络 ε_θ。
- U-Net的特点与局限:
- 优点:具有编码器-解码器结构,通过跳跃连接融合多尺度特征,非常适合捕捉图像的局部细节和全局结构,在图像任务中表现出色。
- 局限:其归纳偏置(如局部卷积)虽然对图像友好,但可能限制了对更复杂、长距离依赖关系的建模能力。更重要的是,其模型容量和计算效率的扩展性(Scaling)不如Transformer直观。
- Transformer的潜力:
- 强大的全局建模:自注意力机制能捕捉图像中任意两个像素(或图像块)之间的关系,不受局部感受野限制。
- 卓越的可扩展性:在自然语言处理等领域已被证明,通过增加模型深度(层数)和宽度(隐藏维度),Transformer的性能可以持续提升。DiT希望将这种“扩展定律”引入图像生成领域。
第三步:详解DiT的核心架构设计
DiT的目标是构建一个纯Transformer的、能够替代U-Net的去噪网络。其架构设计包含以下几个关键模块:
-
图像块嵌入(Patchify):
- 与Vision Transformer (ViT) 类似,DiT首先将输入的带噪图像
x_t(例如,大小为H×W×C)分割成一系列不重叠的小图像块(例如,每个块P×P像素)。 - 每个图像块被展平并通过一个线性投影层,转换为一个
D维的向量,称为 补丁嵌入(Patch Embedding)。 - 这些补丁嵌入的序列,加上一个可学习的[CLS]标记(用于汇总信息)和标准的位置编码(用于保留空间信息),共同构成了Transformer的输入序列。
- 与Vision Transformer (ViT) 类似,DiT首先将输入的带噪图像
-
条件融合机制:
- 扩散模型的反向过程是条件生成过程,条件信息是时间步
t。在DiT中,需要将时间步信息有效地注入到Transformer中。 - DiT探索了多种条件机制,其中效果最好的是 “自适应层归一化(AdaLN)”。
- 具体操作:时间步
t先通过一个多层感知机(MLP)生成一组向量(γ, β)。在每个Transformer块内部,替换掉标准的层归一化(LayerNorm),使用γ和β对激活进行缩放和偏置:AdaLN(h) = γ * LayerNorm(h) + β。这使得模型能够根据不同的去噪时间步动态调整其行为。
- 扩散模型的反向过程是条件生成过程,条件信息是时间步
-
Transformer主体:
- 输入序列经过多个串联的 Transformer块。每个块包含多头自注意力(MSA)和前馈网络(FFN)。
- 为了稳定训练和提升性能,通常会采用 Pre-Norm(在MSA和FFN之前做归一化)或 AdaLN-Zero(一种特殊的初始化技巧,将AdaLN中FFN部分的
γ初始化为0,确保训练初期FFN的输出接近恒等映射,有利于稳定扩散训练)等设计。
-
解码输出:
- 经过所有Transformer块后,取出[CLS]标记对应的特征向量,或对所有补丁嵌入取平均,得到一个全局特征。
- 这个全局特征通过一个最后的线性投影层,输出一个与输入
x_t形状完全相同的预测噪声图ε_θ(x_t, t),或者在某些变体中直接预测图像块。
第四步:整合工作流程
将以上所有部分整合,DiT在一个标准扩散模型框架内的工作流程如下:
- 训练阶段:
- 从数据集中采样一张干净图像
x₀和一个随机时间步t。 - 根据扩散过程公式,计算对应的带噪图像
x_t。 - 将
x_t送入DiT网络(经过图像块嵌入、AdaLN条件化的Transformer块处理、解码)。 - DiT网络输出对噪声
ε的预测ε_θ(x_t, t)。 - 计算预测噪声与真实添加噪声之间的均方误差(MSE Loss),并通过反向传播更新DiT的参数。
- 从数据集中采样一张干净图像
- 推理(生成)阶段:
- 从标准高斯分布中采样一个随机噪声图像
x_T。 - 对于时间步从
t = T到t = 1,循环执行:
a. 将当前带噪图像x_t和时间步t输入训练好的DiT模型,得到预测的噪声ε_θ(x_t, t)。
b. 使用扩散模型的采样器(如DDPM或DDIM的更新公式),利用预测的噪声计算出上一个时间步更干净的图像x_{t-1}。 - 循环结束后,
x₀即为最终生成的高质量图像。
- 从标准高斯分布中采样一个随机噪声图像
总结与意义
Diffusion Transformers(DiT)成功地将Transformer的强扩展性引入了扩散模型。实验表明,通过简单地增加DiT的模型规模(参数量)或输入图像的分辨率(补丁数),生成图像的质量(如FID分数)能够得到显著且持续的提升。这验证了“Transformer作为扩散模型骨干”的可行性,并为构建更大、更强的生成模型开辟了一条清晰的路径。后续的许多工作,如“Scalable Diffusion Models with Transformers”论文和开源的“DiT”项目,都进一步证明了这一架构的优越性,使其成为当前图像生成领域的重要前沿方向之一。