好消息:
哲学园推出自己的智能体啦,只要在哲学园主页点击“
发消息
”,进入对话页面,就可以向哲学园提问对话,哲学园会用自己的资料库结合大模型进化回复。哲友们都说哲学园资料库啥都有,以前是用搜索,现在升级为智能体还可以回答你的高深问题啦,赶快试试吧。
http://www.zhexueyuan.com/
【新智元导读】
Transformer架构迎来历史性突破!刚刚,
何恺明
LeCun、清华姚班刘壮联手,用9行代码砍掉了Transformer「标配」归一化层,创造了性能不减反增的奇迹。
就在刚刚,何恺明和LeCun两大巨头联手,彻底改变了Tranformer架构!
在Meta、NYU、MIT、普林斯顿等联手的这项工作中,研究者们共同发现了一种没有归一化层的Transformer。
论文地址:https://arxiv.org/abs/2503.10622
项目地址:https://github.com/jiachenzhu/DyT
在深度学习中,归一化层(Norm layer,下图Transformer架构中的绿色块)无处不在,并且长期以来一直被认为是不可或缺的。
然而,这次何恺明、Yann LeCun等人却证明:即使不使用归一化层的Transformer模型,也就能达到相同甚至更好的性能!
而且方法也非常简单,只需要9行代码。
class DyT(nn.Module):
def __init__(self, num_features, alpha_init_value=0.5):
super().__init__()
self.alpha = nn.Parameter(torch.ones(1) * alpha_init_value)
self.weight = nn.Parameter(torch.ones(num_features))
self.bias = nn.Parameter(torch.zeros(num_features))
def forward(self, x):
x = torch.tanh(self.alpha * x)
return x * self.weight + self.bias
简单来说,他们发现了一种简单得出人意料的方法,来替代归一化层——缩放的
tanh函数
(没错,仿佛回到了80年代)。
他们称之为动态Tanh(Dynamic Tanh,简称DyT)。
这一方法的核心,源自一个非常简单的观察:LayerNorm将输入转换为输出时,呈现出类似tanh的S形曲线。
它能够压缩极端值,同时在中心区域保持线性形态。
因此,研究者用提出的动态Tanh(DyT)层替换了归一化层,过程很简单。
具体来说,他们用DyT替换了LayerNorm/RSMNorm,并在以下 Transformer结构上进行了测试:
结果表明,在所有测试场景中,DyT的效果都与归一化层相当或更优。
而且,DyT比RMSNorm在H100s上更快!
这项研究的意义就在于,鉴于模型训练和推理可能需要数千万次的计算,因此DyT有极大潜力帮助降低成本,接下来就是找到应用。
网友们对此纷纷表示:非常精彩的研究!而它改变应用transformer归一化基本假设的方式,尤其令人喜欢。
或许,这项研究能从根本上解决深度学习问题?
也有人提出,tanh一直因梯度消失问题而臭名昭著。如果用tanh替换归一化层,是否会重新引入这一问题,进而可能减缓甚至阻碍深度模型的学习呢?
在过去的十年里,归一化层已经稳固地成为现代神经网络最基础的组件之一。
如今,几乎所有现代神经网络都采用归一化层,其中层归一化(Layer Normalization,LN)尤其流行,特别是在占主导地位的 Transformer 架构中。
原因主要在于它们对优化过程的实证优势。因此,归一化层被普遍认为是 深度网络高效训练的关键甚至不可或缺的组成部分。
新的神经网络架构往往会尝试替换注意力层或卷积层,但几乎都会保留归一化层。
然而这项工作,却提出了一种简单的归一化层替代方案,并应用于 Transformer结构。
研究始于一个关键观察:LN层将输入映射为类似tanh的S形曲线,既缩放了输入激活值,又抑制了极端值。
因此,研究者提出了一种逐元素(element-wise)操作,称为动态 tanh(Dynamic Tanh, DyT),定义如下:
其中,α 是一个可学习参数。
DyT的设计目标是:
值得注意的是,与归一化层不同,DyT无需计算激活统计信息,却能够同时实现缩放和极值抑制。
γ和β是可学习的、逐通道的向量参数,与所有归一化层中使用的参数相同——它们允许输出缩放到任意尺度。
有时这被认为是一个独立的仿射层;但在新设计中,它们被视为DyT层的一部分,就像归一化层也包含它们一样。
图2:Vision Transformer(ViT)、wav2vec 2.0(用于语音的Transformer模型)和Diffusion Transformer(DiT)中部分层归一化(LN)层的输出与输入关系
有关DyT在类似Pytorch伪代码中的实现,请参见算法1。
将DyT层集成到现有架构中非常简单:DyT层可以直接替换归一化层(见图1)。
这种替换适用于注意力模块、前馈网络(FFN)模块中的归一化层,以及最终的归一化层。
尽管DyT可能看起来像激活函数,或者被认为是一种激活函数,但本研究仅将其用于替换归一化层,而不会改变原始架构中的任何激活函数(如GELU或ReLU)。
此外,DyT在应用于原始架构时,几乎不需要调整超参数就能达到良好的性能。
在所有三个模型中,可以观察到较浅的LayerNorm(LN)层(图2第一列)的输入-输出关系大多是线性的,在x-y平面上接近一条直线。
然而,在更深的LN层中,可以发现了一些更具启发性的现象。
在大多数深层LN层中,输入-输出曲线高度类似于tanh函数所呈现的完整或部分S形曲线(见图3)。
按常理,可能会认为LN层只是对输入张量进行线性变换,因为减去均值和除以标准差都是线性操作。
LN的归一化方式是逐token进行的,因此它对每个token施加的变换是线性的。
然而,由于不同token具有不同的均值和标准差,LN无法整体上保持输入张量所有激活值的线性关系。
尽管如此,让人仍然感到惊讶的是,实际的非线性变换竟然高度类似于缩放后的tanh函数。
然而,仍有一些点超出了这一范围,即那些被认为是「极端」值的点。例如,在ViT模型中,x>50或x
归一化层的主要作用之一,便是将这些极端值压缩到相对较温和的范围,使其更加符合大部分数据点的分布。
正是在这个方面,归一化层的行为无法被简单的仿射变换所逼近。
研究假设,归一化层对极端值的这种非线性和非均匀压缩作用,正是使其至关重要且难以被取代的核心原因。
为了理解这一点,该团队分别按token和通道对这些点进行可视化。
可以看到,在左侧两幅图中,相同token(相同颜色)在不同通道上的数据点排列成直线,这是因为LN在每个token内按通道进行线性变换。
然而,当所有token的数据点整体绘制在一张图上时,这些直线却形成了一个非线性的tanh形曲线。
右侧两幅图中,每个通道的输入值分布在x轴上的不同范围,共同构成了整体的tanh形曲线。
某些通道(如红色、绿色和粉色)包含更极端的x值,这些极端值被LN压缩到较温和的范围。
为了证明DyT的有效性,在Transformer及其他几种现代架构上进行了实验,涵盖了多个不同的任务和领域。
在每次实验中,用DyT层替换原始架构中的 LN(Layer Normalization)或 RMSNorm,并遵循官方开源协议来训练和测试两种版本的模型。
值得注意的是,为了突出 DyT 适配的简便性,使用的超参数与原始归一化模型完全相同。
在ImageNet-1K分类任务上,训练了「Base」和「Large」规模的Vision Transformer(ViT)和ConvNeXt。
选择这些模型是因为它们的广泛流行以及不同的操作特性:ViT中的注意力机制和ConvNeXt中的卷积操作。
表1报告了Top-1分类准确率。DyT在两种架构和模型规模上均略优于LN。
进一步绘制了ViT-B和ConvNeXt-B的训练损失曲线,如图5所示。曲线表明,DyT和基于LN的模型的收敛行为高度一致。
使用两种流行的视觉自监督学习方法进行基准测试:掩码自编码器(MAE)和DINO。
两者默认均使用Vision Transformers作为骨干网络,但具有不同的训练目标:MAE通过重建损失进行训练,而DINO使用联合嵌入损失。
按照标准的自监督学习流程,首先在不使用任何标签的情况下在ImageNet-1K上对模型进行预训练,然后通过附加分类层并使用标签对预训练模型进行微调来测试其性能。
微调结果如表2所示。DyT在自监督学习任务中始终表现与LN相当。
在ImageNet-1K上训练了三种规模的Diffusion Transformer(DiT)模型,分别为B、L和XL。其patch大小分别为4、4和2。
需要注意的是,在DiT中,LN层的仿射参数用于类别条件化(class conditioning),在DyT实验中也保留了这一点,仅将归一化变换替换为tanh(αx)函数。
训练完成后,使用标准的ImageNet「参考批次」评估Fréchet Inception Distance(FID)分数,结果如表3所示。DyT在FID上取得了与LN相当或更好的性能。