张芷铭的个人博客

自适应层归一化 AdaLN

adaLN是指自适应层归一化(Adaptive Layer Normalization),它是一种在生成模型中注入条件信息的方法。具体来说,adaLN通过一个MLP从条件嵌入(如时间步和类别标签)中回归出缩放系数和偏移系数,这些系数用于调整层的输出。 这种方法不仅允许条件信息的灵活注入,还能保持模型的计算效率。在DiT模型中,adaLN被用作一种高效的条件注入方式,相比其他方法,它对模型的计算量影响最小,仅增加27%的参数量。通过将adaLN应用于每个DiT block,模型能够更好地利用条件信息,同时保持结构的简洁和计算的高效性。

AdaLN(Adaptive Layer Normalization)是一种动态调整归一化参数的条件注入技术,在扩散模型中用于融合时间步、类别标签或文本描述等条件信息。其核心原理与在模型中的位置如下:


🔧 一、AdaLN 的核心原理

1. 基础:Layer Normalization (LN)

传统LN对输入特征进行标准化: $$\text{LN}(x) = \gamma \left( \frac{x - \mu}{\sigma} \right) + \beta$$ 其中:

  • $\mu, \sigma$:输入特征的均值和标准差
  • $\gamma, \beta$:固定的缩放(scale)和偏移(shift)参数

2. AdaLN 的动态调整

AdaLN 将 $\gamma$ 和 $\beta$ 替换为由条件信息动态生成的参数: $$\text{AdaLN}(x; c) = \gamma_c \left( \frac{x - \mu}{\sigma} \right) + \beta_c$$ 其中:

  • $c$:条件信息(如时间步嵌入 $t$ 或文本嵌入 $c$)
  • $\gamma_c, \beta_c$:通过小型神经网络(如MLP)从 $c$ 回归生成。

3. AdaLN-Zero 的增强设计

在扩散模型中,AdaLN 常扩展为 AdaLN-Zero

  • 额外引入残差缩放因子:在残差连接前添加可学习的缩放参数 $\alpha_c$(初始化为0),使模型初始阶段近似恒等映射,提升训练稳定性。
  • 数学表达: $$x_{\text{out}} = \alpha_c \cdot \text{AdaLN}(x; c) + x$$ 其中 $\alpha_c$ 同样由条件信息生成。

📍 二、AdaLN 在扩散模型中的位置

1. 整体架构位置

AdaLN 模块位于扩散模型的主干网络中,嵌入在每个 Transformer Block 内部

  • 在 DiT(Diffusion Transformer)中,AdaLN 替代了标准 Transformer 的 LayerNorm,成为条件注入的核心组件。
  • 具体位置:多头自注意力层和前馈网络(FFN)的输入前,如图:
    1
    2
    3
    4
    5
    6
    
    DiT Block 结构:
    ┌──────────────┐       ┌──────────────┐
    │ AdaLN        │───>   │ 自注意力       │
    ├──────────────┤       ├──────────────┤
    │ AdaLN        │───>   │ FFN          │
    └──────────────┘       └──────────────┘
    

2. 与其他条件注入方式的对比

DiT 论文中对比了三种条件注入方式:

方法实现原理计算开销效果
In-context Conditioning将条件 token 拼接到输入序列中中等
Cross-Attention添加交叉注意力层,以条件为 Key/Value高(+15%)较好
AdaLN动态生成 LN 的 $\gamma, \beta$,无需修改注意力机制最低最佳(SOTA)

AdaLN 因其高效性成为扩散模型首选。


⚙️ 三、AdaLN 的工作流程(以 DiT 为例)

  1. 输入预处理

    • 图像通过 VAE 编码为潜变量 $z$,分割为 Patch 并添加位置编码。
    • 时间步 $t$ 和类别标签 $y$ 分别嵌入为向量 $t_{\text{emb}}, y_{\text{emb}}$。
  2. 条件融合

    • 条件向量 $c = t_{\text{emb}} + y_{\text{emb}}$ 输入 MLP,生成 $\gamma_c, \beta_c, \alpha_c$。
    • 每个 DiT Block 的输入前,通过 AdaLN 调整特征分布:
      1
      2
      3
      4
      
      # 伪代码
      for block in DiT_blocks:
          x = block.attention(AdaLN(x, c))  # 自注意力前的 AdaLN
          x = block.ffn(AdaLN(x, c))        # FFN 前的 AdaLN
      
  3. 输出预测

    • 最终输出预测的噪声或潜变量更新量,通过 AdaLN 调制后的特征解码得到。

💡 四、AdaLN 的核心优势

  1. 计算高效
    • 仅需小型 MLP 生成参数,比交叉注意力减少 15% 计算量。
  2. 训练稳定
    • AdaLN-Zero 的零初始化残差缩放避免初期梯度爆炸,加速收敛。
  3. 灵活适配多模态条件
    • 可同时融合时间步、文本描述、类别标签等多源条件。
  4. 保留预训练知识
    • 在微调场景(如 DiffFit)中冻结主体参数,仅更新 AdaLN 相关参数(占 0.12%),避免灾难性遗忘。

🧩 五、典型应用场景

1. 图像生成(DiT 系列)

  • AdaLN 在 DiT-XL 中实现 SOTA FID(2.27),成为 Stable Diffusion 3 的核心组件。

2. 视频生成(Wan2.2/Sora)

  • 通过 3D RoPE + AdaLN 融合时空位置与时间步条件,支持长视频生成。

3. 参数高效微调(DiffFit)

  • 冻结扩散模型权重,仅微调 AdaLN 的 MLP 参数(占比 0.12%),实现跨域适应(如艺术风格迁移)。

💎 总结

AdaLN 通过动态调制归一化参数,成为扩散模型中高效融合条件信息的关键模块。其设计兼顾性能与灵活性,推动 DiT、Sora 等模型突破生成质量极限。未来随着多模态生成需求增长,AdaLN 在跨域对齐、物理约束注入等方面仍有巨大探索空间。


AdaLN 在扩散模型中的关键作用总结

模块功能技术突破
动态参数生成通过MLP从条件生成γ/β/α避免结构修改,计算高效
残差零初始化初始α=0,稳定训练初期加速收敛,适配深层网络
多模态融合支持时间步、文本、标签等输入成为多模态扩散模型核心
微调适配器仅需微调0.12%参数(DiffFit)高效迁移预训练知识到新领域

💬 评论