CVPR2025|恺明+LeCun联手带来没有归一化层的Transformer!

↑ 点击蓝字 关注极市平台
作者丨科技猛兽
编辑丨极市平台

极市导读

 

谁说归一化层是不可或缺的! >>加入极市CV技术交流群,走在计算机视觉的最前沿

本文目录

1 DyT:取代 Transformer 归一化层
(来自 Meta 明星团队:Xinlei Chen, Kaiming, LeCun, Zhuang Liu)
1 DyT 论文解读
1.1 DyT 论文背景
1.2 归一化层
1.3 归一化层的作用
1.4 Dynamic Tanh (DyT) 操作
1.5 实验:视觉监督学习
1.6 实验:视觉自监督学习
1.7 实验:扩散模型
1.8 实验:大语言模型
1.9 DyT 分析性实验

太长不看版

本文发现,Transformer 中常用的归一化层 (Normalization layer) 可以使用一种极简的技术来替代,即本文提出的 Dynamic Tanh (DyT) 函数。这是一种 element-wise 的操作:

DyT 函数可以直接替代归一化层。

DyT 函数的提出来自这样一个观察,即:Transformer 中的归一化层的输入-输出映射,总是呈现出 S 形

DyT 函数使得 Transformer 的性能接近或者超过了归一化层。实验包括:视觉识别任务 (ViT, ConvNeXt),生成任务 (DiT),自监督学习 (MAE, DINO),LLM (LLaMA) 等等。

这个发现算得上是对传统观点,即:”归一化层在现代神经网络中不可或缺的” 的挑战,为深入了解归一化层在网络中的作用提供了一个新的视角。

图1:左:原始 Transformer Block;右:使用 Dynamic Tanh (DyT) 的 Transformer Block

1 DyT:取代 Transformer 归一化层

论文名称:Transformers without Normalization (CVPR 2025)

论文地址:

http://arxiv.org/pdf/2503.10622

项目主页:

http://jiachenzhu.github.io/DyT

1.1 DyT 论文背景

过去的十年中,Normalization 层成为现代神经网络最基本的组成部分之一。一开始可以追溯到 Batch Normalization,BN 使得视觉识别模型收敛更快,更好。自 BN 之后,领域提出了许多归一化层的变体,诸如 Layer Normalization,Instance Normalization,Group Normalization等等。今天,几乎所有现代网络都使用归一化层,尤其是 Transformer 几乎都使用 Layer Normalization。

Normalization 层的成功源自其在多数任务中的效果很好。除了效果以外,它还可以加速收敛,稳定训练。随着神经网络变得越来越广泛和更深,Normalization 层的必要性就变得更加关键了。因此传统观念认为,神经网络的有效训练,归一化层是关键。近年来,新的架构通过聚焦于替换卷积或者注意力,但是无一例外地保留了归一化层,也证明了这一点。

本文挑战了 “神经网络的有效训练,归一化层是不可或缺的” 的传统观点,通过提出的 Dynamic Tanh (DyT) 来取代 Normalization 层。DyT 是一种 element-wise 的操作:

DyT 的提出是观察到 LN 层的输入-输出映射为 S 形状的,tanh-like 曲线。因此,目的是通过 \alpha 学习适当的比例因子并通过有界的 tanh 函数压缩极值,来模拟 LN 的行为。

DyT 与归一化层不同的地方在于,不需要计算激活值得统计信息。

初步测量表明 DyT 可以提高模型的训练和推理速度,使其成为高效神经网络架构的候选。

1.2 归一化层

给定一个形状为 的输入 ,其中 是标记的数量,输出通常计算为:

其中,ϵ 是一个极小的常数, γ 和 β 是形状为 (C,) 的可学习参数。它们是负责"scaling"和 "shifting"的 affine transformation 参数。 μ,σ2 表示输入的均值和方差。不同的方法的主要区别在于如何计算这两个统计数据。

下面是不同类型归一化层的做法:

1) Batch Normalization:计算批处理维度和 token 维度的均值和方差:

2) Layer Normalization:计算每个样本中的每个 token 的均值和方差:

3) RMSNorm 是 LN 简化版,mean-centering 这一步省了:

RMSNorm 在现代大模型上用的非常多,比如:T5, LLaMA, Mistral, Qwen, InternLM 以及 DeepSeek。

1.3 归一化层的作用

