文章目录
✅ Diffusion Model(基础扩散模型)(像素空间)
↓效率优化
✅ LDM(Latent Diffusion Model,潜在扩散模型 + U-Net)
↓ 架构革新
✅ DiT(Diffusion Transformer)(潜在空间 + Transformer)
- Diffusion Model 是基础理论框架(如DDPM)。
- LDM 是 Diffusion Model 的高效改进版,引入 潜在空间(Latent Space) 降低计算成本。
- DiT 是新一代架构,用 Transformer 替代 UNet,代表扩散模型的未来方向(如SD3、Sora)。
扩散模型的核心思想:Diffusion Models是一种受到非平衡热力学启发的生成模型,其核心思想是通过模拟扩散过程来逐步添加噪声到数据中,并随后学习反转这个过程以从噪声中构建出所需的数据样本。
DiT的架构:DiT架构基于Latent Diffusion Model(LDM)框架,采用Vision Transformer(ViT)作为主干网络,并通过调整ViT的归一化来构建可扩展的扩散模型。如下图所示:
DiT 的结构
DiT(Diffusion Transformer)的结构主要由以下核心单元组成,这些单元协同工作以实现基于Transformer的扩散模型:
- 输入处理单元
Patchify模块
- 将输入图像分割为 p × p p \times p p×p 的非重叠块(patches)
- 每个块展平为token,通过线性投影映射到隐藏维度 d d d
- 输出:图像token序列 X ∈ R N × d \mathbf{X} \in \mathbb{R}^{N \times d} X∈RN×d( N N N为token数)
条件信息嵌入
- 时间步 t t t 和类别标签 c c c 的嵌入:
- 时间步 t t t 通过正弦位置编码或MLP嵌入
- 类别 c c c 通过可学习嵌入表映射
- 可选处理方式:拼接为额外token(In-context)或生成调制参数(adaLN)
- 时间步 t t t 和类别标签 c c c 的嵌入:
- 核心Transformer块(DiT Block)
每个DiT Block包含以下子单元(以adaLN-Zero为例):
(1) 自适应归一化层(adaLN)
- 根据条件 t , c t,c t,c 动态生成LayerNorm参数:
γ , β = MLP ( Embed ( t ) + Embed ( c ) ) \gamma, \beta = \text{MLP}(\text{Embed}(t) + \text{Embed}(c)) γ,β=MLP(Embed(t)+Embed(c)) - 对输入token做条件归一化:
X ′ = γ ⋅ LayerNorm ( X ) + β \mathbf{X}' = \gamma \cdot \text{LayerNorm}(\mathbf{X}) + \beta X′=γ⋅LayerNorm(X)+β
(2) 多头自注意力(MSA)
- 标准Scaled Dot-Product Attention
- 保留ViT的注意力头配置(如DiT-XL为16头)
(3) 残差连接与零初始化缩放
- 引入可学习的缩放参数 α \alpha α(初始化为0):
X ′ ′ = X + α ⋅ MSA ( X ′ ) \mathbf{X}'' = \mathbf{X} + \alpha \cdot \text{MSA}(\mathbf{X}') X′′=X+α⋅MSA(X′)
(4) 前馈网络(FFN)
- 两层MLP(隐藏层扩展比通常为4)
- 同样应用adaLN和残差缩放:
X ′ ′ ′ = X ′ ′ + α ′ ⋅ FFN ( adaLN ( X ′ ′ ) ) \mathbf{X}''' = \mathbf{X}'' + \alpha' \cdot \text{FFN}(\text{adaLN}(\mathbf{X}'')) X′′′=X′′+α′⋅FFN(adaLN(X′′))
- 解码输出单元
最终层归一化
- 对最后一层DiT Block输出做条件归一化(adaLN或标准LN)
线性解码器
- 将每个token映射为 p × p × 2 C p \times p \times 2C p×p×2C 张量
- 前 C C C 通道:噪声预测 ϵ θ \epsilon_\theta ϵθ
- 后 C C C 通道:协方差预测 log Σ θ \log \Sigma_\theta logΣθ(对数方差确保正定性)
- 将每个token映射为 p × p × 2 C p \times p \times 2C p×p×2C 张量
空间重组
- 将解码后的token重新排列为原始图像空间布局
- 输出:与输入同尺寸的噪声图 + 协方差图
- 条件处理单元(可选变体)
根据设计选择可能包含:
- 交叉注意力块:添加Key/Value来自条件嵌入的交叉注意力层
- FiLM调制:用条件向量对中间特征做仿射变换
- Token拼接:将条件嵌入作为额外token输入
- 整体架构流程
输入图像 → Patchify → 图像Token
条件信息 → 嵌入 → 条件Token/参数
↓
[N × DiT Blocks]
(adaLN-Zero / Cross-Attn / 其他变体)
↓
Final LayerNorm → 线性解码 → 空间重组
↓
噪声预测 + 协方差预测
关键设计特点
- 完全Transformer化:无CNN组件,纯基于注意力机制
- 条件集成灵活性:支持多种条件注入方式(adaLN最优)
- 对称输入输出:保持空间尺寸一致性,适合扩散任务
- 可扩展性:通过调整深度 N N N、隐藏层 d d d、头数实现模型缩放(S/B/L/XL)
这种结构使DiT既能继承Transformer的全局建模能力,又适配扩散模型的迭代去噪需求。
处理过程
The Diffusion Transformer (DiT) architecture
DiT的处理过程主要包括以下几个阶段:
- 数据准备和预处理:将输入的图像或视频数据转换为模型可以处理的格式。例如,对于图像,会将其切分成固定大小的patches(小块),然后将这些patches转换为特征向量;对于视频,先通过视频压缩网络(视频编码器)将视频数据压缩到一个低维度潜在空间中,得到视频内容的紧凑表征,再将压缩后的视频表征分解成一系列的时空补丁,这些补丁被视为Transformer模型的输入tokens。
- 噪声引入:在数据预处理后的特征向量上逐步引入噪声,形成一个噪声增加的扩散过程。这个过程通常遵循一定的数学分布,如高斯分布,噪声的程度由一个时间步长变量 t t t控制。在 t = 0 t = 0 t=0时, x 0 x_0 x0代表原始图像或视频的潜在表示;随着 t t t逐渐增大,数据中的噪声逐渐增多,到 t = 1000 t = 1000 t=1000时, x 1000 x_{1000} x1000几乎是纯噪声。
- 模型训练:使用引入了噪声的特征向量作为输入,训练DiT模型。模型的目标是学习如何逆转噪声增加的过程,即从噪声数据恢复出原始数据。DiT接受带有噪声的补丁和相应的条件信息(如文本提示)作为输入,通过训练学习去除噪声并恢复出原始的“干净”补丁。在训练过程中,通常会使用损失函数来衡量模型预测的噪声与实际添加的噪声之间的差异,然后通过优化算法来调整模型的参数,以最小化损失函数。
- 图像或视频生成:在模型训练完成后,可以通过输入噪声数据(或随机生成的噪声)到模型中,经过模型的处理后生成新的图像或视频。具体来说,从纯噪声开始,按照一定的采样策略,逐步利用模型去除噪声,生成接近原始数据的样本。例如,从一个随机的噪声向量开始,通过多次迭代,每次迭代都根据当前的噪声状态和模型的参数来预测下一个更接近“干净”状态的向量,最终得到生成的图像或视频的潜在表示。如果是视频生成,还需要将恢复的“干净”时空补丁重新组合成连贯的视频。
- 输出调整:生成的图像或视频内容可以根据需要调整大小和格式,以适应不同的分辨率、持续时间和宽高比需求。例如,调整图像的分辨率以适配不同的显示设备,或者调整视频的时长和宽高比以满足特定的应用场景。
上述过程既包含训练,也包含推理。具体如下:
- 训练:上述内容中的“数据准备和预处理”“噪声引入”以及“模型训练”步骤属于训练过程。在训练阶段,模型通过学习大量带有噪声的数据以及相应的条件信息,来掌握去除噪声、恢复原始数据的能力,不断调整自身的参数以最小化损失函数,从而逐渐优化模型的性能。
- 推理:“图像或视频生成”和“输出调整”步骤属于推理过程。在推理阶段,模型利用训练好的参数,对输入的噪声数据(或随机生成的噪声)进行处理,逐步生成新的图像或视频,并根据实际需求对生成的结果进行调整。
详细步骤
Diffusion Transformers (DiTs) 是一种结合了扩散模型和Transformer架构的新型生成模型,其处理过程主要分为以下几个关键步骤:
1. 输入预处理(Patchify)
Patchify是将空间输入转换为序列化Token的核心预处理层。
DiT基于Vision Transformer (ViT)架构,首先将输入的潜在表示(latent representation)分割成不重叠的图像块(patches)。
- 输入图像 x ∈ R H × W × C x \in \mathbb{R}^{H \times W \times C} x∈RH×W×C 被划分为非重叠的 P × P P \times P P×P patches,展平为序列 z ∈ R N × ( P 2 ⋅ C ) z \in \mathbb{R}^{N \times (P^2 \cdot C)} z∈RN×(P2⋅C),其中 N = H W P 2 N = \frac{HW}{P^2} N=P2HW 是Token数量。
- 每个Patch通过线性投影(learnable projection)映射为隐向量(即Token),类似ViT。
shape I × I × C :VAE编码器输出的空间表示(noised latent)通常具有固定的形状。对于输入为 256 × 256 × 3 256×256×3 256×256×3的RGB图像,经过VAE编码器压缩后,输出的潜在空间表示zzz的形状为 32 × 32 × 4 32×32×4 32×32×4 。
输入处理:
DiT的输入是一个空间表示 z z z(对于256×256×3的图像, z z z的形状为32×32×4)。DiT的第一层是 “Patchify”,它将空间输入转换为由 T T T个Token组成的序列,每个Token的维度为 d d d。具体实现方式是对输入中的每个Patch进行线性嵌入(Linear Embedding)。
位置编码:
在Patchify之后,我们对所有输入Token应用标准的ViT频率位置编码(正弦-余弦版本)。
Token数量 T T T与Patch大小 p p p的关系:
- Patchify生成的Token数量 T T T由超参数 p p p(Patch大小)决定。
- 如图4所示, p p p减半会使 T T T变为原来的4倍,从而导致Transformer的总计算量(GFLOPs)至少增加4倍。
- 但需要注意的是,调整 p p p不会显著影响下游模型的参数量,因为参数主要取决于隐藏层维度 d d d和网络深度。
DiT设计中的 p p p选择:
在DiT的设计空间中,我们测试了 p = 2 , 4 , 8 p=2, 4, 8 p=2,4,8三种不同的Patch大小,以权衡计算效率和模型性能。
2. 位置编码与条件嵌入
位置编码:采用ViT中的正弦-余弦位置编码,为token序列添加空间位置信息,确保模型能理解图像块的空间关系。
条件嵌入:扩散模型需要 时间步 t t t 和类别标签 c c c 等条件信息。DiT通过以下方式融合条件:
- 自适应层归一化(adaLN):根据条件动态调整归一化参数。
- 交叉注意力机制:将条件信息作为额外的token序列,通过注意力机制与图像token交互。
- 时间步 t t t:通过正弦位置编码或可学习嵌入(如MLP)转换为向量 t e m b t_{emb} temb。
- 条件信息(如类别标签、文本描述):通过额外的嵌入层编码为 c e m b c_{emb} cemb。
这些嵌入可能通过拼接或相加合并到图像Token中。
3. Transformer块处理
DiT的核心是由多个Transformer块堆叠而成,每个块包含:
- 多头自注意力(Multiple Self-Attention):捕捉图像块之间的全局依赖关系,例如生成图像时协调不同区域的一致性。
- 前馈神经网络(FFN):对注意力输出进行非线性变换,增强表达能力。
- 条件控制:通过adaLN-Zero等机制,将时间步和类别标签信息注入每一层,指导去噪过程。
DiT的Transformer层在ViT基础上扩展,关键设计包括:
自适应层归一化(AdaLN)
- 替代标准LayerNorm,将时间步 t e m b t_{emb} temb 和条件 c e m b c_{emb} cemb 动态注入归一化层:
AdaLN ( z ) = γ ( t e m b , c e m b ) ⋅ z − μ ( z ) σ ( z ) + β ( t e m b , c e m b ) \text{AdaLN}(z) = \gamma(t_{emb}, c_{emb}) \cdot \frac{z - \mu(z)}{\sigma(z)} + \beta(t_{emb}, c_{emb}) AdaLN(z)=γ(temb,cemb)⋅σ(z)z−μ(z)+β(temb,cemb)
其中 γ , β \gamma, \beta γ,β 由时间/条件嵌入通过MLP生成。
- 替代标准LayerNorm,将时间步 t e m b t_{emb} temb 和条件 c e m b c_{emb} cemb 动态注入归一化层:
多头自注意力(MSA)与MLP
- 标准Transformer结构,但可能引入交叉注意力(Cross-Attention)处理条件信息(如文本描述)。
Token交互与输出
- 所有Token通过多层Transformer块交互,最终输出预测的噪声 ϵ θ \epsilon_\theta ϵθ 或去噪后的图像 x 0 x_0 x0。
4. 噪声预测与反向扩散 (Transformer decoder)
- 训练阶段:DiT学习预测前向扩散过程中添加的噪声 ϵ θ ( z t , t , c ) \epsilon_\theta(z_t, t, c) ϵθ(zt,t,c),损失函数为噪声预测的MSE和协方差的KL散度。
- 采样阶段:(和推理可互换,均指模型生成数据的去噪过程)
- 从随机噪声 z T z_T zT开始,逐步迭代去噪。
- 每一步通过DiT预测噪声 ϵ θ ( z t , t , c ) \epsilon_\theta(z_t, t, c) ϵθ(zt,t,c),并更新潜在表示 z t − 1 z_{t-1} zt−1。
- 最终得到去噪后的潜在表示 z 0 z_0 z0,通过VAE解码器生成高质量图像。
5. 可扩展性与性能
DiT通过增加Transformer的深度、宽度或输入token数量(减小patch大小)提升模型复杂度(GFLOPs),实验表明更高的GFLOPs通常对应更低的FID(图像质量更高)。例如,DiT-XL/2在ImageNet 256×256任务中达到FID 2.27,超越传统U-Net架构的扩散模型。
总结
DiT的处理过程通过Patch化输入、Transformer主干和动态条件注入,将扩散模型的去噪任务转化为序列预测问题。其设计保留了ViT的优雅性,同时通过AdaLN等机制适配生成任务,成为扩散模型领域的高效架构。
LDMs
(Latent Diffusion Models, LDMs)
核心思想:直接在高分辨率像素空间训练扩散模型计算成本过高。LDMs 在 DiTs 的架构中扮演着基础框架与效率优化核心的角色,潜在扩散模型(LDMs)采用两阶段方法解决该问题:
潜在扩散模型(Latent Diffusion Models, LDMs)通过两阶段训练策略显著降低了计算成本,同时保持了生成图像的高质量。以下是其核心流程和技术细节:
1. 两阶段训练流程
阶段一:预训练自动编码器(VAE)
使用变分自编码器(VAE)将高分辨率图像 x ∈ R H × W × 3 x \in \mathbb{R}^{H \times W \times 3} x∈RH×W×3压缩为低维潜在表示 z = E ( x ) ∈ R h × w × c z = E(x) \in \mathbb{R}^{h \times w \times c} z=E(x)∈Rh×w×c(如 64 × 64 × 4 64 \times 64 \times 4 64×64×4),其中 E E E为编码器, D D D为解码器。此阶段通过感知损失(如LPIPS)和对抗损失优化,确保潜在空间保留语义信息并支持高质量重建。阶段二:潜在空间扩散训练
在冻结的VAE编码器基础上,训练扩散模型(如U-Net)对潜在表示 z z z进行去噪。目标函数为:
L L D M = E z , t , ϵ [ ∥ ϵ − ϵ θ ( z t , t ) ∥ 2 ] L_{LDM} = \mathbb{E}_{z,t,\epsilon} \left[ \|\epsilon - \epsilon_\theta(z_t, t)\|^2 \right] LLDM=Ez,t,ϵ[∥ϵ−ϵθ(zt,t)∥2]
其中 ϵ θ \epsilon_\theta ϵθ为噪声预测网络, t t t为时间步。相比像素空间扩散,计算量减少64倍(如 51 2 2 → 6 4 2 512^2 \rightarrow 64^2 5122→642)。
2. 关键优势
- 计算效率:潜在空间操作大幅降低内存和计算需求(如Stable Diffusion的U-Net仅需处理 64 × 64 × 4 64 \times 64 \times 4 64×64×4张量),使高分辨率生成(如1024×1024)可在消费级GPU上实现。
- 条件生成灵活性:通过交叉注意力机制注入文本、边界框等条件(如CLIP文本编码器),支持多模态控制生成。
- 质量与速度平衡:DDIM等采样器允许跳过中间步骤(10-50步),加速推理而不显著降低质量。
3. 与像素空间扩散的对比
特性 | 潜在扩散模型 (LDM) | 像素空间扩散模型 |
---|---|---|
计算复杂度 | 低(潜在空间操作) | 高(直接处理像素) |
训练数据维度 | 压缩后潜在表示(如64×64×4) | 原始图像(如512×512×3) |
典型应用 | Stable Diffusion, DALL·E 2 | 早期DDPM, Imagen |
重建依赖 | 需预训练VAE | 无需额外编码器 |
4. 应用与扩展
- 文本到图像:如Stable Diffusion结合CLIP文本编码器生成符合描述的图像。
- 超分辨率与修复:在潜在空间进行局部编辑或分辨率提升。
- 架构创新:DiT(Diffusion Transformer)等将Transformer引入潜在扩散,进一步优化长程依赖建模。
LDMs通过分离压缩与生成阶段,实现了效率与质量的平衡,成为当前生成式AI的主流框架。
潜在扩散模型(LDMs)在推理阶段的流程可分为以下步骤,结合了潜在空间操作与条件控制的高效生成:
LDMs在推理阶段的流程
1. 条件输入编码(如适用)
- 文本/图像条件处理:若需条件生成(如文本描述),输入条件 y y y(如CLIP文本编码)通过专用编码器 τ θ \tau_\theta τθ映射为中间表示,用于后续交叉注意力控制。
2. 潜在空间噪声采样
- 初始噪声生成:从标准高斯分布采样潜在噪声 z T ∼ N ( 0 , I ) z_T \sim \mathcal{N}(0, I) zT∼N(0,I),维度为 h × w × c h \times w \times c h×w×c(如 64 × 64 × 4 64 \times 64 \times 4 64×64×4),远低于原始像素空间。
3. 迭代去噪(逆向扩散)
- U-Net/Transformer去噪:通过时间步 t = T t=T t=T到 t = 1 t=1 t=1的迭代,模型预测噪声并更新潜在表示:
z t − 1 = 1 α t ( z t − 1 − α t 1 − α ˉ t ϵ θ ( z t , t , τ θ ( y ) ) ) + σ t ϵ z_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( z_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \epsilon_\theta(z_t, t, \tau_\theta(y)) \right) + \sigma_t \epsilon zt−1=αt1(zt−1−αˉt1−αtϵθ(zt,t,τθ(y)))+σtϵ
其中 ϵ θ \epsilon_\theta ϵθ为去噪网络(如U-Net或DiT), α t \alpha_t αt为噪声调度系数。 - 条件注入:通过交叉注意力机制将 τ θ ( y ) \tau_\theta(y) τθ(y)与 z t z_t zt融合,动态指导生成内容。
4. 潜在空间解码
- VAE解码:最终去噪的潜在表示 z 0 z_0 z0通过冻结的VAE解码器 D D D重建为像素空间图像:
x = D ( z 0 ) x = D(z_0) x=D(z0)
解码器保留训练阶段的权重,确保高分辨率细节还原。
5. 后处理(可选)
- 超分辨率或修复:部分流程可能叠加额外模块(如ESRGAN)进一步提升输出质量。
关键优化技术
- 采样加速:采用DDIM等非马尔可夫采样器,允许跳步生成(如20步替代1000步)。
- 显存效率:潜在空间操作降低显存占用约64倍,支持高分辨率生成(如1024×1024)。
LDMs通过分离压缩与生成阶段,在保证质量的同时显著提升推理效率,成为Stable Diffusion等工具的核心框架。
LDMs在训练阶段的流程
潜在扩散模型(LDMs)的训练流程分为两个核心阶段,结合了自编码器预训练与潜在空间扩散模型优化,具体如下:
1. 预训练自编码器(VAE)
- 目标:学习图像的高效低维表示(潜在空间 z z z),降低后续扩散模型的计算复杂度。
- 步骤:
- 数据压缩:编码器 E E E将图像 x x x映射到潜在空间 z = E ( x ) z = E(x) z=E(x),维度通常为 64 × 64 × 4 64 \times 64 \times 4 64×64×4(远低于原始像素空间)。
- 重建训练:解码器 D D D从 z z z重建图像 x ^ = D ( z ) \hat{x} = D(z) x^=D(z),最小化重建损失(如MSE或感知损失):
L V A E = E x ∼ p ( x ) ∥ x − D ( E ( x ) ) ∥ 2 \mathcal{L}_{VAE} = \mathbb{E}_{x \sim p(x)} \|x - D(E(x))\|^2 LVAE=Ex∼p(x)∥x−D(E(x))∥2 - 冻结参数:训练完成后, E E E和 D D D的参数固定,仅用于后续潜在空间的编码与解码。
2. 训练潜在扩散模型(DM)
- 目标:在潜在空间 z z z中学习扩散与去噪过程,生成高质量潜在表示。
- 步骤:
- 潜在变量加噪:对 z 0 = E ( x ) z_0 = E(x) z0=E(x)按时间步 t t t添加高斯噪声,生成 z t z_t zt:
z t = α t z 0 + 1 − α t ϵ , ϵ ∼ N ( 0 , I ) z_t = \sqrt{\alpha_t} z_0 + \sqrt{1-\alpha_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) zt=αtz0+1−αtϵ,ϵ∼N(0,I)
其中 α t \alpha_t αt为噪声调度系数(如线性或余弦调度)。 - 噪声预测:U-Net或Transformer模型 ϵ θ \epsilon_\theta ϵθ预测噪声 ϵ ^ \hat{\epsilon} ϵ^,输入为 z t z_t zt和时间步 t t t(嵌入为高维向量)。
- 条件控制(可选):若需文本/图像条件 y y y,通过交叉注意力机制融合 τ θ ( y ) \tau_\theta(y) τθ(y)与 z t z_t zt:
Attention ( Q , K , V ) = softmax ( Q K T d ) V , Q = W Q φ i ( z t ) , K , V = W K , W V τ θ ( y ) \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V, \quad Q = W_Q \varphi_i(z_t), \ K,V = W_K, W_V \tau_\theta(y) Attention(Q,K,V)=softmax(dQKT)V,Q=WQφi(zt), K,V=WK,WVτθ(y) - 优化目标:最小化预测噪声与真实噪声的差异:
L L D M = E z 0 , ϵ , t ∥ ϵ − ϵ θ ( z t , t , τ θ ( y ) ) ∥ 2 \mathcal{L}_{LDM} = \mathbb{E}_{z_0, \epsilon, t} \|\epsilon - \epsilon_\theta(z_t, t, \tau_\theta(y))\|^2 LLDM=Ez0,ϵ,t∥ϵ−ϵθ(zt,t,τθ(y))∥2
通过梯度下降更新 ϵ θ \epsilon_\theta ϵθ参数。
- 潜在变量加噪:对 z 0 = E ( x ) z_0 = E(x) z0=E(x)按时间步 t t t添加高斯噪声,生成 z t z_t zt:
3. 关键设计
- 两阶段解耦:VAE与DM独立训练,避免联合优化的复杂性。
- 计算效率:潜在空间操作减少约64倍计算量,支持高分辨率生成。
- 条件扩展性:交叉注意力机制支持多模态控制(文本、布局等)。
总结
LDMs通过分离感知压缩(VAE)与语义生成(DM),在降低计算需求的同时保持生成质量。其训练流程的核心是潜在空间的高效扩散建模,为Stable Diffusion等应用奠定基础。
DiT 的输入格式详解
DiT(Diffusion Transformer)输入格式与传统扩散模型不同,需同时处理图像数据和扩散过程信息。以下是关键要点:
1. 输入组成
DiT的输入通常包含三部分:
- 图像Patch嵌入
- 时间步(Timestep)编码
- 条件信息(如文本/类别)
具体结构如下表:
输入类型 | 数据处理方式 | 维度 | 作用 |
---|---|---|---|
图像输入 | 分割为Patch后线性投影 | (B, N, D) |
提供待去噪的图像内容 |
时间步(t) | 通过正弦编码或MLP嵌入 | (B, D_t) 或 (B, N, D_t) |
控制扩散过程的噪声阶段 |
条件输入(可选) | 文本编码(CLIP)、类别标签等 | (B, D_c) |
引导生成内容(如文本描述) |
2. 图像Patch处理(核心步骤)
DiT将图像视为序列化的Patch,类似ViT(Vision Transformer):
- 图像分块
- 输入图像 x ∈ R H × W × C x \in \mathbb{R}^{H \times W \times C} x∈RH×W×C 被划分为 N N N 个 P × P P \times P P×P 的Patch。
- Patch数量: N = H × W P 2 N = \frac{H \times W}{P^2} N=P2H×W(例如,256×256图像分16×16 Patch → N = 256 N=256 N=256)。
- Patch嵌入
- 每个Patch通过线性层映射到维度 D D D:
z ∈ R N × D , D = 模型隐藏层维度 z \in \mathbb{R}^{N \times D}, \quad D = \text{模型隐藏层维度} z∈RN×D,D=模型隐藏层维度 - 位置编码:添加可学习的Position Embedding(与ViT相同)。
- 每个Patch通过线性层映射到维度 D D D:
3. 时间步(Timestep)编码
扩散模型需要知道当前去噪步数 t t t:
- 编码方式:
- 方案1:通过MLP将标量 t t t 映射为 D t D_t Dt 维向量,广播到每个Patch。
- 方案2:直接使用正弦位置编码(类似Transformer)。
- 融合方式:
- 与Patch嵌入相加: z = z + MLP ( t ) z = z + \text{MLP}(t) z=z+MLP(t)
- 或作为额外Token拼接:
[z; t_embed]
4. 条件信息整合
- 文本条件(如CLIP文本编码):
- 文本特征 c ∈ R D c c \in \mathbb{R}^{D_c} c∈RDc 通过交叉注意力(Cross-Attention)注入DiT。
- 或直接与Patch嵌入拼接。
- 类别标签:
- 类似时间步,嵌入为向量后与图像Token交互。
5. 输入格式示例(代码)
以PyTorch风格伪代码为例:
import torch
def DiT_forward(x, t, text_embed):
# 输入:
# x: 图像 [B, C, H, W]
# t: 时间步 [B]
# text_embed: 文本编码 [B, D_c]
# 1. 图像分块与嵌入
B, C, H, W = x.shape
patches = patchify(x, patch_size=16) # [B, N, D]
# 2. 时间步编码
t_embed = timestep_embedding(t, hidden_dim=D) # [B, D_t]
t_embed = t_embed.unsqueeze(1).expand(-1, N, -1) # [B, N, D_t]
# 3. 条件信息(文本)
text_embed = text_embed.unsqueeze(1).expand(-1, N, -1) # [B, N, D_c]
# 4. 合并输入
h = torch.cat([patches, t_embed, text_embed], dim=-1) # [B, N, D + D_t + D_c]
# 5. 输入DiT Transformer
output = DiT_transformer(h)
return output
6. 实际应用(如Stable Diffusion 3)
- 输入分辨率:SD3的DiT支持动态分辨率,但需保持Patch数 N N N 一致。
- 多模态条件:可同时输入文本+深度图等(类似ControlNet)。
7. 关键点总结
- 图像序列化:通过Patch分割将图像转换为Transformer可处理的序列。
- 时间步编码:告知模型当前去噪阶段。
- 灵活扩展:支持文本、类别、结构图等多种条件输入。
DiT的输入设计使其兼具ViT的灵活性和扩散模型的生成能力,成为新一代扩散模型的核心架构。
DiT block design
DiT(Diffusion Transformer)的Block Design是其核心创新之一,旨在高效融合噪声图像输入与条件信息(如时间步t、类别标签c等)。
在分块处理(patchify)之后,输入tokens会通过一系列Transformer块进行处理。除了带噪声的图像输入(noised image inputs)外,扩散模型有时还需要处理其他条件信息,如噪声时间步 t t t、类别标签 c c c、自然语言等。DiT探索了四种不同的Transformer块变体,它们以不同方式处理条件输入。这些设计对标准ViT块进行了微小但重要的修改。
以下是针对DiT(Diffusion Transformer)四种条件处理块设计的详细中文解析,结合您补充的论文描述进行结构化说明:
1. 上下文条件化(In-context Conditioning)
- 机制:
将时间步 t t t 和类别标签 c c c 的嵌入向量作为两个额外的 token 直接拼接到图像 token 序列中(类似 ViT 的 [CLS] token),使用标准 ViT 块处理,最终移除条件 token。 - 特点:
- 零计算开销:仅增加序列长度,Gflops 几乎不变。
- 隐式交互:依赖自注意力混合条件与图像信息,无显式条件控制。
- 适用场景:轻量级条件需求,如简单标签或时间步。
2. 交叉注意力块(Cross-attention Block)
- 机制:
- 将 t t t 和 c c c 的嵌入拼接为独立的条件序列(长度=2)。
- 在 Transformer 块的 自注意力后插入交叉注意力层,图像 token 作为 Query,条件序列作为 Key/Value。
- 特点:
- 高灵活性:支持复杂条件(如文本描述)。
- 计算成本高:Gflops 增加约 15%(因额外注意力层)。
- 关联工作:类似 LDM(Latent Diffusion Models)的类别条件处理。
3. 自适应层归一化块(adaLN Block)
(adaLN) Block 是一种高效的条件信息融合机制,通过动态调整归一化参数实现条件控制
- 机制:
- 将 t t t 和 c c c 的嵌入向量相加,通过一个小型 MLP 回归出参数:
- LayerNorm 的缩放因子 γ \gamma γ 和偏移量 β \beta β。
- 替换标准 LayerNorm 为条件依赖的 AdaLN:
AdaLN ( x , t , c ) = γ ( t , c ) ⋅ x − μ σ + β ( t , c ) \text{AdaLN}(x, t,c) = \gamma(t,c) \cdot \frac{x - \mu}{\sigma} + \beta(t,c) AdaLN(x,t,c)=γ(t,c)⋅σx−μ+β(t,c)
γ ( t , c ) 和 β ( t , c ) \gamma(t,c) 和\beta(t,c) γ(t,c)和β(t,c)由一个小型MLP(如全连接层+SiLU激活)从 t + c t+c t+c的嵌入中预测得到
- 将 t t t 和 c c c 的嵌入向量相加,通过一个小型 MLP 回归出参数:
- 特点:
- 计算高效:Gflops 增加最少,仅需小型 MLP。
- 全局条件控制:所有 token 共享相同的 γ / β \gamma/\beta γ/β,无空间区分。
- 设计来源:借鉴 GAN 和扩散 U-Net 的自适应归一化(如 StyleGAN)。
adaLN通过动态归一化参数实现了高效的条件融合,是DiT在计算效率与生成质量间平衡的关键设计
4. 零初始化 adaLN 块(adaLN-Zero Block)
通过零初始化残差连接和动态参数调制优化训练稳定性与生成质量
- 机制:
在 adaLN 基础上扩展:- 额外回归一组残差缩放参数 α \alpha α,应用于残差连接前。
- 初始化时强制 α = 0 \alpha=0 α=0:使初始阶段每个块近似恒等映射(identity function)。
- 动机:
- 借鉴 ResNet 和 U-Net 的零初始化策略(如零初始化卷积/BatchNorm),提升训练稳定性。
- 扩散模型需逐步去噪,恒等初始化有助于早期训练。
- 优势:
- 比普通 adaLN 更稳定,适合大规模训练。
综合对比表
设计 | 条件融合方式 | 计算开销 | 训练稳定性 | 生成质量 | 典型应用 |
---|---|---|---|---|---|
In-Context Conditioning | Token拼接 | 最低 | 高 | 中等 | 类别标签生成 |
Cross-Attention | 显式交叉注意力 | 高 | 中等 | 高 | 文本到图像 |
adaLN | 动态归一化参数调制 | 最低 | 高 | 高 | ImageNet生成 |
adaLN-Zero | 动态参数+零初始化残差 | 最低 | 最高 | 最优 | DiT-XL高分辨率生成 |
设计选择建议
- 计算效率优先 → 选择 adaLN-Zero(论文中表现最佳,兼顾效率与稳定性)。
- 多模态条件(如文本)→ 选择 交叉注意力块(需接受计算代价)。
- 轻量级条件 → 选择 上下文条件化(无需修改块结构)。
Model size
DiT(Diffusion Transformer)模型根据不同的计算需求和性能目标,设计了四种标准配置:DiT-S、DiT-B、DiT-L 和 DiT-XL。这些配置通过调整Transformer块的层数 N N N、隐藏层维度 d d d和注意力头数,实现了从轻量级到大规模模型的覆盖,具体对比如下:
模型配置与计算量
模型 | 参数量范围 | GFLOPs范围 | 典型应用场景 |
---|---|---|---|
DiT-S | 最小 | 0.3 GFLOPs | 轻量级任务或低资源部署 |
DiT-B | 中等 | 中等 | 平衡性能与计算成本 |
DiT-L | 较大 | 较高 | 高分辨率图像生成 |
DiT-XL | 最大 | 118.6 GFLOPs | 最优生成质量(如FID 2.27) |
Transformer decoder
在DiT(Diffusion Transformer)中,Transformer Decoder的设计用于将最终的图像Token序列解码为噪声预测和协方差预测,其核心流程和设计要点如下:
1. Decoder的核心机制
输入输出结构:
- 输入:经过 N N N个DiT块处理后的图像Token序列(形状为 n × d n \times d n×d, n n n为Token数, d d d为隐藏层维度)。
- 输出:噪声预测和协方差预测,形状与原始空间输入相同(如 H × W × 2 C H \times W \times 2C H×W×2C, C C C为输入通道数)。
- 噪声预测(noise prediction) ( H × W × C H \times W \times C H×W×C)
- 对角协方差预测( diagonal covariance prediction)( H × W × C H \times W \times C H×W×C)
解码步骤:
- 层归一化:对Token序列应用最终的层归一化(若使用adaLN或adaLN-Zero,则动态生成归一化参数)。
- 线性解码:通过线性层将每个Token映射为 p × p × 2 C p \times p \times 2C p×p×2C的张量( p p p为Patch大小)。
- 空间重组:将解码后的张量重新排列为原始空间布局,生成噪声和协方差预测。
2. DiT设计空间的关键维度
DiT的完整设计空间包括以下三个维度:
- Patch Size( p p p):
- 决定Token数量( n = H W p 2 n = \frac{HW}{p^2} n=p2HW),直接影响计算量(GFLOPs)和模型性能。较小的 p p p增加Token数,提升细节生成但计算成本更高。
- Transformer Block架构:
- 包括四种变体(In-Context Conditioning、Cross-Attention、adaLN、adaLN-Zero),主要差异在于条件信息融合方式(如adaLN-Zero通过零初始化残差提升稳定性)。
- Model Size(参数量与深度):
- 标准配置(DiT-S/B/L/XL)通过调整层数 N N N、隐藏层维度 d d d和注意力头数实现不同规模,例如DiT-XL在ImageNet 256×256任务中达到FID 2.27。
噪声预测和协方差预测
在DiT 等扩散模型中,噪声预测和协方差预测共同服务于扩散过程的核心目标——逐步从噪声中重建数据。
在扩散模型中,噪声预测和协方差预测在训练和推理阶段扮演着不同但相互配合的角色。以下是它们在两个阶段的具体目的和作用机制:
一、训练阶段
1. 噪声预测(Noise Prediction)
目的:学习从带噪声数据中准确估计原始添加的噪声。
作用:
- 监督信号:模型通过最小化预测噪声与真实噪声的误差(如MSE)来优化参数。
- 目标函数:
L noise = E t , x 0 , ϵ ∥ ϵ θ ( x t , t ) − ϵ ∥ 2 \mathcal{L}_\text{noise} = \mathbb{E}_{t,x_0,\epsilon} \|\epsilon_\theta(x_t,t) - \epsilon\|^2 Lnoise=Et,x0,ϵ∥ϵθ(xt,t)−ϵ∥2
其中 ϵ \epsilon ϵ 是真实噪声, ϵ θ \epsilon_\theta ϵθ 是模型预测的噪声。 - 隐式学习:通过噪声预测间接学习数据分布 p ( x 0 ) p(x_0) p(x0) 的结构特征。
2. 协方差预测(Covariance Prediction)
目的:量化模型对噪声预测的不确定性。
作用:
- 概率建模:与噪声预测联合定义高斯分布 N ( ϵ θ , Σ θ ) \mathcal{N}(\epsilon_\theta, \Sigma_\theta) N(ϵθ,Σθ),其中 Σ θ \Sigma_\theta Σθ 为对角协方差。
- 损失函数(若协方差可学习):
L cov = − log p ( ϵ ∣ ϵ θ , Σ θ ) \mathcal{L}_\text{cov} = -\log p(\epsilon | \epsilon_\theta, \Sigma_\theta) Lcov=−logp(ϵ∣ϵθ,Σθ)
最小化负对数似然,使模型学会为高误差区域分配更大的方差。 - 稳定训练:避免模型对困难样本(如高频细节)过度自信。
二、推理阶段
1. 噪声预测
目的:指导逆向扩散过程的去噪方向。
作用:
- 去噪核心:根据预测噪声 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ(xt,t) 计算当前步的干净数据估计:
x ^ 0 = x t − 1 − α ˉ t ϵ θ α ˉ t \hat{x}_0 = \frac{x_t - \sqrt{1-\bar{\alpha}_t} \epsilon_\theta}{\sqrt{\bar{\alpha}_t}} x^0=αˉtxt−1−αˉtϵθ - 生成质量:噪声预测的准确性直接决定输出图像的保真度。
2. 协方差预测
目的:控制生成过程的随机性与多样性。
作用:
- 调节噪声注入:在采样时,协方差 Σ θ \Sigma_\theta Σθ 决定随机噪声的强度:
x t − 1 = μ θ ( x t , t ) + σ t Σ θ 1 / 2 z ( z ∼ N ( 0 , I ) ) x_{t-1} = \mu_\theta(x_t,t) + \sigma_t \Sigma_\theta^{1/2} z \quad (z \sim \mathcal{N}(0,I)) xt−1=μθ(xt,t)+σtΣθ1/2z(z∼N(0,I))- 高方差区域:增加随机性,可能生成更多样化的细节。
- 低方差区域:确定性更强,保持结构一致性。
- 平衡质量-多样性:通过学习到的协方差自适应调整生成风格(如逼真模式 vs 创意模式)。
三、联合作用的本质
阶段 | 噪声预测主导 | 协方差预测主导 |
---|---|---|
训练 | 学习数据分布的核心特征 | 量化模型自身预测的不确定性 |
推理 | 生成内容的主干信号 | 控制生成结果的随机性程度 |
关键区别:
- 训练时协方差是被动学习的(通过损失函数约束),而推理时是主动应用的(调节采样过程)。
- 若协方差固定(如DDPM),推理阶段仅噪声预测起作用;可学习协方差(如DiT)增加了生成的可控性。
四、DiT中的具体实现
在DiT的线性解码器设计中:
- 输出结构: p × p × 2 C p \times p \times 2C p×p×2C 的张量,前 C C C 通道为噪声预测,后 C C C 通道为协方差预测(通常映射为对数方差保证正定性)。
- 计算效率:一次前向传播同时输出两者,几乎无额外开销。
- 设计优势:Transformer的全局建模能力尤其适合联合预测噪声及其不确定性。
概念
1、Noised Latent(带噪隐变量)详解
Noised Latent 是扩散模型(如Stable Diffusion)在生成过程中的关键中间状态,指在隐空间(Latent Space)中逐渐添加噪声后的数据表示。以下是其核心要点:
1. 基本概念
- 隐变量(Latent):
通过编码器(如VAE)将原始图像压缩到低维空间的特征表示,例如Stable Diffusion中图像被压缩为64×64×4
的张量。 - 带噪隐变量(Noised Latent):
在扩散模型的前向过程(加噪)中,隐变量被逐步添加高斯噪声后的状态,数学表示为:
z t = α t z 0 + 1 − α t ϵ , ϵ ∼ N ( 0 , I ) z_t = \sqrt{\alpha_t} z_0 + \sqrt{1-\alpha_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) zt=αtz0+1−αtϵ,ϵ∼N(0,I)
其中 z 0 z_0 z0 是原始隐变量, α t \alpha_t αt 是噪声调度系数, t t t 是时间步。
2. 在扩散模型中的作用
前向过程(训练阶段):
- 对隐变量 z 0 z_0 z0 逐步加噪,生成一系列 z t z_t zt( t = 1 , 2 , . . . , T t=1,2,...,T t=1,2,...,T),用于训练模型学习去噪。
- 目标:让模型预测噪声 ϵ \epsilon ϵ 或直接预测 z 0 z_0 z0。
反向过程(生成阶段):
- 从纯噪声 z T ∼ N ( 0 , I ) z_T \sim \mathcal{N}(0, I) zT∼N(0,I) 开始,逐步去噪得到 z t − 1 z_{t-1} zt−1,最终解码为图像。
- 关键公式(去噪一步):
z t − 1 = 1 α t ( z t − 1 − α t 1 − α ˉ t ϵ θ ( z t , t ) ) + σ t η z_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( z_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \epsilon_\theta(z_t, t) \right) + \sigma_t \eta zt−1=αt1(zt−1−αˉt1−αtϵθ(zt,t))+σtη
其中 ϵ θ \epsilon_\theta ϵθ 是噪声预测模型, η \eta η 是随机噪声。
3. 为什么使用隐空间?
- 计算效率:
在隐空间(如64×64)操作比像素空间(如512×512)节省显存和计算量(Stable Diffusion的核心优化)。 - 信息密度:
隐变量过滤了高频细节(高频细节被部分过滤掉(削弱),但并非完全消除),保留语义信息,更适合扩散过程的迭代去噪。
4. 可视化理解
步骤 | 数据形式 | 说明 |
---|---|---|
原始图像 | 512×512×3 (RGB) |
输入的高分辨率像素图像。 |
编码为隐变量 | 64×64×4 (Latent) |
通过VAE编码器压缩后的低维表示。 |
加噪后隐变量 | 64×64×4 (Noised) |
混合了高斯噪声的隐变量,用于训练或生成。 |
5. 实际应用示例(Stable Diffusion)
- 训练时:
- 输入图像 → VAE编码为 z 0 z_0 z0 → 随机采样时间步 t t t → 生成 z t z_t zt → 模型学习预测噪声。
- 生成时:
- 从噪声 z T z_T zT 开始 → 逐步去噪 → 得到 z 0 z_0 z0 → VAE解码为图像。
# 伪代码示例(Diffusers库)
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
latents = torch.randn((1, 4, 64, 64)) # 初始Noised Latent (z_T)
for t in timesteps:
noise_pred = pipe.unet(latents, t, text_embeddings) # 预测噪声
latents = pipe.scheduler.step(noise_pred, t, latents) # 去噪一步
image = pipe.vae.decode(latents) # 解码为图像
6. 与其他概念的对比
术语 | 含义 | 与Noised Latent的关系 |
---|---|---|
Latent | 原始隐变量(未加噪) | Noised Latent的前身 |
Noise | 高斯噪声 ϵ \epsilon ϵ | 用于生成Noised Latent的添加剂 |
Denoised Latent | 去噪后的隐变量(接近 z 0 z_0 z0) | Noised Latent经模型处理后的结果 |
7. 常见问题
- Q1: 为什么噪声加到隐空间而非像素空间?
- 隐空间计算高效且语义更强,适合迭代去噪。
- Q2: Noised Latent如何影响生成质量?
- 噪声调度(如线性vs.余弦)和初始 z T z_T zT 的随机性会影响生成多样性和稳定性。
总结
Noised Latent是扩散模型在隐空间中实现“加噪-去噪”过程的核心载体,平衡了计算效率与生成能力。理解它有助于优化模型训练(如调整噪声调度)和生成控制(如修改初始潜变量)。
2、隐变量过滤高频
在扩散模型(如Stable Diffusion)的上下文中,“隐变量过滤了高频细节”指的是高频细节被部分过滤掉(削弱),但并非完全消除。以下是详细解释:
1. 隐变量(Latent)的特性
VAE编码器的行为:
当原始图像通过VAE(变分自编码器)的编码器压缩到隐空间时,编码器会优先保留低频信息(如物体形状、颜色分布等全局特征),而高频信息(如锐利边缘、细纹理、噪声)会被抑制或丢失。- 低频信息:决定图像的整体结构和语义内容。
- 高频信息:对应像素级的细微变化(例如头发丝、皮肤纹理)。
数学原因:
编码器的卷积层和下采样操作本质上是低通滤波器,会削弱高频信号(类似图像模糊化)。
2. 为什么扩散模型仍能生成高频细节?
虽然隐变量本身过滤了部分高频信息,但扩散模型通过以下方式重建细节:
- 去噪过程的迭代细化:
- 在反向去噪过程中,模型逐步从低频结构(隐变量)中推断并补充高频细节。
- 例如:Stable Diffusion的U-Net/DiT会在多次去噪步骤中逐渐恢复纹理。
- 解码器的角色:
- VAE的解码器被训练为将隐变量“解码”回像素空间时,会基于语义信息生成合理的高频细节(并非完全还原原始高频信号,而是合成视觉上合理的细节)。
3. 高频信息的“过滤”与“保留”
阶段 | 高频信息状态 | 原因 |
---|---|---|
原始图像 | 完整保留 | 包含所有像素级细节。 |
编码为隐变量 | 部分过滤(削弱或丢失) | 下采样和卷积操作抑制高频。 |
去噪生成 | 重新合成(非完全还原) | 模型基于学习到的数据分布生成合理细节(可能不同于原图,但视觉上可信)。 |
4. 实验验证
- 隐空间可视化:
若将隐变量直接解码回图像,结果会比原图更“平滑”(高频细节减少),说明编码过程过滤了高频信息。 - 生成图像分析:
扩散模型生成的图像高频细节(如毛发、纹理)是模型重新合成的,而非从原图保留的。
5. 对生成质量的影响
- 优势:
过滤冗余高频噪声后,隐变量更专注于语义信息,提升生成效率和稳定性。 - 挑战:
若过滤过多高频信息,可能导致生成结果过于平滑(“塑料感”)。现代模型(如SDXL)通过更大隐空间和改进架构缓解此问题。
总结
- “过滤高频细节”:指VAE编码器削弱或丢弃了部分像素级高频信息。
- “重建高频细节”:扩散模型在去噪过程中基于语义重新合成合理的高频内容。
这种设计平衡了计算效率与生成质量,使模型既能快速操作低维隐变量,又能输出高保真图像。
3、时间步
在扩散模型(Diffusion Models)和 Diffusion Transformers (DiTs) 中,时间步(timestep) 是一个核心概念,用于控制数据在扩散过程中的加噪(前向过程)和去噪(逆向过程)的进度。以下是详细解释:
1. 时间步的定义
- 时间步 t t t 是一个离散变量,表示扩散过程中的第 t t t 步(通常从 t = 0 t=0 t=0 到 t = T t=T t=T)。
- t = 0 t=0 t=0:对应原始数据(如图像 x 0 x_0 x0)。
- t = T t=T t=T:对应完全噪声(纯高斯噪声 x T x_T xT)。
- 在训练和推理中,时间步决定了当前数据 x t x_t xt 的噪声程度,并指导模型如何逐步去噪。
2. 时间步的作用
(1) 前向扩散过程(加噪)
- 在训练时,时间步 t t t 用于控制噪声的添加量。
例如,扩散公式:
x t = α t x 0 + 1 − α t ϵ , ϵ ∼ N ( 0 , I ) x_t = \sqrt{\alpha_t} x_0 + \sqrt{1-\alpha_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) xt=αtx0+1−αtϵ,ϵ∼N(0,I)- α t \alpha_t αt 是一个与 t t t 相关的调度参数(如线性、余弦等),随 t t t 增大而减小,噪声逐渐增强。
- 时间步 t t t 决定了当前噪声强度和数据破坏程度。
(2) 逆向去噪过程(生成)
- 在推理时,模型需要根据时间步 t t t 预测如何从 x t x_t xt 去噪到 x t − 1 x_{t-1} xt−1。
- 时间步 t t t 告诉模型当前处于生成过程的哪个阶段(早期需粗粒度去噪,晚期需细粒度修正)。
- 例如,DiT 通过时间步嵌入(timestep embedding)将 t t t 编码为向量,输入Transformer以调节去噪行为。
3. 时间步的表示方法
时间步 t t t 通常通过以下方式输入模型:
(1) 正弦位置编码(Sinusoidal Embedding)
- 类似Transformer的位置编码,将离散的 t t t 映射为连续向量:
Embedding ( t ) = [ sin ( ω 1 t ) , cos ( ω 1 t ) , . . . , sin ( ω d t ) , cos ( ω d t ) ] \text{Embedding}(t) = [\sin(\omega_1 t), \cos(\omega_1 t), ..., \sin(\omega_d t), \cos(\omega_d t)] Embedding(t)=[sin(ω1t),cos(ω1t),...,sin(ωdt),cos(ωdt)]
其中 ω i \omega_i ωi 是预设的频率参数。
(2) 可学习的嵌入(MLP投影)
- 通过一个小型MLP将 t t t 映射为高维向量:
t e m b = MLP ( t ) t_{emb} = \text{MLP}(t) temb=MLP(t)
(DiT论文中常用此方法)
(3) 自适应归一化(AdaLN)
- 在DiT中,时间步嵌入 t e m b t_{emb} temb 可能用于动态调节层归一化(LayerNorm)的参数:
AdaLN ( z ) = γ ( t e m b ) ⋅ z − μ ( z ) σ ( z ) + β ( t e m b ) \text{AdaLN}(z) = \gamma(t_{emb}) \cdot \frac{z - \mu(z)}{\sigma(z)} + \beta(t_{emb}) AdaLN(z)=γ(temb)⋅σ(z)z−μ(z)+β(temb)
其中 γ , β \gamma, \beta γ,β 由时间步生成。
4. 为什么需要时间步?
- 动态调节去噪行为:
- 不同时间步需要不同的去噪策略(早期去噪强度大,后期微调细节)。
- 条件生成控制:
- 时间步作为条件输入,确保模型在生成过程中“知道”当前进度。
- 与噪声调度解耦:
- 时间步与噪声调度参数(如 α t \alpha_t αt)绑定,但模型只需学习时间步的映射,无需显式处理调度逻辑。
5. 在DiT中的具体应用
以DiT为例:
- 输入阶段:
- 时间步 t t t 被编码为向量 t e m b t_{emb} temb,与图像Patch Token拼接或相加。
- Transformer处理:
- 通过AdaLN或交叉注意力,将 t e m b t_{emb} temb 注入每一层,动态调节特征归一化。
- 输出阶段:
- 模型根据 t t t 预测当前步的噪声 ϵ θ ( x t , t ) \epsilon_\theta(x_t, t) ϵθ(xt,t) 或直接预测 x 0 x_0 x0。
6. 时间步与噪声调度的关系
- 时间步 t t t 是离散索引,而噪声调度(如 α t , β t \alpha_t, \beta_t αt,βt)是连续函数。
- 例如,在DDPM中:
[
\alpha_t = \prod_{s=1}^t (1 - \beta_s), \quad \beta_t \text{为预设的噪声方差表}
]
模型通过 t t t 隐式地关联到调度参数,无需直接学习它们。
总结
时间步是扩散模型中协调加噪与去噪进度的“时钟”,在DiT中通过嵌入向量融入Transformer,使模型能够动态适应不同阶段的生成需求。它是连接扩散理论(噪声调度)与深度学习架构(如Transformer)的关键桥梁。