SwiGLU 的开正尾并非必需:闭合尾门控预训练损失只差 0.1%

Is SwiGLU's Open Positive Tail Necessary? Evidence from Closed-Tail Gating with MemGLU

Yuting Ge, Pengju Yang, Mingkai Nie

cs.LG

2026-08-07

把 SwiGLU 换成两侧归零的有界门控 MemGLU 做成对预训练,9M 时好 0.111%、30M 时差 0.122%,开正尾在测试规模上并非必需,模型会适应训练时可用的门控几何。

这篇在解决什么

SwiGLU 是 LLaMA、Qwen、PaLM 这一代模型的 FFN 标配:门函数 φ(g) = gσ(g) 逐元素乘在价值通路上,决定每个通道放行多少。这个函数有一个被整体打包继承的几何性质:g 很大且为正时,σ(g) 趋近 1,输出近似等于 g 本身,随输入线性增长、没有上界,这就是「开正尾」。所有采用 SwiGLU 的模型默认带上了这个形状,但「大家都用」从来不构成「必须得有」的证据。这篇论文把问题收窄成一句话:把这条尾巴关死,语言模型还能不能训到同样的损失?

方法

核心是一个受控替换实验。MemGLU 的门函数是 φ(g) = c₀·tanh(g)·sech(g):奇对称、有界,在 |g| = arsinh(1) 处到达峰值 1/2,往两侧都衰减到零。sech(g) = 1/cosh(g) 随 |g| 指数衰减,所以这是一个「中间放行、两端关闭」的带通门,与 SiLU 的「正方向无限放行」构成干净对照。

两个设计决定实验的干净程度:

训练严格配对:每对模型共享初始权重、数据顺序、token 预算与优化器设置(AdamW,lr 3×10⁻⁴),各跑 3 个种子。9M 模型(6 层,dmodel 192)喂 5000 万 token,30M 模型(10 层,dmodel 384)喂约 5 亿 token。

门形状的出处是忆阻器:一阶忆阻器模型两条电压分支的归一化反对称分离恰为 ξ√(1−ξ²),代入 ξ = tanh(g) 得到 tanh(g)sech(g)。这层推导更接近给形状找一个物理出处,数学上它与 2016 年的 ReSech 激活(x·sech(x))同族,论文在相关工作里自己也承认了这一点。真正起作用的是形状性质,不是器件物理。

结果

主指标是验证集 NLL,越低越好:

规模门控验证 NLL(3 种子均值)相对差配对胜场
9MSwiGLU5.7267 ± 0.0077基准
9MMemGLU(RMS 匹配)5.7203 ± 0.0024−0.111%3/3
30MSwiGLU3.5540 ± 0.0002基准
30MMemGLU(RMS 匹配)3.5583 ± 0.0038+0.122%0/3

9M 时闭合尾反而三种子全胜,30M 时一致小输,符号翻转,幅度都压在 0.1% 量级。0/3 说明 30M 的差距方向一致、不是噪声,但 0.1% 的量级撑不起「开尾是 SwiGLU 有效的关键」这类结论。

干预实验补上另一半证据。对训好的 SwiGLU 检查点只在评估时动它的正尾:

干预方式9M ΔNLL30M ΔNLL
封顶(峰值处截断)+0.032+0.122
平滑衰减+0.093+0.303
硬移除+0.403+0.960

训好的 SwiGLU 确实在用它的正尾,动得越狠损失越差,规模越大依赖越重,30M 上硬移除的代价接近 1 个 NLL。

机制诊断解释了这对矛盾如何共存。MemGLU 模型并没有绕开峰值后的下降区,9M 时进入该区域的输入占比反而从 2.688% 升到 5.230%(30M 从 5.002% 降到 3.954%),但该区域贡献的激活能量份额大幅缩水:30M 上门输出能量份额从 50.857% 掉到 8.209%,GLU 乘积从 54.921% 掉到 8.573%。论文称之为「占用–能量解耦」:区域照样被访问,只是能量预算不再压在那里。还有一个细节:c₀ 只在初始化时匹配幅度,训完之后 MemGLU 的门输出 RMS 只有 SwiGLU 的 0.83(9M)/0.76(30M),优化过程自己把激活幅度压小了。

结论落点:损失相近,用法完全不同。从头训练时,优化围绕手头的门形状组织 FFN 的使用方式;门几何塑造的是「怎么用」,不是「用得好不好」。

为什么重要

架构组件靠默认继承传播,很少被这样单独拆出来检验。SwiGLU 自 2020 年提出后被 PaLM、LLaMA、Qwen 整体采纳,开正尾作为形状的一部分被一并带走,这篇给了它一个干净反例:性质几乎相反的门,从头训出来的损失一样。

对做架构搜索的人有一条直接提醒:在几千万参数规模上靠预训练损失挑激活函数,0.1% 量级、跨规模符号翻转的差异挑不出结论。要判断一个组件是否必需,得把「训练时的可塑性」和「训练后的依赖」拆开测,这篇恰好演示了两者可以同时成立。

对忆阻器与器件启发计算方向,这是少见的把器件几何一路推到语言模型预训练的工作,尽管功能层面器件叙事并非必要。

局限与存疑

术语

原文与代码

社区讨论

相关论文

全部论文解读