作者分析了 3 个模型:ImageNet-1K 上训练的 Vision Transformer model (ViT-B),LibriSpeech 上训练的 wav2vec 2.0 Large Transformer model,ImageNet-1K 上训练的 Diffusion Transformer (DiT-XL)。

作者对这 3 个网络,采样小批量样本,前向传递。然后,测量输入-输出映射 (仿射变换之前测量归一化层的输入和输出),直接可视化输入-输出之间的关系。如下图 2 所示。

图2:Vision Transformer (ViT),wav2vec 2.0,Diffusion Transformer (DiT) 的输入-输出。输出是 LN 的 affine transformation 之前的。可以看出呈现的 S 形曲线与 tanh 函数很相似

S 形状的 tanh-like 曲线

对于所有 3 个模型,在早期的 LN 层中,这种输入输出关系大多是线性的,类似于 x-y 图中的直线。

在更深的层中,曲线变为了 S 形的 tanh-like 曲线,如图 3 所示。

乍一想,LN 只是对输入做了线性变换。LN 以逐 token 的方式作归一化,每个 token 有不同均值和标准差,因此这也可能不是对输入张量作纯线性变换的原因。尽管如此,实际的非线性变换与 tanh 函数高度相似这一点,仍然令人惊讶。

图3:不同 α 值的 tanh(αx) 函数

LN 的 “极端区” 是区分它与 affine transformation 的关键

这种 S 形状的曲线中,作者观察到,大多数的点 (约占 99%) 都集中在中心的 “线性区” 中,其他的点超出这个范围,在 “极端区” 中。归一化层的主要效果就是将主要特征压缩到不太极端的范围里。这个 “极端区” 才是 affine transformation 无法逼近的地方。作者认为:归一化层相比于 affine transformation 不可或缺的原因,就在于其还存在一段非线性的 “极端区”,其对异常值特征会带来挤压效应。

LN 层是如何对每个 token 执行线性变换,同时又以非线性的方式压缩极值的?

从图 4 左侧 2 图 (每个 token 用一种颜色) 中可以观察到,每个 token 都形成一条直线。但是由于每个 token 数值方差不同,所以最终范围不同。输入值范围比较小的特征的方差也小,所以输出之后的范围就扩大了很多;输入值范围比较大的特征的方差也大,所以输出之后的范围就没扩大多少。把这些点收集在一起,就形成 S 型曲线。

图4:2 个 LN 层的输入-输出映射。不同颜色代表不同 channel 和 token 的维度。左侧 2 图给每个 token 用一种颜色,右侧 2 图给每个 channel 用一种颜色

从图 4 右侧 2 图 (每个 channel 用一种颜色) 中可以观察到,不同的 channel 往往具有不同的输入范围,只有少数 channel (例如,红色、绿色和粉色) 表现出较大的极值。

1.4 Dynamic Tanh (DyT) 操作

DyT 的定义:

其中, 是一个可学习的标量参数,允许根据其范围以不同的方式缩放输入。伪代码如下:

# input x has the shape of [B, T, C]
# B: batch size, T: tokens, C: dimension 

class DyT(Module):
    def __init__(self, C, init_(@$bm alpha$@)):
        super().__init__()
        self.α = Parameter(ones(1) * init_(α))
        self.γ = Parameter(ones(C))
        self.β = Parameter(zeros(C))

    def forward(self, x):
        x = tanh(self.α* x)
        return self.γ * x + self.β

初始化: 简单初始化 为全 1 的向量,初始化 为全 0 的向量,对于 scaler 参数 ,除了 LLM训练,默认初始化 0.5 通常就足够了。

注意: DyT 不是一种新的 Normalization 层,因为它在前向传递期间无需计算统计数据,直接对向量中逐元素操作。但它保留了对 “极端区” 数值的 “挤压” 效应,对 “线性区” 的输入做线性变换。

1.5 实验:视觉监督学习

模型:ViT, ConvNeXt

数据集:ImageNet-1K

图5:ViT-B 和 ConvNeXt-B 模型的训练损失曲线
图6:ImageNet-1K 监督学习实验结果

DyT 在不同架构和尺寸上的表现略好于 LN。图 5 的 training loss 曲线也表明了 DyT 和基于 LN 的模型的收敛行为是高度对齐的。

1.6 实验:视觉自监督学习

模型:MAE, DINO

数据集:ImageNet-1K

