跳到主内容
快讯直播
AI智模界
AI 词典

AdaLN:把时间步和条件拧进每一层

一句话定义:AdaLN(Adaptive Layer Normalization,自适应层归一化)是一种让外部条件——比如扩散模型当前的时间步、类别标签、风格向量——直接去生成层归一化(AI 词典:LayerNorm">LayerNorm)里的缩放和平移参数的做法,条件不必再靠交叉注意力绕道进入网络。

它究竟改了什么

普通 LayerNorm 很朴素:先把一层里各通道的激活值减均值、除标准差,拉回标准正态附近,再用两个可学习向量 γ(缩放)和 β(平移)把它重新拉伸。γ 和 β 是训练完就固定的参数,对谁都是同一套。

AdaLN 把这两个参数从“常数”变成“函数”:取一个条件向量 c(常见做法是时间步嵌入与类别嵌入相加),过一个很小的 MLP,直接算出这一层的 γ 和 β。于是“现在是第 30 个去噪步、类别是猫”这句话,会在每个残差块里被重新翻译成一组缩放和平移值。很多实现还会额外输出一个门控系数,控制该块输出占多大比重。

打个比方:残差块是一间会议室,LayerNorm 是墙上的灯光旋钮。标准做法是出厂设定好亮度和色温,谁来都一样。交叉注意力相当于给每间屋子配个接待员,让他读完整份需求清单再逐条转达;AdaLN 则是让条件信息直接发一张设定卡:第 30 步、类别猫,灯光调暖两格。接待员这种人力,应该留给真正需要逐词阅读的东西。

为什么它取代了交叉注意力

交叉注意力的成本随条件序列长度增长——条件越长,每个 token 都要多算一轮注意力。可“当前是第 30 步”这种信息只是一个向量,为它铺开一整套注意力机制,性价比很低。AdaLN 的额外开销几乎只有几个小矩阵乘法,且与序列长度无关,同时条件信号在每一层都被重新注入,调控力度反而更强。

需要说清边界:被替代的是时间步、类别、分辨率这类全局条件的注入方式。文本提示词那种变长 token 序列,通常仍需注意力机制来对齐,二者是分工而非二选一。

对比项交叉注意力AdaLN
注入方式每个位置去查询条件 token条件直接生成缩放与平移
额外算力随条件长度增长与序列长度无关,开销很小
适合的条件变长序列(文本提示词)全局向量(时间步、类别、风格)
训练稳定性需要调学习率与初始化配合零初始化通常较稳

为什么稳

常见变体把每个块的缩放、平移初始化为零,于是训练刚开始时整个块近似恒等映射,网络相当于从“什么都不做”出发,再逐步学会注入条件。深层 Transformer 最怕一开始就被随机调制打乱,这个细节是它在扩散 Transformer 里好用的一大原因。

对从业者的意义

改扩散 Transformer 结构时,注入时间步和类别优先考虑 AdaLN,把注意力预算留给文本;想加新的全局条件(画幅比例、相机参数、风格强度),只要它能编码成向量,就能塞进这套机制,不必新开一条注意力分支。对非技术同学来说,它体现的是一个通用思路:把“全局指令”和“逐字细读”分开处理,别让每个位置都为一句总体要求互相开一次会。

具体实现细节各家框架略有差异,以官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。