原理概述
Diffusion Transformer(DiT)是一种结合扩散模型去噪过程与Transformer架构的生成模型。其核心创新在于用Transformer替换传统扩散模型中的U-Net骨干网络,通过自注意力机制实现全局特征建模,突破了U-Net在模型规模扩展时的性能瓶颈。DiT遵循Transformer的缩放定律,参数规模与训练数据量越大,生成效果(如图像质量FID分数)通常越优,为构建数十亿参数的生成模型提供了技术基础。
背景问题:传统扩散模型的扩展困境
传统扩散模型依赖U-Net架构,其核心问题在于:
- 局部感受野限制:U-Net通过卷积操作提取特征,难以捕捉长距离依赖关系,导致生成内容缺乏全局一致性。
- 扩展性瓶颈:U-Net的参数规模受限于卷积层的通道数,难以通过简单增加层数或通道数实现性能线性提升。
- 计算效率低下:U-Net的跳跃连接设计虽能保留多尺度特征,但增加了内存占用和计算复杂度。
DiT的架构设计需理解两个基础概念:
- 扩散模型:通过逐步添加噪声破坏原始数据,再训练模型逆向去噪生成新样本。其核心是马尔可夫链的建模过程。
- Transformer架构:基于自注意力机制,通过多头注意力(Multi-Head Attention)和前馈网络(FFN)实现全局特征交互,支持并行计算与动态权重分配。
DiT的创新在于将Transformer的序列建模能力应用于扩散模型的去噪过程,通过将图像或视频数据编码为序列化嵌入(Embedding),利用自注意力机制捕捉像素间的长距离依赖关系。
系统组成:模块化架构设计
DiT的典型架构包含以下关键模块:
- 输入编码层:将图像或视频数据分割为非重叠的块(Patches),并通过线性投影生成序列化嵌入。例如,将256×256图像分割为16×16的块,每个块映射为768维向量。
- Transformer编码器:由多层自注意力与前馈网络交替堆叠构成,每层包含残差连接与层归一化(LayerNorm)。例如,DiT-XL/2模型使用40层Transformer,每层注意力头数为16。
- 时间步嵌入(Time Embedding):将扩散过程的当前时间步编码为向量,与输入嵌入相加,使模型能感知去噪进度。例如,使用正弦位置编码生成时间步嵌入。
- 输出解码层:将Transformer输出的序列化嵌入还原为图像或视频数据。通常通过反投影(Transposed Convolution)或上采样(Upsampling)实现。
工作流程:扩散与去噪的端到端过程
DiT的运行流程可分为以下步骤:
- 前向扩散:对原始数据(如图像)逐步添加高斯噪声,生成噪声样本序列。例如,在1000步扩散中,第t步的噪声水平由βₜ参数控制。
- 嵌入编码:将噪声样本分割为块并生成序列化嵌入,同时编码时间步信息。伪代码如下:
def encode_input(image, time_step): patches = split_image_to_patches(image) # 分割为16x16块 patch_embeddings = linear_projection(patches) # 线性投影到768维 time_embedding = sinusoidal_position_encoding(time_step) # 时间步编码 return patch_embeddings + time_embedding # 融合时间信息
- Transformer处理:序列化嵌入通过多层Transformer编码器,逐步提取全局特征。每层的注意力计算可表示为:
[
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
]
其中,Q、K、V为查询、键、值矩阵,dₖ为注意力头维度。 - 逆向去噪:Transformer输出通过解码层还原为去噪后的图像,模型通过最小化预测噪声与真实噪声的均方误差(MSE)进行训练。
关键机制:性能提升的核心设计
DiT的性能优势源于以下关键机制:
- 自注意力机制:通过全局特征交互,解决U-Net的局部感受野问题。例如,在生成人脸时,自注意力可同时建模眼睛、鼻子与嘴巴的相对位置。
- 动态权重分配:注意力权重随输入数据动态变化,使模型能聚焦于关键区域。例如,在生成复杂场景时,模型可自动分配更多注意力到前景物体。
- 参数扩展性:Transformer的缩放定律支持通过增加层数或注意力头数提升性能。例如,Flag-DiT将参数规模从600M扩展至7B,FID分数显著优化。
- 时空块处理:视频生成模型(如Sora)通过引入时空块(Spacetime Patches),将视频数据编码为4D序列(高度×宽度×时间×通道),实现时空特征联合建模。
示例说明:图像生成任务中的DiT应用
以DiT-XL/2在ImageNet上的训练为例:
- 数据准备:使用256×256分辨率的ImageNet训练集,共120万张图像。
- 模型配置:40层Transformer,每层16个注意力头,隐藏层维度为2048。
- 训练过程:
- 批量大小(Batch Size)设为4096,使用AdamW优化器,学习率为1e-4。
- 扩散步数设为1000,噪声调度采用余弦函数。
- 结果验证:在50K步训练后,模型在ImageNet验证集上取得FID分数2.27,优于同期U-Net架构的2.85。
技术优势与限制
优势:
- 扩展性强:支持参数规模从百万级到数十亿级的平滑扩展。
- 全局建模能力:自注意力机制有效捕捉长距离依赖关系。
- 模块化设计:输入编码、Transformer编码器与输出解码层可独立优化。
限制:
- 计算成本高:自注意力机制的复杂度为O(n²),需依赖硬件加速(如GPU/TPU)。
- 数据依赖性强:性能提升需大量高质量训练数据支持。
- 长序列处理挑战:视频等长序列数据需分块处理,可能丢失跨块信息。
常见误区
- 误解DiT为纯Transformer模型:DiT仍依赖扩散模型的前向过程,Transformer仅替代U-Net作为骨干网络。
- 忽视时间步嵌入的作用:时间步信息是模型感知去噪进度的关键,缺失会导致生成质量下降。
- 过度依赖参数规模:虽参数扩展能提升性能,但需同步增加训练数据与计算资源,否则可能过拟合。
总结
Diffusion Transformer通过将Transformer架构引入扩散模型,解决了传统U-Net在扩展性与全局建模上的核心问题。其模块化设计、自注意力机制与参数扩展性,为生成模型领域提供了新的技术范式。未来,随着硬件计算能力的提升与算法优化,DiT有望在更高分辨率、更复杂场景(如3D生成、多模态生成)中发挥更大价值。