遵循标准的自监督学习方式,首先在 ImageNet-1K 上预训练模型,不使用任何标签。然后增加分类头,并按照有监督学习微调预训练模型,结果如图 7 所示。DyT 在自监督学习任务中始终与 LN 相当。

图7:ImageNet-1K 自监督学习实验结果

1.7 实验:扩散模型

模型:DiT

数据集:ImageNet-1K

在 DiT 中,LN 层的 affine 参数在 DiT 中用于 class condition,因此作者保持这个参数。在 DiT 实验中只用 函数替换归一化操作。FID 分数结果如图 8 所示,DyT 比 LN 实现了相当或者更好的 FID 结果。

图8:ImageNet-1K FID 实验结果

1.8 实验:大语言模型

模型:LLaMA 7B, 13B, 34B, 70B

数据集:The Pile dataset,200B tokens

LLaMA 使用的是 RMSNorm。实验采用 OpenLLaMA 框架,lm-eval 做评估。如图 9 所示,DyT 在所有 4 种模型大小上的表现与 RMSNorm 相当。图 10 展示了损失曲线,展示了所有模型大小的类似趋势,训练损失在整个训练过程中紧密对齐。

图9:语言模型的训练损失,以及 15 个零样本 lm-eval 任务的平均性能
图10:LLaMA 预训练 loss 曲线

1.9 DyT 分析性实验

DyT 最关心的效率分析

作者首先对比了 DyT 与 RMSNorm 的效率,看下 DyT 是不是可以加速。

作者使用 RMSNorm 或 DyT 对 LLAMA 7B 模型进行基准测试,通过使用 4096 个 token 的单个序列测量 100 次 forward (推理) 和 100 次 backward (训练) 花费的时间。图 11 报告了在 BF16 精度的 NVIDIA H100 上运行时所有 RMSNorm 或 DyT 层以及整个模型所需的时间。与 RMSNorm 层相比,DyT 层显著降低了计算时间,在 FP32 精度下观察到了类似的趋势。DyT 可能更适合面向效率的网络设计。

图11:RMSNorm 或 DyT 的 LLaMA 7B 的推理和训练延迟 (BF16 精度)

DyT 的两部分:

替换和删除 的影响

作者用一些替代的函数(hardtanh 和 sigmoid,如图 12 所示)来替换 DyT 层中的 tanh,同时保持 不变。此外也通过将 tanh 替换为 identity 函数来评估完全去除的影响,同时仍然保持 不变。

图12:3 个 squashing functions:tanh, hardtanh, 和 sigmoid 函数。它们都将输入压缩到有界范围内

如图 13 所示,压缩函数对于稳定训练至关重要。使用 identity 函数会导致训练不稳定,压缩函数可以实现稳定的训练。在压缩函数中, 表现最好。作者认为可能是由于它的平滑度和 zero-center 属性。

图13:不同挤压函数的 ImageNet-1K 分类精度

去掉 的影响

接下来,作者评估了在保留压缩函数 (tanh、hardtanh 和 sigmoid) 的同时去除可学习的 的影响。如图 14 所示,去除 会导致所有压缩函数的性能下降,突出其在整体模型性能中的重要作用。

图14:ViT-B 的 ImageNet-1K 分类精度

值的影响

在训练期间, 密切跟踪激活的 std 。如图 15 左侧面板所示, 首先减少,然后在训练过程中增加,但总是随着输入激活的标准差而持续波动。这体现出 可以把激活值维持在适当范围内的作用,从而稳定有效的训练。

在训练之后,作者进一步分析表明,网络中 的最终值与输入激活的 之间有很强的相关性。如图 8 右侧面板所示,较高的 值通常对应于较大的 值,反之亦然。

这两种分析表明,通过学习的 可以近似输入激活的 std,来部分作为归一化机制。与对每个 token 进行归一化的 LN 不同, 对整个输入激活一起做归一化。因此,仅 不能以非线性方式抑制极值。

图15:左:对于 ViT-B 模型的 2 个 DyT 层,跟踪每个 epoch 结束时的 α 和激活值的 1/std,观察到它们在训练期间一起进化。右:根据输入激活值的 1/std 绘制了 2 个模型 ViT-B 和 ConvNeXt-B 的最终 α 值,证明了 2 个值之间的强相关性

(文:极市干货)

欢迎分享

发表评论